Study_note
[Service Mesh] Istio BookInfo 본문
Istio BookInfo
Istio를 설치하면 Istio뿐만 아니라 연습으로 생성할 수있는 야믈파일들을 같이주는데 해당 야믈들을 보면서 istio를 이해하면 좋다고 한다.
경로는 설치한 istio디렉토리/samples/bookinfo/platform/kube에 야믈 파일들인 존재한다.
트래픽 흐름
1. * 로 호스트를 전부 열어줘서 Gateway로 요청이 들어온다
2. 들어온 트래픽은 VirtualService를 통해서 productpage서비스로 접근
3. productpage에 설치되어있는 envoy를 통해 모든 서비스로 라운드로빈
(virtual service 가 없는 경우, envoy는 모든 서비스 인스턴스 간에 round robin 로드 밸런싱)
4. productpage가 필요한 리뷰서비스와 디테일 서비스 호출
5. 리뷰 서비스는 3가지 버전이 있고 이 중 2가지 버전이 뒤에 ratings를 호출 (검정별, 빨간별)
즉
Client --> Istio Gateway --> Istio Virtual Service --> K8s Service
구축하는 형태는 아래와 같다
생성 순서
우선 모든 default 네임스페이스에 envoy를 설치하기 위해 라벨 설정
kubectl label namespace default istio-injection=enabled
후 아래 경로에서 해당 야믈파일들 생성
samples/bookinfo/platform/kube/bookinfo.yaml
samples/bookinfo/networking/bookinfo-gateway.yaml
bookinfo.yaml 아래와 같다
처음 보여준 그림 처럼 productpage, detail, rating, review (v1~v3)를 배포
배포할때 야믈파일을 확인해보면 서비스어카운트, 디플로이먼트, 서비스 생성를 생성하는거 확인 가능
bookinfo-gateway.yaml는 아래와 같다
gateway 설명
호스트를 *로 지정해 모든 호스트를 받고 selector 타입으로 istio-gateway를 사용
VirtualService설명
위의 gateway의 메타데이터 이름을 지정해서 매핑 또한 호스트를 *로 지정해 모든 호스트 허용
match를 사용해서 매치되는 url만 route할 수 있게 적용
매치된 url 라우터를 생성했던 productpage 서비스와 매핑
gateway를 istio-gateway로 사용했기 때문에 istio-ingressgateway의 dns로 접근 하고 VirtualService 매치된 url 라우터를 생성했던 productpage 서비스와 매핑했기 때문에 istio-ingressgateway의 dns/roductpage로 접속
접속 가능
'Servic Mesh' 카테고리의 다른 글
[Service Mesh] Envoy 용어 및 xDS, ADS정리 (0) | 2022.11.22 |
---|---|
istio 생성 및 사이드카 인젝션 (0) | 2022.11.03 |