-
Istio Egress Gateway에서 TLS 요청이 해석되는 방식Kubernetes 2025. 3. 13. 00:12728x90
❓ Istio Egress Gateway에서 TLS 요청이 해석되는 방식
👉 예, SIMPLE 모드를 사용하면 Egress Gateway에서 TLS를 해석할 수 있음.
👉 Egress Gateway에서 클라이언트(앱)와 외부 서버 간의 TLS 연결을 두 개의 개별 TLS 연결로 변환함.- 클라이언트(앱) → Egress Gateway에서 TLS 종료
- Egress Gateway → 외부 서버로 새로운 TLS 연결 생성
1️⃣ PASSTHROUGH 모드 vs SIMPLE 모드 비교
✅ 1. PASSTHROUGH 모드 (TLS 직접 전달)
- Egress Gateway에서 TLS를 해석하지 않고 그대로 외부 서버로 전달.
- TLS 핸드셰이크 및 암호화는 앱과 외부 서버 간에 직접 수행됨.
- Istio는 트래픽을 해석할 수 없으며, HTTP 응답 코드나 요청 데이터를 볼 수 없음.
📌 트래픽 흐름
[앱] --(TLS)--> [Egress Gateway] --(TLS)--> [외부 서버]✔️ 장점:
- 클라이언트와 외부 서버 간 엔드 투 엔드 TLS 유지.
- 성능 최적화 (Egress Gateway에서 TLS를 해석하지 않으므로 CPU 부하 적음).
❌ 단점:
- HTTP 응답 코드, 요청 데이터 로깅 불가능.
- 트래픽 분석 및 정책 적용이 어려움.
✅ 2. SIMPLE 모드 (TLS 종료 후 재암호화)
- Egress Gateway가 앱의 TLS 요청을 해석한 후, 외부 서버와 새로운 TLS 연결을 맺음.
- 즉, 클라이언트와 외부 서버 간의 단일 TLS 세션이 아니라, Egress Gateway가 중간에서 TLS를 두 번 처리하는 방식.
📌 트래픽 흐름
[앱] --(TLS)--> [Egress Gateway (TLS 해석)] --(새로운 TLS)--> [외부 서버]✔️ 장점:
- Istio에서 HTTP 응답 코드 및 요청 데이터를 로깅 가능.
- 외부 서버로 나가는 트래픽을 제어할 수 있음 (정책 적용 가능).
❌ 단점:
- TLS를 해석해야 하므로 성능 오버헤드 발생.
- 클라이언트와 외부 서버 간의 엔드 투 엔드 TLS가 깨질 수 있음.
2️⃣ SIMPLE 모드로 변경하여 TLS 해석하기
📌 Gateway 설정 (SIMPLE 모드 적용)
apiVersion: networking.istio.io/v1beta1 kind: Gateway metadata: name: egress-gateway spec: selector: istio: egressgateway servers: - port: number: 443 name: https protocol: TLS hosts: - api.external-service.com tls: mode: SIMPLE # PASSTHROUGH → SIMPLE (TLS 해석)📌 DestinationRule 설정 (Egress Gateway에서 TLS 종료 후 외부 서버와 새로운 TLS 연결)
apiVersion: networking.istio.io/v1beta1 kind: DestinationRule metadata: name: egress-tls spec: host: api.external-service.com trafficPolicy: tls: mode: SIMPLE # Istio가 TLS 해석 후 외부로 다시 TLS 연결📌 ServiceEntry 설정 (외부 서비스에 대한 트래픽 허용)
apiVersion: networking.istio.io/v1beta1 kind: ServiceEntry metadata: name: external-api spec: hosts: - api.external-service.com location: MESH_EXTERNAL ports: - number: 443 name: https protocol: TLS resolution: DNS✅ 결과
- 앱에서 보낸 HTTPS 요청은 Egress Gateway에서 TLS 해석 후 새롭게 TLS 연결을 맺어 외부 서버로 전달됨.
- Istio가 HTTP 응답 코드, 요청 데이터를 확인할 수 있음.
🚀 결론
모드TLS 해석 위치응답 코드 로깅 가능 여부정책 적용 가능 여부성능
PASSTHROUGH Egress Gateway에서 해석하지 않음 (앱과 외부 서버 간 직접 TLS) ❌ 불가능 ❌ 불가능 ✅ 성능 최적 SIMPLE Egress Gateway에서 TLS 종료 후 외부 서버와 새로운 TLS 연결 ✅ 가능 ✅ 가능 ❌ 성능 오버헤드 존재 🚀 즉, 앱에서 HTTPS 요청을 보낼 때 PASSTHROUGH 모드를 사용하면 Istio에서 TLS를 해석하지 않고 그대로 전달하고, SIMPLE 모드를 사용하면 Egress Gateway에서 TLS를 해석하여 응답 코드 및 요청 데이터를 수집할 수 있음!
728x90'Kubernetes' 카테고리의 다른 글
Kubernetes Default Pod Scheduler의 스케줄링 로직 (0) 2025.03.21 ServiceEntry는 네임스페이스마다 설정이 필요한가? (0) 2025.03.13 Egress Gateway에서 VirtualService 설정이 필요한가? (0) 2025.03.12 istio에서 north-south traffic의 의미 (0) 2025.03.12 서비스 접속 테스트용 curl 이미지 설치 및 사용 (0) 2025.03.10