Middleware (오픈소스 활용-33) "ISTIO 이스티오" 쿠버네티스 서비스 시각화 구현에 필요한 데모설치
페이지 정보
작성자 미들웨어 아이디로 검색 전체게시물 댓글 0건 조회 417회 좋아요 0회 작성일 24-07-22 16:13본문
안녕하세요. 미들웨어 입니다.
오늘은 지난 (오픈소스 활용-11) "ISTIO 이스티오" 1장 - 오픈소스 서비스 메시 플랫폼 에 이어서 좀 더 깊이있게 진도를 나가보도록 하겠습니다.
지난 시간에 설치를 진행해서 서비스 메시 플랫폼까지 구현해보는 과정을 설명해드렸습니다.
이번에는 쿠버네티스랑 연동해서 서비스 시각화 하는 방법까지 진행해보겠습니다.
istio 는 오픈소스인 만큼 최신 버전을 다운로드 받아서 진행해보세요.
이 가이드에는 쿠버네티스 설치나 isito의 설치는 작성하지 않았습니다.
설치 부분은 다른 문서를 참고해서 구현하시고, 이 내용을 참고해주세요.
1. 이스티오 데모 구현
Envoy 배포부터 이스티오를 활용한 카나리배포, 장애 주입, 프로메테우스(Prometheus)와 그라파나(Grafana)를 이용한 메트릭에 대한 시각화까지 진행합니다
- 데모 아키텍처
아래 오라클 클라우드 아키텍처 센터에 나온 쿠버네티스 상의 Service Mesh 아키텍처를 데모로 구현합니다
위 데모를 구현은 OCI를 통해 만들었습니다.
kubectl 실행 호스트 생성/설정 네트웍 구성 단순화를 위해 클러스터와 함께 생성된 쿠버네티스
- 서비스 서브넷, 시큐리티 리스트를 이용
- 인터넷에서 접속 허가를 위해 시큐리티 리스트 Ingress Rule에 22번 포트 추가, Egress Rule에 All Protocol 허용
- 추가 git 설치 (선택사항) 도커 설치 (선택사항)
- OCI CLI 설치 및 setup config 실행 kubectl 설치 kubeconfig 생성
- 인증토큰, OCI Registry 설정, 쿠버네티스 시크릿 파일 생성 (선택사항)
2. 이스티오 설치 및 실행
다음 명령으로 이스티오를 다운로드 받습니다. 아래에서는 최신 이스티오 버전을 받았으나, “curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.6.0 TARGET_ARCH=x86_64 sh -” 와 같이 특정 버전을 지정해서 받을 수도 있습니다
- istio demo파일 설치
이제 istioctl install 명령으로 이스티오를 설치합니다. demo 프로파일로 설치를 진행했습니다.
이스티오에서는 컨트롤 플레인과 데이터플레인 구성에 대한 내장된 아래 6개 설정 프로파일을 제공합니다. 여기에서는 이후 Bookinfo 어 플리케이션을 사용 샘플로 사용할 것이므로 demo 프로파일을 적용했습니다.
아래 명령어를 입력하면 이스티오 데모파일을 설치 할 수 있습니다.
명령어 : istioctl install --set profile=demo
아래 명령어를 통해 이스티오 관련 배포된 사항들을 확인할 수 있습니다.
명령어 : kubectl -n istio-system get deploy
- 이스티오 엔보이 프록시 주입(Injection)
엔보이 프록시를 파드에 주입하기 위한 방법은 자동과 수동 두가지 방법이 있습니다.
먼저 수동으로 하는 방식은 아래와 같이 istioctl kube-inject 명령을 수행하는 방식입니다. 이 경우 기존 매니페스트 파일에 엔보이 프록시 를 추가하는 매니페스트를 자동으로 생성하게됩니다.
명령어 : istioctl kube-inject -f samples/sleep/sleep.yaml | kubectl apply -f -
3. 이스티오 샘플 어플리케이션 배포
데모를 위해 이스티오에서 제공하는 샘플 어플리케이션 Bookinfo를 사용하겠습니다.
Bookinfo는 아래와 같이 개별 Python, Java, Ruby, Node.js 마이크로서비스로 구성된 샘플 어플리케이션입니다. 아래 샘플 어플리케이 션을 배포하면 엔보이 프록시도 자동으로 배포될 것입니다.
Bookinfo 어플리케이션은 다음과 같이 구성되어 있습니다
productpage: details와 reviews 마이크로서비스를 호출
details: 도서 정보 reviews: 도서에 대한 리뷰 정보. ratings
마이크로서비스를 호출 ratings: 도서 리뷰에 따른 랭킹 정보
reviews 마이크로서비스는 3개의 버전을 가지고 있습니다.
Version v1: ratings 마이크로서비스를 호출하지 않음
Version v2: ratings 마이크로서비스를 호출. 한개에서 다섯개까지의 검은색 별표시로 도서에 대한 평가를 나타냄
Version v3: ratings 마이크로서비스를 호출. 한개에서 다섯개까지의 빨간색 별표시로 도서에 대한 평가를 나타냄
- kubectl 명령으로 Bookinfo 어플리케이션을 배포
명령어 : apply -f ~/istio-1.14.1/samples/bookinfo/platform/kube/bookinfo.yaml
- Bookinfo 어플리케이션이 정상 작동하는지에 대해 아래와 같이 curl 명령으로 확인할 수 있습니다
명령어 : kubectl exec "$(kubectl get pod -l app=ratings -o jsonpath='{.items[0].metadata.name}')" -c ratings -- curl -sS productp
Bookinfo 서비스가 실행되고 있는 것을 확인했습니다. 이제 웹 브라우저와 같은 쿠버네티스 클러스터 외부에서 어플리케이션에 접근할 수 있도록 하겠습니다. 이를 위해서는 이스티오 게이트웨이를 만들어야 합니다.
다음과 같이 해당 매니페스트 파일을 적용해서 이스티오 게이트웨이를 생성합니다. 먼저 매니페스트 파일을 조회해보면 이스티오 인그레 스 게이트웨이를 만들고, 들어온 트래픽을 서비스로 라우팅하는 VirtualService를 만드는 것을 알 수 있습니다.
명령어 : cat ~/istio-1.14.1/samples/bookinfo/networking/bookinfo-gateway.yaml
- 매니페스트 파일을 적용해서 게이트웨이와 VirtaulService를 생성합니다.
명령어 : kubectl apply -f ~/istio-1.14.1/samples/bookinfo/networking/bookinfo-gateway.yaml
- 생성된 게이트웨이를 확인합니다
명령어 : kubectl get gateways
- Bookinfo 어플리케이션 접속 확인
접속할 IP 확인
명령어 : kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.status.loadBalancer.ingress[0].ip}'
이제 위에서 확인한 IP, 포트를 통해 아래 URL로 접속해 보면 Bookinfo 어플리케이션에 접속할 수 있습니다
카나리 배포 샘플도 있는데, 그건 다음에 진행하겠습니다.
그럼.. 이스티오를 활용해서 필요한 것을 작성해보세요
댓글목록
등록된 댓글이 없습니다.