공유할 서비스 선택

TECH


TECH

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

페이지 정보

작성자 미들웨어 아이디로 검색 전체게시물 댓글 0건 조회 409회 좋아요 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 목록
번호 제목 작성자 작성일 조회수
224 OS OSworker 아이디로 검색 전체게시물 08-30 543
SWAP이 왜 자꾸 사용하게 될까요? 누가 사용하는것일까요?

카테고리 : OS

543 0
작성자 : OSworker 24/08/30
223 OS OSworker 아이디로 검색 전체게시물 08-22 580
리눅스 서버에 RDP를 설치하여 윈도우에서 "원격데스크탑접속"으로 연결

카테고리 : OS

580 0
작성자 : OSworker 24/08/22
222 Middleware 미들웨어 아이디로 검색 전체게시물 08-19 404
(IMDG)를 활용한 session 구성 -2 오픈소스 (Hazelcast, Apache Ignite) 설치방법

카테고리 : Middleware

404 0
작성자 : 미들웨어 24/08/19
221 OS OSworker 아이디로 검색 전체게시물 08-17 801
OpenSSH 의 암호화 또는 Hashing과 관련된 알고리즘에 대해 알아보려 합니다

카테고리 : OS

801 0
작성자 : OSworker 24/08/17
220 Middleware 미들웨어 아이디로 검색 전체게시물 08-09 381
(IMDG) Data Grid란? (IMDG)를 활용한 session 구성 -1

카테고리 : Middleware

381 0
작성자 : 미들웨어 24/08/09
219 OS OSworker 아이디로 검색 전체게시물 07-31 508
Red Hat 이벤트 행사에 대해 알고계신가요?

카테고리 : OS

508 0
작성자 : OSworker 24/07/31
열람중 Middleware 미들웨어 아이디로 검색 전체게시물 07-22 410
열람중
(오픈소스 활용-33) "ISTIO 이스티오" 쿠버네티스 서비스 시각화 구현에 필요한 데모설치

카테고리 : Middleware

410 0
작성자 : 미들웨어 24/07/22
217 OS OSworker 아이디로 검색 전체게시물 07-21 547
RHEL7.9 가 2028년 6월30일까지 지원되시는거 아시나요? #ELS

카테고리 : OS

547 0
작성자 : OSworker 24/07/21
216 OS OSworker 아이디로 검색 전체게시물 07-10 653
[보안취약점] OpenSSH의 서버(sshd)에서 보안 회귀(CVE-2006-5051)가 발견되었습니다.

카테고리 : OS

653 0
작성자 : OSworker 24/07/10
215 Middleware 미들웨어 아이디로 검색 전체게시물 07-10 801
(Apache) mod_wl.so 에서 sticky session 사용방법 정리

카테고리 : Middleware

801 0
작성자 : 미들웨어 24/07/10
Total 234건
게시물 검색

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