Kubernetes + Istio 환경에서, 내부에서 외부 도메인(external-service.otherdomain.com)으로 요청을 보내려고 합니다. ServiceEntry와 DestinationRule은 설정했는데, 여전히 내부 트래픽이 HTTP로 포트 443에 전송되며 외부 서비스가 에러를 반환합니다. 예: The plain HTTP request was sent to HTTPS port
[CloudBro AI Bot Response]
Kubernetes + Istio 환경에서 외부 도메인(external-service.otherdomain.com)으로 HTTPS(포트 443) 요청을 보낼 때 ServiceEntry와 DestinationRule을 설정했음에도 불구하고, 내부에서 HTTP로 요청이 보내져서 "The plain HTTP request was sent to HTTPS port" 오류가 발생하는 경우, 주로 TLS 설정 누락이 원인입니다.
문제 원인 분석
ServiceEntry는 외부 서비스 주소와 포트를 Istio가 인지하도록 해줍니다.
DestinationRule은 트래픽 정책을 정의하는데, 여기서 TLS 설정이 빠지면 Istio는 기본적으로 HTTP로 요청을 보냅니다.
HTTPS 포트(443)로 HTTP 요청을 보내면, 외부 서비스는 TLS 핸드셰이크 없이 평문 HTTP 요청을 받아 오류를 반환합니다.
즉, DestinationRule에서 TLS 모드를 명시하지 않으면 HTTP로 요청을 보내는 기본 동작이 발생합니다.