Oracle Cloud Infrastructure (OCI) 에서 이스티오(ISTIO)를 활용한 서비스 메쉬(Service Mesh)에 대한 기술 정리 및 이를 데모로 구현한 내용을 정리합니다.
글 순서
5. 이스티오 데모 - 이스티오 설치, 엔보이 프록시 주입
6. 이스티오 데모 - 샘플 어플리케이션 (Bookinfo) 배포
8. 이스티오 데모 - 결함 주입(Fault Injection)
REFERENCES
아래 도서 및 사이트를 참조하여 작성한 문서입니다.
- 도메인 주도 설계로 시작하는 마이크로 서비스 개발 (위키북스)
- 쿠버네티스 완벽 가이드 (길벗)
- Istio로 시작하는 서비스 메시 (에이콘)
- Isitio Documentation
쿠버네티스 서비스 시각화
프로메테우스(Prometheus)로 쿠버네티스 클러스터의 메트릭을 수집하고, 그라파나(Grafana), 키알리(Kiali), 예거(Yaeger) 등으로 수집된 메트릭을 시각화할 수 있습니다. 이를 살펴보겠습니다.
예거 (Jaeger)
예거는 오픈소스 엔드 투 엔드 분산 트레이싱 솔루션으로 사용자가 복잡한 분산 시스템에서 트랜잭션을 모니터링하고 트러블슈팅할 수 있도록 해 줍니다.
예거의 설치 역시 앞선 프로메테우스, 그라파나, 키알리와 마찬가지로 kubecctl 명령으로 이스티오에서 제공하는 매니페스타 파일을 통해 간단히 설치하는 방법, 사용자 정의 설치 방법이 있습니다. 여기에서는 아래와 같이 kubectl 명령으로 설치했습니다.
[opc@demo ~]$ kubectl apply -f <https://raw.githubusercontent.com/istio/istio/release-1.14/samples/addons/jaeger.yaml>
deployment.apps/jaeger created
service/tracing created
service/zipkin created
service/jaeger-collector created
예거 설치가 완료되면, istio-system 네임스페이스에 디플로이먼트, 파드, 서비스 등이 생성된 것을 알 수 있습니다.
[opc@demo ~]$ kubectl get deploy,po,svc -n istio-system
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/grafana 1/1 1 1 3h59m
deployment.apps/istio-egressgateway 1/1 1 1 2d4h
deployment.apps/istio-ingressgateway 1/1 1 1 2d4h
deployment.apps/istiod 1/1 1 1 2d4h
deployment.apps/jaeger 1/1 1 1 35s
deployment.apps/kiali 1/1 1 1 40m
deployment.apps/prometheus 1/1 1 1 41h
NAME READY STATUS RESTARTS AGE
pod/grafana-67f5ccd9d7-6n9jp 1/1 Running 0 3h59m
pod/istio-egressgateway-7fcb98978c-fx89l 1/1 Running 1 2d4h
pod/istio-ingressgateway-55b6cffcbc-24plw 1/1 Running 1 2d4h
pod/istiod-56d9c5557-nxnvj 1/1 Running 1 2d4h
pod/jaeger-78cb4f7d4b-s4p97 1/1 Running 0 35s
pod/kiali-6b455fd9f9-fnxjz 1/1 Running 0 40m
pod/prometheus-7cc96d969f-jjjxk 2/2 Running 2 41h
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/grafana ClusterIP 10.96.225.188 <none> 3000/TCP 3h59m
service/istio-egressgateway ClusterIP 10.96.214.122 <none> 80/TCP,443/TCP 2d4h
service/istio-ingressgateway LoadBalancer 10.96.160.55 150.230.7.116 15021:30353/TCP,80:30445/TCP,443:32751/TCP,31400:32043/TCP,15443:32178/TCP 2d4h
service/istiod ClusterIP 10.96.139.78 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 2d4h
service/jaeger-collector ClusterIP 10.96.116.9 <none> 14268/TCP,14250/TCP,9411/TCP 35s
service/kiali ClusterIP 10.96.143.128 <none> 20001/TCP,9090/TCP 40m
service/prometheus ClusterIP 10.96.121.169 <none> 9090/TCP 41h
service/tracing ClusterIP 10.96.243.54 <none> 80/TCP,16685/TCP 35s
service/zipkin ClusterIP 10.96.24.189 <none> 9411/TCP 35s
[opc@demo ~]$
istioctl 명령으로 대쉬보드를 오픈합니다.
[opc@demo ~]$ istioctl dashboard jaeger
<http://localhost:16686>
istioctl 명령으로 리턴된 URL로 접속하면 카일리 초기 화면을 볼 수 있습니다.
몇차례 Bookinfo 어플리케이션을 웹 브라우저에서 호출하고 카일리로 돌아오면 메트릭이 업데이트되고 있음을 확인할 수 있습니다.
왼쪽의 Service 목록에서 모니터링 하려는 서비스를 선택하면 옵션을 선택하고, 해당 서비스의 트레이스 목록을 볼 수 있습니다. 여기에서는 productpage.default를 선택했습니다.
각 트레이스를 선택하면 상세 내용을 볼 수 있습니다. 여기에서는 “istio-ingressgateway.istio-system: productpage.default.svc.cluster.local:9080/productpage 1d48293”에 대한 상세 정보입니다.
각 항목을 선택하면 좀 더 자세한 내용을 확인할 수 있습니다.
<END>