Oracle Cloud Infrastructure (OCI) 에서 이스티오(ISTIO)를 활용한 서비스 메쉬(Service Mesh)에 대한 기술 정리 및 이를 데모로 구현한 내용을 정리합니다.
글 순서
5. 이스티오 데모 - 이스티오 설치, 엔보이 프록시 주입
6. 이스티오 데모 - 샘플 어플리케이션 (Bookinfo) 배포
8. 이스티오 데모 - 결함 주입(Fault Injection)
REFERENCES
아래 도서 및 사이트를 참조하여 작성한 문서입니다.
- 도메인 주도 설계로 시작하는 마이크로 서비스 개발 (위키북스)
- 쿠버네티스 완벽 가이드 (길벗)
- Istio로 시작하는 서비스 메시 (에이콘)
- Isitio Documentation
쿠버네티스 서비스 시각화
프로메테우스(Prometheus)로 쿠버네티스 클러스터의 메트릭을 수집하고, 그라파나(Grafana), 키알리(Kiali), 예거(Yaeger) 등으로 수집된 메트릭을 시각화할 수 있습니다. 이를 살펴보겠습니다.
프로메테우스 (Prometheus)
프로메테우스는 오픈 소스 모니터링 시스템 및 시계열 데이터베이스입니다. 이스티오와 함께 프로메테우스를 사용하여 서비스 메쉬 내에서 이스티오 및 어플리케이션의 상태를 추적하는 메트릭을 기록할 수 있습니다.
먼저 프로메테우스를 설치합니다. Helm Chart로도 프로메테우스와 그라파나를 묶어서 배포할 수 있으나, 여기에서는 보다 간단한 kubectl 명령으로 설치했습니다.
설치는 아래에서와 같이 성능이나 보안 등에 대한 고려는 하지 않고 단지 데모용으로 빠른 설치를 진행할 수 있습니다. 또는 각 시스템 환경에 맞춰 사용자 정의로 설치할 수 있습니다. 여기에서는 데모용도 이므로 빠른 설치를 선택했습니다.
아래 방식으로 프로메테우스 설치하면 메트릭에 대한 수집은 기본값으로 활성화되어 있습니다. 참고로 메트릭에 대한 수집을 수동으로 설정할 수도 있습니다.
[opc@demo ~]$ kubectl apply -f <https://raw.githubusercontent.com/istio/istio/release-1.14/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
프로메테우스 설치가 완료되면, istio-system 네임스페이스에 디플로이먼트, 파드, 서비스 등이 생성된 것을 알 수 있습니다.
[opc@demo ~]$ kubectl get deploy,po,svc -n istio-system
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/istio-egressgateway 1/1 1 1 10h
deployment.apps/istio-ingressgateway 1/1 1 1 10h
deployment.apps/istiod 1/1 1 1 10h
deployment.apps/prometheus 1/1 1 1 3m43s
NAME READY STATUS RESTARTS AGE
pod/istio-egressgateway-7fcb98978c-fx89l 1/1 Running 0 10h
pod/istio-ingressgateway-55b6cffcbc-24plw 1/1 Running 0 10h
pod/istiod-56d9c5557-nxnvj 1/1 Running 0 10h
pod/prometheus-7cc96d969f-jjjxk 2/2 Running 0 3m43s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/istio-egressgateway ClusterIP 10.96.214.122 <none> 80/TCP,443/TCP 10h
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 10h
service/istiod ClusterIP 10.96.139.78 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 10h
service/prometheus ClusterIP 10.96.121.169 <none> 9090/TCP 3m43s
[opc@demo ~]$
<END>