> 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-mesh.md).

# 서비스 메시 구성

서비스 메시는 애플리케이션들과 그들 사이의 인터랙션을 구성하는 마이크로 서비스들의 네트워크를 기술하기 위해 사용되는 개념입니다.

서비스 시를 관리하기 위한 시장 표준 기술이 Istio입니다. 칵테일은 Istio의 설치와 모니터링을 지원합니다.

## 어떤 정보를 제공하는가?

* 서비스 간 연결 구성을 가시화하여 제공합니다.
* 네트워크 트래픽 모니터링 정보를 제공합니다.

## 서비스 메시 구성의 특장점은 무엇인가요?

### Istio 설치의 용이성

칵테일 클라우드의 애드온 기능을 통해 손쉽게 Istio의 설치가 가능합니다.

### 칵테일 클라우드와 Istio 모니터링 화면의 통합

Istio의 모니터링 화면이 칵테일 클라우드의 웹 UI와 통합되어 제공됩니다.

## 테스트 목록

* 서비스 메시 설치
* 서비스 메시 조회

## 1. 서비스 메시 설치

1\) 서비스 메시를 이용하기 위해서는 플랫폼 관리자가 특정 클러스터에 애드온 기능을 통해 Istio를 배포해야 합니다.

### 1.1 클러스터 목록 조회

1\) \[인프라] - \[클러스터] 탭에서 등록된 클러스터를 선택합니다.

<figure><img src="https://1668522666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fvqp2nCQPDsjfLSru1kHs%2Fuploads%2FnfdXAWpxdX0cLLnTwp1W%2Fimage.png?alt=media&amp;token=0d3f7902-ea1d-42a9-953e-ca82abfd94bc" alt=""><figcaption></figcaption></figure>

### 1.2 클러스터에 설치된 애드온 목록 조회

1\) 해당 클러스터에 대한 개요 조회 화면이 표시됩니다. 이때 상단의 \[애드온] 메뉴를 선택하면, 해당 클러스터에 설치된 애드온의 목록이 표시됩니다.

<figure><img src="https://1668522666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fvqp2nCQPDsjfLSru1kHs%2Fuploads%2FOUIiRwSy8VsRx7jeaJ5S%2Fimage.png?alt=media&amp;token=e9113eef-57f8-4590-bb39-3fbd28341467" alt=""><figcaption><p>[화면] 클러스터에 설치된 애드온 목록 조회</p></figcaption></figure>

### 1.3 클러스터에 설치 가능한 애드온 목록 조회

1\) Istio를 설치하기 위해서는 애드온 목록 조회 화면의 우측 상단 "배포" 버튼을 클릭합니다. 이미 클러스터에 설치된 애드온과 설치 가능한 애드온 목록이 표시됩니다.

<figure><img src="https://1668522666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fvqp2nCQPDsjfLSru1kHs%2Fuploads%2Fh7GhaXrmnTj57GsjR9UX%2Fimage.png?alt=media&amp;token=2273c8e1-aa04-4e5f-b3e9-916bf6dae2db" alt=""><figcaption><p>[화면] 애드온 목록 조회</p></figcaption></figure>

### 1.4 Istio 애드온 정보 조회

1\) Istio 카드의 "배포" 버튼을 클릭합니다. Istio 애드온에 대한 설명과 배포 시 설정 가능한 Parameter에 대한 설명이 표시됩니다.

<figure><img src="https://1668522666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fvqp2nCQPDsjfLSru1kHs%2Fuploads%2F2kMG0X5qRcb7VuteFX1T%2Fimage.png?alt=media&amp;token=553c1298-4540-40dd-b0fb-649f229c9aa5" alt=""><figcaption><p>[화면] Istio 애드온 정보 조회</p></figcaption></figure>

### 1.5 Istio 배포

1\) Istio 애드온 정보 조회 화면의 상단 우측 \[설정] 탭으로 이동하면, Istio 배포를 위한 설정 정보 입력 화면이 나타납니다. 설정 정보를 입력한 후 "배포" 버튼을 클릭합니다.

<figure><img src="https://1668522666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fvqp2nCQPDsjfLSru1kHs%2Fuploads%2F1VK9P87Ankvx7rMuqXVV%2Fimage.png?alt=media&amp;token=f7cdce64-b8bf-4d04-b4aa-b2c0986def2d" alt=""><figcaption><p>[화면] Istio 배포를 위한 설정 정보 입력</p></figcaption></figure>

<table><thead><tr><th width="336">항목</th><th>내용</th></tr></thead><tbody><tr><td>Kiali Service Type</td><td>kiali 배포의 워크로드 타입 설정<br>(Default: Clinet IP)</td></tr><tr><td>Kiali Username</td><td>kiali 접속 계정</td></tr><tr><td>Kiali Password</td><td>kiali 계정 패스워드</td></tr><tr><td>Kiali TLS Cert Chain(Base64 Encoded)</td><td>kiali 인증서 중 ca.crt의 base64 인코딩 값</td></tr><tr><td>Kiali TLS Key(Base64 Encoded)</td><td>kiali 인증서 중 ca.key의 base64 인코딩 값</td></tr></tbody></table>

2\) 클러스터에 istio가 설치되고 나면 해당 클러스터에 속한 서비스 맵 화면을 접근했을 때, 상단에 "서비스 메시" 메뉴가 노출됩니다.

## 2. 서비스 메시 조회

1\) 특정 서비스 맵에 대해서 "서비스 메시" 메뉴를 접근합니다. 화면 중앙에 서비스와 워크로드 사이의 연결 관계 및 요청/응답 관련 정보가 표시됩니다. 화면 우측에는 화면 중앙에서 선택한 연결 관계상의 트래픽 관련 정보가 표시됩니다.

<figure><img src="https://1668522666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fvqp2nCQPDsjfLSru1kHs%2Fuploads%2Fgit-blob-e57e8daeeba8f40758daef31b63aa15d4c9a5241%2Fimage.png?alt=media" alt=""><figcaption><p>[화면] 서비스 메시 모니터링</p></figcaption></figure>

### 2.1 그래프 조회 방법 안내

1\) 화면 상단 Graph 오른쪽 물음표 버튼을 클릭하면 그래프 조회 방법을 안내받을 수 있습니다.

<figure><img src="https://1668522666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fvqp2nCQPDsjfLSru1kHs%2Fuploads%2Fgit-blob-b9a2d48252aeabd47f6d6645f6ed22c30be1acfb%2Fimage.png?alt=media" 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%2Fgit-blob-4c30912c313fab835ef813a770ed03834c3972d6%2Fimage.png?alt=media" alt=""><figcaption><p>[화면] 그래프 유형 선택</p></figcaption></figure>

2\) 제공되는 그래프 유형은 다음과 같습니다.

{% hint style="info" %}

* App Graph: 서비스와 워크로드 사이의 연결 관계를 표시합니다. 이때, 워크로드의 모든 버전을 하나의 그래프 노드로 표시합니다.
* Service Graph: 서비스 사이의 연결 관계를 표시합니다.
* Versioned App Graph: 서비스와 워크로드 사이의 연결 관계를 표시합니다. 이때, 워크로드의 버전이 여러 개 존재할 때, 워크로드의 개별 버전과의 연결 관계까지 표시합니다. 또한, 동일한 워크로드의 여러 버전을 하나의 박스 안에 포함시켜 표시합니다.
* Workload Graph: 서비스와 워크로드 사이의 연결 관계를 표시합니다. 이때, 워크로드의 버전이 여러 개 존재할 때, 워크로드의 개별 버전과의 연결 관계까지 표시합니다. Versioned App Graph와는 달리, 동일한 워크로드의 여러 버전을 하나의 박스 안에 포함시켜 표시하지는 않습니다.
  {% endhint %}

### 2.3 그래프 표시 정보 설정

그래프 상에서 노드를 연결하는 Edge 상에서 표시되는 정보를 설정할 수 있습니다. 또한, 그래프 상에서 표시되는 요소들을 설정할 수 있습니다.

<figure><img src="https://1668522666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fvqp2nCQPDsjfLSru1kHs%2Fuploads%2Fgit-blob-5a8150582a29f7224ad914564e79ce8cd317bfda%2Fimage.png?alt=media" alt=""><figcaption><p>[화면] Edge 상의 표시 정보 선택</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-7c67854515f1041ef8a2e36efa41f33b34df535c%2Fimage.png?alt=media" alt=""><figcaption><p>[화면] 그래프 상에서 표시할 요소 선택</p></figcaption></figure>

## 3. 서비스 메시 설정

\[서비스 메시] 메뉴에 접근 시 기본적으로 \[대시보드] 메뉴에 접근하게 되며 위의 2. 서비스 메시 조회에서 설명한 대로 서비스와 워크로드 사이의 연결 관계 및 요청/응답 관련 정보 등을 확인할 수 있었습니다.

\[서비스 메시] 메뉴에는 \[리소스] 라는 서브 메뉴가 존재하는데 해당 메뉴에서 Istio의 Traffic을 관리할 수 있는 기능을 제공합니다.

<figure><img src="https://1668522666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fvqp2nCQPDsjfLSru1kHs%2Fuploads%2FacEBSDwO5ijj1P0TEMJA%2Fimage.png?alt=media&amp;token=5780c05b-9645-442a-b6de-b78dd2191618" alt=""><figcaption><p>[화면] 서비스 메시의 Traffic Management를 위한 Custom Resource Objects</p></figcaption></figure>

### 3.1 주요 설정 정보

서비스 메시에서 리소스 화면으로 이동하면 서비스 메시의 주요 기능 중 Traffic Management 관련 설정이 가능합니다.

{% hint style="info" %}
[**https://istio.io/latest/docs/concepts/traffic-management/**](https://istio.io/latest/docs/concepts/traffic-management/)
{% endhint %}

Traffic Management를 구성하는 Object는 Kubernetes의 Custom Resource Definition (CRD)를 이용하여 정의할 수 있습니다.

"리소스" 메뉴에서는 이러한 CRD를 생성/편집할 수 있도록 기능을 제공하여 Istio의 Traffic Management 설정이 가능하도록 합니다.

### 3.2 리소스 유형

* DestinationRule
  * <https://istio.io/latest/docs/reference/config/networking/destination-rule>
* EnvoyFilter
  * <https://istio.io/latest/docs/reference/config/networking/envoy-filter>
* Gateway
  * <https://istio.io/latest/docs/reference/config/networking/gateway>
* ServiceEntry
  * <https://istio.io/latest/docs/reference/config/networking/service-entry>
* Sidecar
  * <https://istio.io/latest/docs/reference/config/networking/sidecar>
* VirtualService
  * <https://istio.io/latest/docs/reference/config/networking/virtual-service>
* WorkloadEntry
  * <https://istio.io/latest/docs/reference/config/networking/workload-entry>
* WorkloadGroup
  * <https://istio.io/latest/docs/reference/config/networking/workload-group>

### 3.3 리소스 구성

리소스 화면에서 "+ 생성" 버튼을 클릭한 후 각각의 리소스 유형에 맞는 설정을 할 수 있습니다.

<mark style="color:red;">이전버전 이미지</mark>

<figure><img src="https://1668522666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fvqp2nCQPDsjfLSru1kHs%2Fuploads%2Fgit-blob-d29d998635eb867a8cf3de0e57cc1fdabef09aec%2Fimage.png?alt=media" alt=""><figcaption><p>[화면] Traffic Management 설정 정보를 새롭게 생성</p></figcaption></figure>

리소스의 구성은 YAML 편집기를 이용하여 생성/편집이 가능하며, 이미 생성되어 있는 구성 정보에 대한 삭제 기능도 제공됩니다.

<mark style="color:red;">이전버전 이미지</mark>

<figure><img src="https://1668522666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fvqp2nCQPDsjfLSru1kHs%2Fuploads%2Fgit-blob-2f0606d41a8f6abf94da904c269b8c2fb1805f1d%2Fimage.png?alt=media" alt=""><figcaption><p>[화면] YAML 편집기를 이용하여 Traffic Management 구성</p></figcaption></figure>
