> For the complete documentation index, see [llms.txt](https://cocktailcloud.gitbook.io/cocktail-cloud-online/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://cocktailcloud.gitbook.io/cocktail-cloud-online/application/service.md).

# 서비스 노출

클러스터 내부와 외부에서 워크로드가 제공하는 서비스 기능을 호출하기 위해서 각각 클러스터 IP 방식과 노드 포트 방식의 서비스를 정의합니다.

클라우드에 클러스터를 구성한 상태에서 노드 포트 방식으로 서비스를 정의한 경우, 그 앞단에 로드 밸런서를 구성하여 외부에서 로드 밸런서 주소와 포트를 통해 서비스를 호출하게 할 수도 있습니다.

## 어떤 서비스 노출 유형을 지원하나요?

* Cluster IP: 같은 label로 설정된 pod을 묶어서 LB 기능(라운드 로빈 방식이 아닌 random 접속)을 수행할 수 있으며, 내부 통신에 용이
* Node Port: 각 POD에 같은 포트를 배포되어 Cluster IP와 포트를 사용하여 LB기능을 수행할 수 있으며, 외부 노출이 가능
* <mark style="color:red;">**Node Port를 사용할 경우에는 KT LB에 사용할 Node Port를 등록해야 사용 가능**</mark>
* <mark style="color:red;">**KT 방화벽 및 LB Port Open은 MSP에 문의**</mark>

## 서비스 노출의 특장점은 무엇인가요?

### 손쉬운 서비스 생성

웹 UI 콘솔 상에서 손쉽게 각각의 서비스 노출 유형을 생성할 수 있습니다.

### 로드밸런서 자동 생성

퍼블릭 클라우드에서 클러스터를 구성했을 경우 경우, 칵테일 클라우드가 로드밸런서를 자동 생성해 줍니다. 로드밸런서 유형의 서비스 노출은 AWS, Azure, GCP 같이 지원하는 클라우드에서만 가능합니다.

## 태스크 목록

* 서비스 생성
* 서비스 조회

## 1. 서비스 생성

### 1.1 서비스 노출 화면으로 이동

1\) \[애플리케이션] - \[서비스 맵]을 선택 후 서비스 노출 화면으로 이동하여 "+ 생성" 버튼을 클릭합니다.

<figure><img src="https://1668522666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fvqp2nCQPDsjfLSru1kHs%2Fuploads%2FYDqqa8Sp8ztjHdoUANr7%2Fimage.png?alt=media&amp;token=4842d899-3c82-4427-a9c6-6680234aec0a" alt=""><figcaption><p>[화면] 서비스 맵 - 서비스 노출</p></figcaption></figure>

### 1.2 서비스 노출 유형 선택

1\) ClusterIP 또는 Nodeport 중 필요한 항목을 선택합니다.

{% hint style="danger" %}
\[kt 고객] Nodeport 타입의 서비스 생성 시에는 로드밸런서 생성 및 방화벽 작업이 필요하므로 관련 내용은 MSP에 문의
{% endhint %}

<figure><img src="https://1668522666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fvqp2nCQPDsjfLSru1kHs%2Fuploads%2FBYC1UVyMh79bGRwz5YUw%2Fimage.png?alt=media&amp;token=3d7401d1-5271-45b5-9ed5-4da3c4326dad" alt=""><figcaption><p>[화면] 서비스 노출 유형 선택</p></figcaption></figure>

### 1.3 서비스 노출 기본 정보 입력

1\) 서비스 노출 기본 정보를 입력합니다.

<figure><img src="https://1668522666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fvqp2nCQPDsjfLSru1kHs%2Fuploads%2FDgH6dCGHxB9byWBRUvYX%2Fimage.png?alt=media&amp;token=6aecf71e-6104-43b3-b669-14095dd9de6b" alt=""><figcaption><p>[화면] 서비스 노출 설정</p></figcaption></figure>

<table><thead><tr><th width="171">항목(*는 필수)</th><th>내용</th></tr></thead><tbody><tr><td>서비스 노출 명*</td><td>생성하고자 하는 서비스 노출 명 작성</td></tr><tr><td>서비스 노출 유형</td><td>서비스 노출 생성 시 선택한 유형으로 표기되어 있음</td></tr><tr><td>Sticky Session</td><td>Sticky Session 사용하고자 할 경우 TRUE 체크 및 세션 타임 아웃 작성</td></tr><tr><td>Headless Service</td><td>Headless Service 사용하고자 할 경우 사용 여부 체크</td></tr><tr><td>라벨 선택기*</td><td>서비스를 연결하고자 하는 워크로드 및 label 선택</td></tr><tr><td>라벨</td><td>서비스 노출에 등록 할 라벨 입력</td></tr><tr><td>주석</td><td>서비스 노출에 등록 할 주석 입력</td></tr></tbody></table>

2\) "라벨 선택기"를 클릭하여 서비스를 연결하고자 하는 workload와 label을 선택 후 "+ 추가"버튼을 클릭합니다.

3\) 선택한 label이 하단에 Key, Value로 표기되는 것을 확인한 후 "적용" 버튼을 클릭합니다.

<figure><img src="https://1668522666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fvqp2nCQPDsjfLSru1kHs%2Fuploads%2Fgit-blob-26ba5c2e78c85ad9ea65b43b5056eeea31642ab9%2Fimage.png?alt=media" alt=""><figcaption><p>[화면] 워크로드에 설정되어 있는 라벨을 선택하여 서비스 라벨로 추가</p></figcaption></figure>

<figure><img src="https://1668522666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fvqp2nCQPDsjfLSru1kHs%2Fuploads%2Fgit-blob-f0f6a5ef53f4b88eadefed12b4f0a43715931ba8%2Fimage.png?alt=media" alt=""><figcaption><p>[화면] 워크로드에 설정되어 있는 기존 라벨을 선택하여 서비스 라벨로 입력</p></figcaption></figure>

{% hint style="info" %}
워크로드에 미리 설정되어 있는 라벨을 선택하거나 라벨 이름과 값의 쌍을 직접 입력할 수 있습니다.
{% endhint %}

<figure><img src="https://1668522666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fvqp2nCQPDsjfLSru1kHs%2Fuploads%2Fgit-blob-aef6fb8639f28fe9a1255562f2d11fc51dba579e%2Fimage.png?alt=media" alt=""><figcaption><p>[화면] 서비스에 이름-값으로 구성된 라벨 정보를 입력</p></figcaption></figure>

{% hint style="info" %}
workload를 직접 입력으로 추가 시 Key 와 Value 입력 필드가 하단에 추가되며 Key 와 Value도 직접 입력할 수 있습니다.
{% endhint %}

### 1.4 서비스 대상 포트 설정

1\) 서비스 노출 설정의 대상 포트 섹션에서 "편집" 버튼을 클릭합니다.

2\) "+ 추가" 버튼을 클릭한 후 하단에 이름, 프로토콜, 대상 포트, 서비스 포트를 입력합니다.

{% hint style="info" %}
이름, 프로토콜, 대상 포트, 서비스 포트 입력은 필수이며 프토콜은 TCP와 UDP 중 선택할 수 있습니다.
{% endhint %}

<figure><img src="https://1668522666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fvqp2nCQPDsjfLSru1kHs%2Fuploads%2Fgit-blob-5c184880e95ceb2e26b384e977cc09d725d75990%2Fimage.png?alt=media" alt=""><figcaption><p>[화면] 서비스 대상 포트 설정</p></figcaption></figure>

### 1.5 설정 내용 저장

설정 정보 입력 완료 후 생성된 서비스를 실제 생성시키기 위해서는 반드시 "저장" 버튼을 클릭하도록 합니다.

## 2. 서비스 조회

서비스 맵의 서비스 노출 화면에서 생성된 서비스 정보를 조회합니다.

### 2.1 서비스 목록 조회

1\) 서비스 맵의 서비스 노출 화면에서 서비스 목록을 조회합니다.

<figure><img src="https://1668522666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fvqp2nCQPDsjfLSru1kHs%2Fuploads%2F5JI4eND7ngU34LKewUOV%2Fimage.png?alt=media&amp;token=33e9a10d-14f5-4a2a-a6a7-4eb29c23cf42" alt=""><figcaption><p>[화면] 서비스 목록 조회</p></figcaption></figure>

### 2.2 서비스 상세 정보 조회

1\) 서비스 목록에 표시된 서비스 이름을 클릭하여 서비스의 설정 정보 및 상태 정보를 확인합니다.

<figure><img src="https://1668522666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fvqp2nCQPDsjfLSru1kHs%2Fuploads%2FopHQD3Z1Mt1qxKOSeE02%2Fimage.png?alt=media&amp;token=d0b44465-69a8-4645-9d8b-44ab43b22ad6" alt=""><figcaption><p>[화면] 서비스 설정 정보 및 상태 정보</p></figcaption></figure>

2\) 서비스 설정 정보 및 상태 정보를 YAML 형식으로 조회할 수도 있습니다. 상기 화면 우측 상단의 설정 버튼을 클릭한 후 표시되는 화면에서 좌측 상단의 설정 보기를 "YAML 보기"로 선택하면 YAML 형식의 정보가 표시됩니다.

<figure><img src="https://1668522666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fvqp2nCQPDsjfLSru1kHs%2Fuploads%2F4c5YvEJkehWzikmSU5CZ%2Fimage.png?alt=media&amp;token=00c8a4e9-7f24-474c-98d3-824160a52552" alt=""><figcaption><p>[화면] 서비스 설정 및 상태 정보의 YAML 형식 조회</p></figcaption></figure>
