Istio 이그레스 트래픽 제어
Istio 이그레스 트래픽 제어 (Egress Control)
메시 안 서비스가 외부 API를 호출하는 일은 흔해요. 그런데 외부 호출을 그냥 두면 트래픽이 메시 관리 밖으로 새어나가서, 모니터링·보안·라우팅 규칙이 적용되지 않아요. Istio 이그레스 기능은 메시에서 외부 서비스로 나가는 트래픽까지 제어 대상에 넣는 방법을 알려줘요.
출처: https://istio.io/latest/docs/tasks/traffic-management/egress/egress-control/
기본적으로 메시 안의 Envoy 사이드카는 클러스터 밖으로 나가는 트래픽을 통과시켜요. 그 트래픽을 메시 관리하에 두려면 두 가지 방식이 있어요.
- ServiceEntry로 외부 서비스를 등록: 외부 호스트를 메시 안 리소스로 선언해서, 트래픽이 사이드카를 거쳐 나가게 해요. 이렇게 하면 외부 호출도 메트릭·리트라이·타임아웃 규칙을 받아요.
- 모든 이그레스 트래픽을 전용 게이트웨이로 통과: HTTP 요청이 전용 이그레스 게이트웨이 프록시를 거쳐 외부로 나가게 해서, 접근 통제와 통합 로깅을 한 지점에서 해요.
아래는 외부 호스트를 ServiceEntry로 등록하는 예시예요.
apiVersion: networking.istio.io/v1
kind: ServiceEntry
metadata:
name: external-api
spec:
hosts:
- api.external.com
location: MESH_EXTERNAL
ports:
- number: 443
name: https
protocol: TLS
resolution: DNS
여기서 location: MESH_EXTERNAL이 "이 서비스는 메시 밖에 있다"는 뜻이고, resolution: DNS는 실제 IP를 DNS로 해석하라는 의미예요. 이렇게 등록하면 외부 호출도 Istio의 트래픽 관리·관찰 기능 안으로 들어와요.
더 알아보기
- 외부로 나가는 TLS를 언제 시작할지(origination) 설정하려면 Egress TLS Origination
- 전용 이그레스 게이트웨이 구성: Egress Gateways