Istio 정복하기 #5 - 트래픽 관리 - 하
하에서는 Mirroring과 Outbound Traffic Control을 알아보겠다.
Mirroring
미러링은 실시간 트래픽을 다른 서비스로 복제하여 보내는 기술이다. 즉 v1으로 트래픽이 왔을 때 v2로도 트래픽이 복제돼서 보내진다.

하는 방법은 어렵지 않고, VirtualService를 조금만 수정해 주면 된다.
apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: test spec: hosts: - "test.io" gateways: - test-gateway http: - route: - destination: host: test subset: version-v1 weight: 100 mirror: # 트래픽이 미러링 됨 host: test subset: version-v2
요청을 보내보고, v2파드에서 로그를 확인해보면 된다.
Outbound Traffic Control
Istio는 외부 서비스로 나가는 아웃바운드 트래픽도 제어할 수 있고 모니터링할 수 있다. 이는 외부 트래픽에 대한 정책을 정의하거나 허가되지 않은 트래픽을 차단하는 데 사용할 수 있다.
K8s Service의 엔드포인트들은 Service Registry에 모이게 된다. ALLOW_ANY옵션이 디폴트로 외부로 트래픽을 보낼 수 있지만 아래처럼 REGISTRY_ONLY로 설정했을 때 외부의 엔드포인트들은 없기에 외부로 트래픽이 나갈 수 없게 된다.
istioctl install --set profile=demo \ --set meshConfig.outboundTrafficPolicy.mode=REGISTRY_ONLY
이때 Service Entry라는 것을 설정해주면 Service Regsitry에 등록돼 사용할 수 있게 된다.
apiVersion: networking.istio.io/v1alpha3 kind: ServiceEntry metadata: name: naver-test spec: hosts: - naver.com ports: - number: 80 name: http protocol: HTTP resolution: DNS
이전에는 naver.com의 요청이 나갈 수 없었지만 이렇게 등록한 후에는 가능하다.
또한 위의 방법으로 ALLOW_ANY인 상태에서 외부로 트래픽을 보낼 수는 있지만, Passthrough 상태로 인식돼서 모니터링 매트릭이 빈약하게 수집되는 문제 또한 해결할 수 있다.
'DevOps > Kubernetes' 카테고리의 다른 글
Istio 정복하기 #7 - Locality-aware load balancing (0) | 2025.04.01 |
---|---|
Istio 정복하기 #6 - Client-side load balancing (0) | 2025.03.30 |
Istio 정복하기 #4 - 트래픽 관리 - 상 (0) | 2025.03.23 |
Istio 정복하기 #3 - Istio Ingress Gateway - 하 (0) | 2025.03.20 |
Istio 정복하기 #2 - Istio Ingress Gateway - 상 (0) | 2025.03.20 |
댓글
이 글 공유하기
다른 글
-
Istio 정복하기 #7 - Locality-aware load balancing
Istio 정복하기 #7 - Locality-aware load balancing
2025.04.01Locality-aware Load Balancing은 요청을 처리할 때 지리상 가까운 인스턴스에 로드 밸런싱해서 응답 시간이 줄어드는 것을 기대할 수 있는 방법이다. Istio에서는 이 기능을 활용하여 다양한 지역의 트래픽을 효과적으로 관리할 수 있다. 물론 나는 Minikube이므로 정확한 환경을 셋티할 수 없지만 라벨링을 통해서 임시적으로 구성해보려고 한다. Locality-aware load balancing 구현구현 자체는 어렵지 않다. 먼저 Deployment에 라벨링을 수정해주자. apiVersion: apps/v1kind: Deploymentmetadata: labels: app: test name: testspec: replicas: 1 selector: matchLa… -
Istio 정복하기 #6 - Client-side load balancing
Istio 정복하기 #6 - Client-side load balancing
2025.03.30Client-side load balancing는 클라이언트에게 endpoint들을 알려주고, 클라이언트가 LB 알고리즘을 선택하게 하도록 하는 방법이다. 이것으로 얻는 이점은 다음과 같다. 1. 중앙집중적인 load balancing을 피할 수 있음2. 불필요한 홉 없이 클라이언트가 직접 요청을 전달할 수 있음 (로드밸런서가 필요 없어짐.) 물론 단점으로는 헬스 체크, 알고리즘이 효율성, 엔드포인트 관리 등이 있지만, 장점도 있으니 알아보자. Client-side load balancing 구현DestinationRule로 구현을 할 수 있는데, Gateway와 VritualService부터 생성하자. apiVersion: networking.istio.io/v1alpha3kind: Gatewaymet… -
Istio 정복하기 #4 - 트래픽 관리 - 상
Istio 정복하기 #4 - 트래픽 관리 - 상
2025.03.23다양한 트래픽 제어 기법을 제공하여 마이크로서비스 간의 통신을 보다 효율적이고 안정적으로 관리할 수 있다. 이 중에서 4개를 알아볼 예정이고, 상에서는 Routing과 Traffic Shifting을 알아본다. Routing라우팅은 클라이언트 요청을 올바른 서비스나 서비스의 특정 버전으로 보내는 방식이다. 이것은 새롭게 배포한 버전에 클라이언트가 바로 요청을 보내지 않고, 내부에서 테스트한 후에 요청을 보낼 수 있도록 활용할 수 있다. 이전에 사용한 VirtualService와 DestinationRule을 추가하면 된다. 리소스는 다음과 같이 있다고 가정하자. apiVersion: networking.istio.io/v1alpha3kind: Gatewaymetadata: name: test-gate… -
Istio 정복하기 #3 - Istio Ingress Gateway - 하
Istio 정복하기 #3 - Istio Ingress Gateway - 하
2025.03.20이번에는 Plain TCP와 Ingress Gateway 분리 방법에 대해서 알아보겠다. Plane TCPPlain TCP는 Istio의 서비스 메시에서 TCP 트래픽을 관리하고 제어하는 방법을 의미한다. database (like mysql), mq (like rabbitmq) 등을 expose 할 수 있다. 단 plain TCP를 다룰 때는 istio가 프로토콜의 종류를 알 수 없으므로 retries, circuit breaking, context를 이해해야 하는 기능들은 사용할 수 없다. ingressgateway의 tcp를 보면 아래와 같이 보인다. 31400kubectl get svc istio-ingressgateway -n istio-system \-o jsonpath='{.spec.por…
댓글을 사용할 수 없습니다.