Istio Service Mesh 시각화: Kiali 설치와 사용법 안내
Istio Service Mesh는 Kiali 와 통합되어 Service Mesh를 시각화하는 강력한 도구를 제공합니다.
Istio Service Mesh는 현대적인 마이크로서비스 아키텍처에서 신뢰성과 보안을 강화하기 위한 강력한 Tool-kit으로 각광받고 있습니다.
그러나 많은 마이크로서비스가 함께 작동할 때 네트워크 상태를 이해하고 관리하는 것은 복잡할 수 있습니다.
이러한 문제를 해결하기 위해 이 블로그 포스트에서는 Kiali를 사용하여 Istio Service Mesh 를 시각화하는 방법을 소개합니다.
이를 통해 사용자는 서비스 간 통신, Traffic 패턴, 에러율 등과 같은 핵심 메트릭을 쉽게 파악할 수 있습니다.
또한 Kiali의 다양한 기능을 활용하여 Istio Service Mesh 를 모니터링하고 디버깅하는 방법에 대해 다룰 것입니다.
목차
1. Kiali 설치하기
2. Prometheus를 배포하여 Kiali + Istio System 연동
3. Istio Service Mesh 모니터링
1. Kiali 설치하기
Kiali는 Istio 서비스 메시를 시각화하고 모니터링하기 위한 강력한 도구입니다. Kiali를 설치하려면 다음 단계를 따르세요.
Istio는 Kiali를 빠르게 실행할 수 있도록 기본 addon 설치를 제공합니다.
# kubectl apply -f https://raw.githubusercontent.com/istio/istio/<istio-release-verison>/samples/addons/kiali.yaml
serviceaccount/kiali created
configmap/kiali created
clusterrole.rbac.authorization.k8s.io/kiali-viewer created
clusterrole.rbac.authorization.k8s.io/kiali created
clusterrolebinding.rbac.authorization.k8s.io/kiali created
role.rbac.authorization.k8s.io/kiali-controlplane created
rolebinding.rbac.authorization.k8s.io/kiali-controlplane created
service/kiali created
deployment.apps/kiali created
kubectl 명령어를 사용해 pod 및 service를 확인해보면 kiali pod가 istio-system namespace에 배포된 것을 확인할 수 있습니다.
# kubectl get pods -n istio-system
NAME READY STATUS RESTARTS AGE
kiali-545878ddbb-c64r8 1/1 Running 0 25d
# kubectl get svc -n istio-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kiali ClusterIP 10.103.158.221 <none> 20001/TCP,9090/TCP 25d
kiali service의 type을 NodePort로 변경하고 접속합니다.
localhost의 IP와 kiali service의 NodePort를 웹에 입력 후 접속할 시 Kiali 대시보드가 실행되는 것을 확인할 수 있습니다.

하지만 메트릭을 수집할 Prometheus가 설정되지 않았기 때문에 Service Mesh를 시각화 할 수 없습니다.
다음 목차에서 Prometheus와 Kiali를 연동하여 Istio Sidecar + NGINX Ingress Controller를 시각화 할 수 있습니다.
2. Prometheus를 배포하여 Kiali + Istio System 연동
Istio는 Kiali에서 Prometheus를 기동하기 위한 샘플 addon yaml을 제공합니다. 이를 kubectl 명령어로 apply 하여 클러스터에 배포합니다.
# kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.20/samples/addons/prometheus.yaml
serviceaccount/prometheus created
configmap/prometheus created
clusterrole.rbac.authorization.k8s.io/prometheus created
clusterrolebinding.rbac.authorization.k8s.io/prometheus created
service/prometheus created
deployment.apps/prometheus created
배포된 Prometheus pod와 service를 kubectl 명령어로 확인합니다.
# kubectl get pods -n istio-system
NAME READY STATUS RESTARTS AGE
prometheus-db8b4588f-59fzk 2/2 Running 0 25d
# kubectl get svc -n istio-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
prometheus ClusterIP 10.106.211.138 <none> 9090/TCP 25d
3. Istio Service Mesh 모니터링
이전 목차에서 Prometheus의 파드와 서비스를 배포했다면, Kiali 대시보드에서 Prometheus에서 수집한 Istio + NGINX Ingress Controller의 메트릭들이 그래프로 나타나 시각화된 것을 확인할 수 있습니다.



Kiali와 Prometheus를 사용하여 Istio Service Mesh를 시각화하는 방법에 대한 설치 및 설정에 대한 간략한 안내를 마쳤습니다.
Kiali는 Istio를 효과적으로 관리하고 디버깅하는 데 필수적인 도구입니다.
이를 통해 사용자는 마이크로서비스 아키텍처에서의 네트워크 통신을 시각적으로 이해하고, 효율적으로 모니터링할 수 있습니다.
Istio와 Kiali의 조합은 개발자 및 운영팀이 애플리케이션을 안정적으로 운영하고 성능을 최적화하는 데 큰 도움이 될 것입니다.
추가 질문, 궁금한 점이 있으시거나 엔터프라이즈급 기능을 포함하는 NGINX Plus Ingress Controller 와 Istio Service Mesh를 통합하고 싶으시다면 언제든지 NGINX STORE를 통해 문의해 보세요.
댓글을 달려면 로그인해야 합니다.