이해가 안됨
- 익스터널 네임서비스는 앱이 사용하는 주소가 가리키는 대상을 치환해줄뿐 요청의 내용자체를 바꿔주진 못한다. TCP를 사용하는 컴포넌트면 상관없으나 HTTP 서비스라면 이야기가 달라진다.
왜 이해가 안됐는가?
- HTTP, TCP에 대한 개념이 명확히 안잡혀있었기 때문
확인한 내용
익스터널 네임 서비스는 단순히 "이름"만 바꿔주는 역할
- 주소 치환 (Address Substitution): 익스터널 네임 서비스는 쿠버네티스 내부 DNS 시스템에게 특정 서비스 이름에 대한 DNS 쿼리가 들어왔을 때, 사용자가 spec.externalName 필드에 지정한 외부 도메인 이름으로 CNAME 레코드를 반환하도록 설정합니다. 결과적으로, 쿠버네티스 내부 애플리케이션이 익스터널 네임 서비스 이름으로 접속을 시도하면, DNS 해석 과정에서 실제 요청은 지정된 외부 도메인 이름으로 향하게 됩니다.
- 요청 내용 자체는 불변 (Request Content Remains Unchanged): 하지만 익스터널 네임 서비스는 요청의 내용 자체에는 전혀 관여하지 않습니다. 요청의 HTTP 헤더, 본문, TCP 패킷의 내용 등 어떤 것도 수정하거나 변경하지 않습니다. 단순히 "목적지 주소" 만 바꿔주는 역할을 할 뿐입니다. 이것이 "요청의 내용 자체를 바꿔주진 못한다" 는 의미입니다.
HTTP 서비스 (HTTP services):
- HTTP는 애플리케이션 레벨 프로토콜이며, 다양한 부가 정보를 헤더에 담아 전달합니다. 특히 Host 헤더는 매우 중요한 역할을 합니다.
- Host 헤더의 중요성: HTTP Host 헤더는 웹 서버에게 어떤 도메인 이름으로 요청이 왔는지 알려주는 역할을 합니다. 하나의 웹 서버가 여러 도메인 이름을 처리하는 가상 호스팅 (Virtual Hosting) 환경에서 Host 헤더는 필수적입니다. 웹 서버는 Host 헤더 값을 보고 어떤 웹사이트 (Virtual Host) 에 대한 요청인지 판단하고, 그에 맞는 콘텐츠를 응답합니다.
익스터널 네임 서비스 + HTTP 문제점:
- Host 헤더는 HTTP 요청이 어느 서버(도메인)로 보내지는지를 나타내는 필드입니다.
웹 서버는 Host 헤더를 기반으로 어떤 가상 호스트(Virtual Host) 또는 특정 웹사이트를 제공할지 결정합니다.익스터널 네임 서비스를 사용하여 my-service.example.com 이라는 쿠버네티스 서비스 이름으로 외부 HTTP 서비스 external-service.real-domain.com 에 연결한다고 가정해 봅시다.
쿠버네티스 내부 애플리케이션은 http://my-service.example.com 으로 HTTP 요청을 보냅니다.익스터널 네임 서비스는 DNS 레코드를 치환하여 실제 요청은 external-service.real-domain.com 으로 전달됩니다.
문제는 HTTP Host 헤더입니다. 일반적으로 웹 브라우저나 HTTP 클라이언트는 URL의 호스트 이름 (my-service.example.com) 을 그대로 Host 헤더에 담아서 요청을 보냅니다. Host: my-service.example.com 과 같이 말이죠.외부 HTTP 서비스 (external-service.real-domain.com) 는 Host: external-service.real-domain.com 을 기대하고 있을 수 있습니다. 만약 외부 서비스가 Host 헤더를 기반으로 가상 호스팅을 구성하거나, 특정 Host 헤더 값에만 응답하도록 설정되어 있다면, Host: my-service.example.com 요청은 제대로 처리되지 않거나, 원치 않는 응답을 받을 수 있습니다.
'Docker, K8s' 카테고리의 다른 글
쿠버네티스 네트워킹 헷갈리는 사항 (0) | 2025.03.29 |
---|---|
Pipe - 컨테이너 런타임이 어떻게 컨테이너의 로그를 캡쳐하는가? (0) | 2025.03.18 |
emptyDir은 파드와 같은 생애 주기를 가지는데, 저장된 데이터는 재시작되더라도 유지된다. (0) | 2025.03.05 |
K8s 환경변수는 컨테이너에서 동작하는 모든 프로세스에서 접근 가능하다? (0) | 2025.03.05 |
컨테이너 이미지 내 overlayFS에서 Copy-on-Write가 구체적으로 어떻게 작동하는가? (0) | 2025.03.05 |