안녕하세요. 이 글은 istio공식문서에서 제공하는 book application설치 방법을 설명합니다.
1. book application이란?
istio는 istio를 잘 이해할 수 있도록 book application 샘플을 제공합니다. 마이크로서비스로 개발되어 있어서 다양한 언어로 개발되어 있습니다.
book application을 istio에 적용하면 아래와 같습니다.
① 사용자는 Ingress gateway를 통해 Product page 애플리케이션에 접근합니다. Product Page는 상품소개 페이지입니다.
② Product Page는 Review(상품 리뷰), Detail(상품 설명)애플리케이션을 호출하여 응답결과를 한 페이지 보여줍니다.
③ Review는 버전이 버전 1, 2, 3이 존재하고 Product Page는 Review버전을 로드밸런싱 합니다.
④ Review 버전 2,3은 Rating(상품평점)애플리케이선을 호출하여 응답결과를 화면에 출력합니다.
2. Book application 설치
설치 방법은 매우 쉽습니다. 공식문서에 있는 내용을 복사&붙여넣기 하시면 됩니다.
공식문서 링크: https://istio.io/latest/docs/examples/bookinfo/
2.1 default namespace injection설정
default namespace에 라벨을 설정하여 injection상태를 활성화합니다.
kubectl label namespace default istio-injection=enabled
2.2 pod, service 배포
istio git프로젝트를 clone합니다.
git clone https://github.com/istio/istio.git
istio에서 제공하는 샘플.yaml을 kubectl로 배포합니다.
cd istio
kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
2.3 pod, service 배포확인
pod가 running상태인지 확인합니다.
kubectl get pods
rating pod에서 productpage pod를 호출해서 product page에 잘 접근이 되는지 확인합니다. 정상응답은 Simple Book App이 화면에 출력됩니다.
kubectl exec "$(kubectl get pod -l app=ratings -o jsonpath='{.items[0].metadata.name}')" -c ratings -- curl -sS productpage:9080/productpage | grep -o "<title>.*</title>"
2.4 Ingress gateway 배포
외부에서 서비스 메시를 통하여 마이크로서비스를 접근하기 위해 ingress gateway를 배포합니다.
kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml
2.5 외부에서 ingress gateway호출
gateway, virtualservice를 확인합니다.
kubectl get gw,virtualservice
직접 호출해보기 위해, ingress gateway주소를 환경변수로 저장합니다.
kubectl -n istio-system get svc,po -l istio=ingressgateway
export GATEWAY_URL=$INGRESS_HOST:$INGRESS_PORT
productpage를 ingress gateway로 호출해보세요!.
curl -s "http://${GATEWAY_URL}/productpage" | grep -o "<title>.*</title>"
2.6 Destination Rule배포
Review애플리케이션을 버전별로 관리하기 위해 Destination Rule을 배포합니다.
kubectl apply -f samples/bookinfo/networking/destination-rule-all.yaml
리뷰 버전별 호출 확인은 웹브라우저로 확인할 수 있습니다. 버전에 따라 리뷰색깔이 다르거나 없을 수 있습니다.
'전공영역 공부 기록' 카테고리의 다른 글
Istio 아키텍처 (0) | 2022.03.26 |
---|---|
pod강제 삭제 (0) | 2022.03.24 |
쿠버네티스 노드당 pod갯수 제한확인 (0) | 2022.03.21 |
istio injection 설정 (0) | 2022.03.21 |
istio operator (0) | 2022.03.21 |