Ssoon
[7주차] Service Mesh : Traffic Management : Traffic Shifting 본문
쿠버네티스 네트워크 스터디 3기
[7주차] Service Mesh : Traffic Management : Traffic Shifting
구구달스 2024. 10. 15. 23:45CloudNet@ 가시다님이 진행하는 쿠버네티스 네트워크 스터디 3기
✅ Traffic Shifting
특정 조건에 따라 클라이언트의 요청을 다른 서비스 버전 또는 인스턴스로 전달하는 기술입니다.
- 새로운 버전의 서비스 테스트 (예: A/B 테스트)
- 점진적 배포 (예: Canary 배포)
- 장애 발생 시 트래픽 재라우팅
🧿 VirtualService 리소스 정의 (트래픽 라우팅 규칙 설정)
- spec: 이 VirtualService의 세부 설정입니다.
- hosts: 이 VirtualService가 적용될 서비스의 이름을 정의합니다. productpage라는 이름의 서비스에 대해 요청을 처리합니다.
- http: HTTP 트래픽에 대한 라우팅 규칙을 정의합니다.
- route: 클라이언트의 요청을 어떤 서비스로 전달할지를 정의합니다.
- destination: 요청이 전달될 서비스의 정보를 정의합니다.
- host: 요청을 받을 서비스의 이름, 여기서는 productpage입니다.
- subset: 요청이 전달될 서비스의 특정 서브셋(버전)을 정의합니다. 여기서는 v1으로 설정되어 있습니다.
- destination: 요청이 전달될 서비스의 정보를 정의합니다.
- route: 클라이언트의 요청을 어떤 서비스로 전달할지를 정의합니다.
VirtualService 정의는 클라이언트의 모든 HTTP 요청을 각 서비스의 v1 서브셋으로 라우팅합니다.
(⎈|default:N/A) root@k3s-s:~/istio-1.23.2/samples/bookinfo/networking# cat virtual-service-all-v1.yaml
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: productpage
spec:
hosts:
- productpage
http:
- route:
- destination:
host: productpage
subset: v1
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: reviews
spec:
hosts:
- reviews
http:
- route:
- destination:
host: reviews
subset: v1
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: ratings
spec:
hosts:
- ratings
http:
- route:
- destination:
host: ratings
subset: v1
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: details
spec:
hosts:
- details
http:
- route:
- destination:
host: details
subset: v1
---
(⎈|default:N/A) root@k3s-s:~/istio-1.23.2/samples/bookinfo/networking# kubectl apply -f virtual-service-all-v1.yaml
virtualservice.networking.istio.io/productpage created
virtualservice.networking.istio.io/reviews created
virtualservice.networking.istio.io/ratings created
virtualservice.networking.istio.io/details created
🧿 VirtualService 리소스 정의 ( reviews 서비스 트래픽 라우팅 규칙 설정)
- spec: 이 VirtualService의 세부 설정입니다.
- hosts: 이 VirtualService가 적용될 서비스의 이름을 정의합니다. reviews라는 이름의 서비스에 대해 요청을 처리합니다.
- http: HTTP 트래픽에 대한 라우팅 규칙을 정의합니다.
- route: 클라이언트의 요청을 어떤 서비스로 전달할지를 정의합니다.
- destination: 요청이 전달될 서비스의 정보를 정의합니다.
- host: 요청을 받을 서비스의 이름, 여기서는 reviews입니다.
- subset: 요청이 전달될 서비스의 특정 서브셋(버전)을 정의합니다. 여기서는 v1과 v3로 설정되어 있습니다.
- weight: 각 서브셋으로 전달할 트래픽의 비율을 설정합니다. 여기서는 두 서브셋(v1과 v3)에 각각 50%의 트래픽이 할당됩니다.
- destination: 요청이 전달될 서비스의 정보를 정의합니다.
- route: 클라이언트의 요청을 어떤 서비스로 전달할지를 정의합니다.
VirtualService 정의는 클라이언트의 HTTP 요청을 reviews 서비스의 v1과 v3 서브셋으로 각각 50%의 비율로 라우팅합니다.
(⎈|default:N/A) root@k3s-s:~/istio-1.23.2/samples/bookinfo/networking# cat virtual-service-reviews-50-v3.yaml
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: reviews
spec:
hosts:
- reviews
http:
- route:
- destination:
host: reviews
subset: v1
weight: 50
- destination:
host: reviews
subset: v3
weight: 50
(⎈|default:N/A) root@k3s-s:~/istio-1.23.2/samples/bookinfo/networking# kubectl apply -f virtual-service-reviews-50-v3.yaml
virtualservice.networking.istio.io/reviews configured
🧿 VirtualService 리소스 정의 ( reviews 서비스 트래픽 라우팅 규칙 설정)
- spec: 이 VirtualService의 세부 설정입니다.
- hosts: 이 VirtualService가 적용될 서비스의 이름을 정의합니다. reviews라는 이름의 서비스에 대해 요청을 처리합니다.
- http: HTTP 트래픽에 대한 라우팅 규칙을 정의합니다.
- route: 클라이언트의 요청을 어떤 서비스로 전달할지를 정의합니다.
- destination: 요청이 전달될 서비스의 정보를 정의합니다.
- host: 요청을 받을 서비스의 이름, 여기서는 reviews입니다.
- subset: 요청이 전달될 서비스의 특정 서브셋(버전)을 정의합니다. 여기서는 v1과 v2로 설정되어 있습니다.
- weight: 각 서브셋으로 전달할 트래픽의 비율을 설정합니다. 여기서는 v1에 80%, v2에 20%의 트래픽이 할당됩니다.
- destination: 요청이 전달될 서비스의 정보를 정의합니다.
- route: 클라이언트의 요청을 어떤 서비스로 전달할지를 정의합니다.
VirtualService 정의는 클라이언트의 HTTP 요청을 reviews 서비스의 v1 서브셋으로 80%의 비율로, v2 서브셋으로 20%의 비율로 라우팅합니다
(⎈|default:N/A) root@k3s-s:~/istio-1.23.2/samples/bookinfo/networking# cat virtual-service-reviews-80-20.yaml
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: reviews
spec:
hosts:
- reviews
http:
- route:
- destination:
host: reviews
subset: v1
weight: 80
- destination:
host: reviews
subset: v2
weight: 20
(⎈|default:N/A) root@k3s-s:~/istio-1.23.2/samples/bookinfo/networking# kubectl apply -f virtual-service-reviews-80-20.yaml
virtualservice.networking.istio.io/reviews configured
🧿 VirtualService 리소스 정의 ( reviews 서비스 트래픽 라우팅 규칙 설정)
- spec: 이 VirtualService의 세부 설정입니다.
- hosts: 이 VirtualService가 적용될 서비스의 이름을 정의합니다. reviews라는 이름의 서비스에 대해 요청을 처리합니다.
- http: HTTP 트래픽에 대한 라우팅 규칙을 정의합니다.
- route: 클라이언트의 요청을 어떤 서비스로 전달할지를 정의합니다.
- destination: 요청이 전달될 서비스의 정보를 정의합니다.
- host: 요청을 받을 서비스의 이름, 여기서는 reviews입니다.
- subset: 요청이 전달될 서비스의 특정 서브셋(버전)을 정의합니다. 여기서는 v1과 v2로 설정되어 있습니다.
- weight: 각 서브셋으로 전달할 트래픽의 비율을 설정합니다. 여기서는 v1에 90%, v2에 10%의 트래픽이 할당됩니다.
- destination: 요청이 전달될 서비스의 정보를 정의합니다.
- route: 클라이언트의 요청을 어떤 서비스로 전달할지를 정의합니다.
VirtualService 정의는 클라이언트의 HTTP 요청을 reviews 서비스의 v1 서브셋으로 90%의 비율로, v2 서브셋으로 10%의 비율로 라우팅합니다.
(⎈|default:N/A) root@k3s-s:~/istio-1.23.2/samples/bookinfo/networking# cat virtual-service-reviews-90-10.yaml
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: reviews
spec:
hosts:
- reviews
http:
- route:
- destination:
host: reviews
subset: v1
weight: 90
- destination:
host: reviews
subset: v2
weight: 10
(⎈|default:N/A) root@k3s-s:~/istio-1.23.2/samples/bookinfo/networking# kubectl apply -f virtual-service-reviews-90-10.yaml
virtualservice.networking.istio.io/reviews configured
🧿 virtual-service-all-v1.yaml 파일에 정의된 모든 가상 서비스를 삭제
(⎈|default:N/A) root@k3s-s:~/istio-1.23.2/samples/bookinfo/networking# kubectl delete -f virtual-service-all-v1.yaml
virtualservice.networking.istio.io "productpage" deleted
virtualservice.networking.istio.io "reviews" deleted
virtualservice.networking.istio.io "ratings" deleted
virtualservice.networking.istio.io "details" deleted
'쿠버네티스 네트워크 스터디 3기' 카테고리의 다른 글
[7주차] Service Mesh : Traffic Management : TCP Traffic Shifting (0) | 2024.10.15 |
---|---|
[7주차] Service Mesh : Traffic Management : Request Timeouts (0) | 2024.10.15 |
[7주차] Service Mesh : Traffic Management : Fault Injection (0) | 2024.10.15 |
[7주차] Service Mesh : Traffic Management : Request Routing (0) | 2024.10.15 |
[7주차] Service Mesh : Bookinfo 실습 & Istio 기능 (0) | 2024.10.15 |
Comments