– Gateway와 Sidecar를 활용한 TLS 종료 방식 구성 실습
TLS(Transport Layer Security)는 서비스 메시 환경에서 통신 보안을 보장하기 위한 핵심 요소다. Istio를 활용하면 클러스터 내부뿐만 아니라 외부에서 들어오는 트래픽에 대해서도 TLS를 적용할 수 있으며, TLS 종료 지점을 어떻게 설정하느냐에 따라 아키텍처와 설정 방식이 달라진다.
이번 시리즈에서는 Istio Ingress Gateway와 사이드카 Envoy를 활용해 TLS 종료 지점을 구성하고, 그 차이를 실습을 통해 직접 확인했다. Istio 공식 문서의 예제를 기반으로 구성했으며, 각 시나리오에서 어떻게 트래픽이 흐르는지, 어떤 리소스를 설정해야 하는지를 단계별로 구성하고, curl을 활용한 호출 결과로 실제 통신 동작까지 검증했다.
Ingress Gateway가 TLS를 종료하고, 내부 서비스에는 HTTP로 전달하는 구조를 구성했다. 가장 일반적인 TLS 구성 방식이며, 인증서 관리는 Gateway 측에서 담당한다.
클라이언트 --HTTPS--> Ingress Gateway (TLS 종료) --HTTP--> 내부 서비스

설정한 주요 항목
Gateway리소스에tls.mode: SIMPLE설정credentialName을 통해 Secret 인증서 바인딩- 내부 서비스는 별도의 인증서 없이 HTTP 수신
Ingress Gateway는 TLS를 해제하지 않고, 외부 요청을 그대로 내부 Pod로 전달하는 PASSTHROUGH 모드 구성을 실습했다. 내부 서비스는 자체적으로 HTTPS 인증서를 구성해 TLS를 직접 종료한다.
클라이언트 --HTTPS--> Ingress Gateway (PASSTHROUGH) --HTTPS--> 내부 서비스(Pod)

설정한 주요 항목
Gateway리소스에tls.mode: PASSTHROUGH설정VirtualService에서 SNI 기반 TLS 라우팅 구성- 내부 컨테이너(gunicorn)에서 인증서 직접 로딩
- 인증서는 Secret으로 생성하고 Pod에 마운트
Ingress Gateway 없이, 사이드카 Envoy가 외부의 mTLS 요청을 직접 종료하고, 내부 서비스에는 HTTP로 전달하는 구조를 구성했다. API Gateway처럼 특정 서비스만 외부에 노출할 때 활용할 수 있다.
클라이언트 --mTLS--> Sidecar Envoy (TLS 종료) --HTTP--> 내부 서비스

설정한 주요 항목
Sidecar리소스에ingress필드로 TLS 종료 포트 설정- 인증서는 Secret으로 만들어 사이드카에 VolumeMount
- 전체 mTLS는
PeerAuthentication으로 활성화- 포트별로 mTLS를 DISABLE 설정하여 사이드카 외부 수신 허용