메시 시각화하기
메시 시각화하기 (Visualizing Your Mesh)
이 작업에서는 Istio 메시의 여러 부분을 시각화하는 방법을 보여드릴게요. Kiali 애드온을 설치하고, 웹 기반 GUI를 사용해서 메시의 서비스 그래프와 Istio 설정 객체를 확인할 수 있어요.
출처: Istio 문서
본문
이 작업은 Istio 메시의 다양한 측면을 시각화하는 방법을 알려드려요. 작업 과정에서 Kiali 애드온을 설치하고, 웹 기반 그래픽 사용자 인터페이스(GUI)를 사용해서 메시의 서비스 그래프와 Istio 설정 객체를 확인하게 돼요.
[!note] 이 작업은 Kiali가 제공하는 모든 기능을 다루지는 않아요. 지원하는 전체 기능에 대해 알고 싶다면 Kiali 웹사이트를 참고하세요. 이 작업은 예시로 Bookinfo 샘플 애플리케이션을 사용해요. Bookinfo 애플리케이션이
bookinfo네임스페이스에 설치되어 있다고 가정할게요.
시작하기 전에 (Before you begin)
Kiali 설치 문서를 따라 클러스터에 Kiali를 배포하세요.
그래프 생성하기 (Generating a graph)
- 서비스가 클러스터에서 실행 중인지 확인하려면 다음 명령을 실행하세요.
$ kubectl -n istio-system get svc kiali
- Bookinfo URL을 확인하려면 Bookinfo 인그레스
GATEWAY_URL확인 방법에 대한 지침을 따르세요. - 메시로 트래픽을 보내는 방법은 세 가지가 있어요.
- 웹 브라우저에서
http://$GATEWAY_URL/productpage에 접속하세요. - 다음 명령을 여러 번 실행하세요.
$ curl http://$GATEWAY_URL/productpage- 시스템에
watch명령이 설치되어 있다면, 다음 명령으로 요청을 계속해서 보낼 수 있어요.
$ watch -n 1 curl -o /dev/null -s -w %{http_code} $GATEWAY_URL/productpage - 웹 브라우저에서
- Kiali UI를 열려면 Kubernetes 환경에서 다음 명령을 실행하세요.
$ istioctl dashboard kiali
- 로그인 직후 나타나는 Overview 페이지에서 메시의 개요를 확인할 수 있어요. Overview 페이지에는 메시에 서비스가 있는 모든 네임스페이스가 표시돼요.
- 네임스페이스 그래프를 보려면 Bookinfo 개요 카드의 케밥 메뉴에서
Graph옵션을 선택하세요. 케밥 메뉴는 카드 오른쪽 위에 있으며 세로 점 3개처럼 생겼어요. 클릭하면 사용 가능한 옵션이 보여요. - 그래프는 일정 시간 동안 서비스 메시를 통해 흐르는 트래픽을 나타내요. Istio 텔레메트리로 생성돼요.
- 메트릭 요약을 보려면 그래프에서 아무 노드나 엣지를 선택해서 오른쪽 요약 세부 정보 패널에 메트릭 세부 정보를 표시하세요.
- 다른 그래프 유형으로 서비스 메시를 보려면 Graph Type 드롭다운 메뉴에서 그래프 유형을 선택하세요. 선택할 수 있는 그래프 유형은 App, Versioned App, Workload, Service가 있어요.
- App 그래프 유형은 앱의 모든 버전을 하나의 그래프 노드로 묶어요. 아래 예시는
reviews앱의 세 버전을 나타내는 단일reviews노드를 보여줘요.Show Service Nodes표시 옵션이 비활성화되어 있다는 점에 주의하세요. - Versioned App 그래프 유형은 앱의 각 버전에 대해 하나의 노드를 보여주는데, 특정 앱의 모든 버전을 함께 묶어요. 아래 예시는
reviews앱의 세 버전을 나타내는 세 노드를 포함하는reviews그룹 박스를 보여줘요. - Workload 그래프 유형은 서비스 메시의 각 워크로드에 대해 하나의 노드를 보여줘요. 이 그래프 유형은
app과version레이블을 요구하지 않아요. 그래서 컴포넌트에 그런 레이블을 쓰지 않기로 했다면, 이 그래프 유형이 선택지가 될 수 있어요. - Service 그래프 유형은 메시의 서비스 트래픽을 높은 수준으로 집계해 보여줘요.
- App 그래프 유형은 앱의 모든 버전을 하나의 그래프 노드로 묶어요. 아래 예시는
Istio 설정 조사하기 (Examining Istio configuration)
- 왼쪽 메뉴 옵션은 Applications, Workloads, Services, Istio Config 목록 뷰로 연결돼요. 아래 스크린샷은 Bookinfo 네임스페이스의 Services 정보를 보여줘요.
트래픽 이동 (Traffic Shifting)
Kiali 트래픽 이동 마법사를 사용해서 두 개 이상의 워크로드로 라우팅되는 요청 트래픽의 특정 비율을 정의할 수 있어요.
bookinfo그래프의 Versioned app graph를 보세요.- 각 워크로드로 라우팅되는 트래픽의 비율을 보려면 Traffic Distribution 엣지 레이블 Display 옵션을 활성화했는지 확인하세요.
- 그래프의 서비스 노드를 보려면 Show Service Nodes Display 옵션을 활성화했는지 확인하세요.
bookinfo그래프에서ratings서비스(삼각형 노드)를 클릭해ratings서비스에 집중하세요.ratings서비스 트래픽이 두ratings워크로드v1과v2에 고르게 분산되는 것(각 워크로드로 50%의 요청이 라우팅)을 확인할 수 있어요.- 사이드 패널의 ratings 링크를 클릭해서
ratings서비스의 세부 보기로 이동하세요.ratings서비스 노드를 마우스 오른쪽 클릭하고 컨텍스트 메뉴에서Details를 선택해도 돼요. - Actions 드롭다운 메뉴에서 Traffic Shifting을 선택해 트래픽 이동 마법자에 접근하세요.
- 슬라이더를 드래그해서 각 워크로드로 라우팅할 트래픽의 비율을 지정하세요.
ratings-v1은 10%,ratings-v2는 90%로 설정하세요. - Preview 버튼을 클릭해 마법사가 생성할 YAML을 확인하세요.
- Create 버튼을 클릭하고 확인해서 새 트래픽 설정을 적용하세요.
- 왼쪽 탐색 막대에서 Graph를 클릭해
bookinfo그래프로 돌아가세요.ratings서비스 노드에 이제virtual service아이콘 배지가 붙은 것을 확인할 수 있어요. bookinfo애플리케이션에 요청을 보내세요. 예를 들어 초당 한 개의 요청을 보내려면 시스템에watch가 설치되어 있다면 다음 명령을 실행하면 돼요.
$ watch -n 1 curl -o /dev/null -s -w %{http_code} $GATEWAY_URL/productpage
- 몇 분이 지나면 트래픽 비율이 새 트래픽 경로를 반영하는 것을 보게 될 거예요. 이로써 새 트래픽 경로가 전체 요청의 90%를
ratings-v2로 성공적으로 라우팅하고 있음을 확인할 수 있어요.
Istio 설정 검증하기 (Validating Istio configuration)
Kiali는 Istio 리소스가 적절한 관례와 의미론을 따르는지 검증할 수 있어요. Istio 리소스 설정에서 감지된 문제는 잘못된 설정의 심각도에 따라 오류 또는 경고로 표시돼요. Kiali가 수행하는 모든 검증 체크 목록은 Kiali validations 페이지에서 확인하세요.
[!note] Istio는 CI 파이프라인에서 사용할 수 있는 방식으로 분석을 제공하는
istioctl analyze를 제공해요. 두 접근 방식은 서로 보완적일 수 있어요. 서비스 포트 이름을 잘못된 설정으로 강제해서 Kiali가 어떻게 검증 오류를 보고하는지 확인해보세요.
details서비스의 포트 이름을http에서foo로 변경하세요.
$ kubectl patch service details -n bookinfo --type json -p '[{"op":"replace","path":"/spec/ports/0/name", "value":"foo"}]'
- 왼쪽 탐색 막대에서 Services를 클릭해 Services 목록으로 이동하세요.
- Namespace 드롭다운 메뉴에서 아직 선택되어 있지 않다면
bookinfo를 선택하세요. details행의 Configuration 열에 오류 아이콘이 표시되는 것을 확인하세요.- Name 열의 details 링크를 클릭해 서비스 세부 보기로 이동하세요.
- 오류 아이콘 위에 마우스를 올려 오류를 설명하는 툴팁을 표시하세요.
- 포트 이름을 다시
http로 변경해 설정을 수정하고bookinfo를 정상 상태로 되돌리세요.
$ kubectl patch service details -n bookinfo --type json -p '[{"op":"replace","path":"/spec/ports/0/name", "value":"http"}]'
Istio 설정 YAML 보기 및 편집 (Viewing and editing Istio configuration YAML)
Kiali는 Istio 설정 리소스를 보기/편집하기 위한 YAML 편집기를 제공해요. YAML 편집기는 잘못된 설정을 감지하면 검증 메시지도 제공해요.
bookinfoVirtualService에 오류를 넣어보세요.
$ kubectl patch vs bookinfo -n bookinfo --type json -p '[{"op":"replace","path":"/spec/gateways/0", "value":"bookinfo-gateway-invalid"}]'
- 왼쪽 탐색 막대에서
Istio Config를 클릭해 Istio 설정 목록으로 이동하세요. - Namespace 드롭다운 메뉴에서 아직 선택되어 있지 않다면
bookinfo를 선택하세요. - 설정 문제를 알려주는 오류 아이콘을 확인하세요.
bookinfo행의 Configuration 열에서 오류 아이콘을 클릭해bookinfo가상 서비스 보기로 이동하세요.- YAML 탭이 미리 선택되어 있어요. 검증 체크 알림이 연결된 행에 색상 하이라이트와 아이콘이 표시되는 것을 확인하세요.
- 빨간 아이콘 위에 마우스를 올려 오류를 유발한 검증 체크를 알려주는 툴팁 메시지를 확인하세요. 오류의 원인과 해결 방법에 대한 자세한 내용은 Kiali Validations 페이지에서 검증 오류 메시지를 찾아보세요.
- 가상 서비스
bookinfo를 원래 상태로 되돌리세요.
$ kubectl patch vs bookinfo -n bookinfo --type json -p '[{"op":"replace","path":"/spec/gateways/0", "value":"bookinfo-gateway"}]'
추가 기능 (Additional Features)
Kiali에는 이 작업에서 다룬 것보다 훨씬 많은 기능이 있어요. 예를 들어 Jaeger 추적과의 통합이 있죠. 이런 추가 기능에 대한 자세한 내용은 Kiali 문서를 참고하세요. Kiali를 더 깊이 탐구하려면 Kiali Tutorial을 진행해 보는 것을 권장해요.
정리 (Cleanup)
후속 작업을 계획하지 않는다면 Bookinfo 샘플 애플리케이션과 Kiali를 클러스터에서 제거하세요.
- Bookinfo 애플리케이션을 제거하려면 Bookinfo 정리 지침을 참고하세요.
- Kubernetes 환경에서 Kiali를 제거하려면:
$ kubectl delete -f https://raw.githubusercontent.com/istio/istio/release-1.31/samples/addons/kiali.yaml
더 알아보기 (Learn more)
- Kiali 웹사이트와 Kiali 문서를 통해 Kiali의 전체 기능과 검증 규칙을 더 자세히 살펴볼 수 있어요.