공유할 서비스 선택

TECH


TECH

Middleware (오픈소스 활용-33) "ISTIO 이스티오" 쿠버네티스 서비스 시각화 구현에 필요한 데모설치

페이지 정보

작성자 미들웨어 아이디로 검색 전체게시물 댓글 0건 조회 417회 좋아요 0회 작성일 24-07-22 16:13

본문

안녕하세요. 미들웨어 입니다. 

 

오늘은 지난  (오픈소스 활용-11) "ISTIO 이스티오" 1장 - 오픈소스 서비스 메시 플랫폼  에 이어서 좀 더 깊이있게 진도를 나가보도록 하겠습니다. 

지난 시간에 설치를 진행해서 서비스 메시 플랫폼까지 구현해보는 과정을 설명해드렸습니다. 

 

이번에는 쿠버네티스랑 연동해서 서비스 시각화 하는 방법까지 진행해보겠습니다. 

istio 는 오픈소스인 만큼 최신 버전을 다운로드 받아서 진행해보세요. 

 

이 가이드에는 쿠버네티스 설치나 isito의 설치는 작성하지 않았습니다. 

설치 부분은 다른 문서를 참고해서 구현하시고, 이 내용을 참고해주세요.

 

 

 

1. 이스티오 데모 구현

Envoy 배포부터 이스티오를 활용한 카나리배포, 장애 주입프로메테우스(Prometheus)와 그라파나(Grafana)를 이용한 메트릭에 대한 시각화까지 진행합니다

 

- 데모 아키텍처 

아래 오라클 클라우드 아키텍처 센터에 나온 쿠버네티스 상의 Service Mesh 아키텍처를 데모로 구현합니다 


d36db8a6bd9d882716d7a6a6f97df752_1721630256_7125.jpg

위 데모를 구현은 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 -” 와 같이 특정 버전을 지정해서 받을 수도 있습니다 

d36db8a6bd9d882716d7a6a6f97df752_1721630664_6915.png
 

 

- 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 마이크로서비스를 호출. 한개에서 다섯개까지의 빨간색 별표시로 도서에 대한 평가를 나타냄

 

d36db8a6bd9d882716d7a6a6f97df752_1721631089_4591.jpg

 

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 어플리케이션에 접속할 수 있습니다 

d36db8a6bd9d882716d7a6a6f97df752_1721631444_792.jpg
 

 

 

카나리 배포 샘플도 있는데, 그건 다음에 진행하겠습니다. 

그럼.. 이스티오를 활용해서 필요한 것을 작성해보세요

 

 

 

댓글목록

등록된 댓글이 없습니다.

TECH 목록
번호 제목 작성자 작성일 조회수
235 OS OSworker 아이디로 검색 전체게시물 12-24 24
RHEL 9에서 RHEL 6 시스템 또는 타사 APP 서비스로 SSH 연결이 되지 않는 이유

카테고리 : OS

24 0
작성자 : OSworker 24/12/24
234 OS OSworker 아이디로 검색 전체게시물 12-14 85
RHEL7.9 RHEL8.8 커널 업데이트 후 성능 이슈가 발생했습니다.

카테고리 : OS

85 0
작성자 : OSworker 24/12/14
233 OS OSworker 아이디로 검색 전체게시물 11-27 209
Red Hat Enterprise Linux 9에서 root 사용자로 SSH 로그인 활성화 하는 방법

카테고리 : OS

209 0
작성자 : OSworker 24/11/27
232 OS OSworker 아이디로 검색 전체게시물 11-17 260
RHEL 9.5 가 11월 12일에 릴리즈 되었습니다. 간략하게 살펴보시죠~

카테고리 : OS

260 0
작성자 : OSworker 24/11/17
231 OS OSworker 아이디로 검색 전체게시물 11-10 237
어떤 프로세스 어떤 이유로 인해 성능에 문제가 생겼을때 perf로 그 문제를 찾아보세요.

카테고리 : OS

237 0
작성자 : OSworker 24/11/10
230 OS OSworker 아이디로 검색 전체게시물 10-31 260
AI에 대한 관심이 많습니다. 혹시 RHEL AI에 대해 들어보셨나요?

카테고리 : OS

260 0
작성자 : OSworker 24/10/31
229 OS OSworker 아이디로 검색 전체게시물 10-24 269
Fedora와 Red Hat Enterprise Linux의 차이점

카테고리 : OS

269 0
작성자 : OSworker 24/10/24
228 OS OSworker 아이디로 검색 전체게시물 10-11 303
audit 로그에 저장된 time 을 날짜/시간 으로 변경하여 보는법

카테고리 : OS

303 0
작성자 : OSworker 24/10/11
227 OS OSworker 아이디로 검색 전체게시물 09-29 431
[보안취약점]"RHSB-2024-002 - OpenPrinting cups-filters"에 대해 설명드리고자합니다.

카테고리 : OS

431 0
작성자 : OSworker 24/09/29
226 OS OSworker 아이디로 검색 전체게시물 09-25 579
누가 설정파일을 수정했는지 알고싶어요? 그럼 audit를 사용해보세요~!

카테고리 : OS

579 0
작성자 : OSworker 24/09/25
Total 235건
게시물 검색

주식회사 클럭스| 대표 : 이찬호| 사업자등록번호 : 107-87-27655
주소 : 서울특별시 영등포구 국회대로 800, 여의도파라곤
E-mail : sales@chlux.co.kr
Copyright © 클럭스 chlux.co.kr All rights reserved.
상단으로Top