이 문서에서는 GKE의 포드에서 온프레미스 네트워크의 리소스 및 공개 인터넷 서비스를 비롯한 외부 엔드포인트로의 연결을 구성하는 방법을 설명합니다. GKE 포드 트래픽의 소스 IP 주소를 제어하려면 ip-masq-agent (노드 수준 변환)와 Cloud NAT (VPC 수준 이그레스)를 모두 사용할 수 있습니다.
개요
VPC 기반 GKE 클러스터의 포드가 클러스터 외부의 대상으로 패킷을 전송하면 노드 수준 IP 매스커레이딩 에이전트 (ip-masq-agent)와 Cloud NAT가 구성된 방식에 따라 패킷의 소스 IP 주소가 변경됩니다.
- 노드 수준 변환 (
ip-masq-agent): 구성된nonMasqueradeCIDRs목록을 기반으로 패킷의 소스 IP 주소를 포드 IP 주소 (보조 서브넷 범위)에서 내부 노드 IP 주소 (기본 서브넷 범위)로 변환합니다. - VPC 수준 게이트웨이 (Cloud NAT): 아웃바운드 인터넷 액세스를 허용하도록 내부 VPC IP 주소 (노드 IP 주소 또는 포드 IP 주소)를 고정 공개 IP 주소로 변환합니다.
대상에 노드가 매스커레이드되는지 여부에 따라 패킷은 노드의 IP 주소 또는 포드의 IP 주소를 사용하여 노드를 나갑니다. 이 소스 IP 주소는 Cloud Router 또는 온프레미스 라우터를 구성하는 방법을 결정합니다.
IP 매스커레이딩과 Cloud NAT가 함께 작동하는 방식
인터넷 연결 트래픽의 경우 포드의 패킷은 노드 네트워크 스택과 Cloud NAT 게이트웨이를 모두 통과합니다.
시나리오 A: 노드 IP 주소로 매스커레이드 (인터넷 이그레스에 권장)
대상 IP 주소가 nonMasqueradeCIDRs 목록의 범위와 일치하지 않는 경우:
ip-masq-agent가 GKE 노드에서 소스 NAT (SNAT)를 실행합니다. 소스 IP 주소가 포드 IP 주소 에서 노드 IP 주소 로 재작성됩니다.- 패킷이 노드 IP 주소를 소스로 사용하여 VPC 네트워크에 들어갑니다.
- Cloud NAT 게이트웨이가 패킷을 가로챕니다.
- Cloud NAT는 노드 IP 주소를 공개 IP 주소로 변환하고 인터넷으로 라우팅합니다.
시나리오 B: 포드 IP 주소 보존 (매스커레이드 없음)
대상 IP 주소가 nonMasqueradeCIDRs 목록의 범위와 일치하는 경우 (또는 기본 SNAT가 사용 중지된 경우):
ip-masq-agent가 패킷을 수정하지 않은 상태로 둡니다. 소스 IP 주소는 포드 IP 주소 로 유지됩니다.- 패킷이 포드 IP 주소를 소스로 사용하여 VPC 네트워크에 들어갑니다.
- Cloud NAT 게이트웨이가 패킷을 가로챕니다.
- Cloud NAT는 GKE 포드에 사용되는 서브넷의 보조 IP 주소 범위를 변환하도록 Cloud NAT가 명시적으로 구성된 경우에만 포드 IP 주소를 공개 IP 주소로 변환합니다.
IP 매스커레이드 검사기
이 검사기를 사용하여 ip-masq-agent 구성에 따라 대상 IP 주소가 매스커레이드되는지 확인합니다.
트래픽 흐름 예시
변환 경로를 이해하려면 다음 구성 예를 참고하세요.
- 포드 IP 주소 범위:
10.4.0.0/14(포드 IP 주소:10.4.0.5) - 노드 IP 주소 범위:
10.128.0.0/20(노드 IP 주소:10.128.0.10) - 대상 IP 주소:
8.8.8.8(공개 DNS 서버,nonMasqueradeCIDRs목록에 없음)
포드가 패킷을 전송하면 다음이 발생합니다.
- 포드에서 패킷 시작: 패킷은 대상 IP 주소가
8.8.8.8인 포드의 네트워크 인터페이스 (IP 주소:10.4.0.5)에서 시작됩니다. - 노드 수준 매스커레이드:
8.8.8.8대상 IP 주소가nonMasqueradeCIDRs목록에 없으므로 호스트 노드의ip-masq-agent가 패킷이 나갈 때 가로채고 SNAT를 실행합니다. 소스 IP 주소가10.4.0.5포드 IP 주소에서 호스트 노드 IP 주소(10.128.0.10)로 재작성됩니다. - VPC 이그레스: 패킷은
10.128.0.10호스트 노드 IP 주소를 소스 IP 주소로 사용하여 VPC 네트워크에 도달합니다. - Cloud NAT 게이트웨이: 대상이 공개 인터넷이므로 Cloud NAT는 패킷을 처리하고 소스 IP 주소를
10.128.0.10에서 공개 NAT IP 주소 (예:203.0.113.1)로 변환한 후 인터넷으로 전달합니다. - 응답 처리: 응답은 공개 Cloud NAT IP 주소로 반환되며 Cloud NAT는 이를 다시
10.128.0.10호스트 노드 IP 주소로 역변환합니다. 그런 다음 노드는 호스트 노드 IP 주소를 다시 포드 IP 주소(10.4.0.5)로 역변환하고 이를 포드 컨테이너에 전달합니다.
Cloud Cloud Service Mesh (CSM)를 사용한 트래픽 흐름
워크로드가 Cloud Service Mesh를 사용하는 경우 트래픽 라우팅은 다음과 같이 동작합니다.
- 사이드카 프록시 또는 사이드카리스 CNI 리디렉션: 애플리케이션 컨테이너의 아웃바운드 패킷은 노드의 네트워크 네임스페이스에 도달하기 전에 메시에서 가로챕니다 (Envoy와 같은 사이드카 프록시를 사용하거나 ebpf 기반 또는 CNI 리디렉션을 통해).
- 정책 적용: 메시가 승인 및 이그레스 정책을 기반으로 연결이 허용되는지 확인합니다.
- 이그레스 라우팅:
- Cloud Service Mesh 이그레스 게이트웨이를 사용하여 트래픽이 전달되는 경우 노드를 나가는 패킷의 소스 IP 주소는 원래 포드가 아닌 이그레스 게이트웨이의 노드 또는 포드의 IP 주소에 해당합니다.
- 트래픽이 외부 엔드포인트로 직접 라우팅되는 경우 패킷이 프록시를 종료하고 표준 호스트 노드 네트워크 스택을 통해 라우팅됩니다. 이 경우 이 문서의 앞부분에서 설명한
ip-masq-agent정책 및 Cloud NAT 구성이 이그레스 트래픽에 계속 적용됩니다.
- Cloud Service Mesh에서 라우팅, 게이트웨이 구성, 외부 트래픽 관리에 대한 자세한 내용은 Cloud Service Mesh 문서를 참고하세요.
연결 문제 해결 및 격리
포드가 외부 엔드포인트에 연결할 수 없고 서비스 메시를 사용하는 경우 문제가 서비스 메시 구성에 있는지 아니면 기본 GKE 라우팅에 있는지 격리해야 합니다. 문제를 격리하려면 다음 방법을 사용하세요.
- 서비스 메시 우회: 사이드카 삽입이 사용 중지된 네임스페이스에 임시 클라이언트 포드를 배포하거나 포드 사양에서
sidecar.istio.io/inject: "false"주석을 사용하여 테스트 워크로드의 삽입을 방지합니다. - 연결 테스트: 메시가 아닌 포드에서 외부 대상에 연결을 시도합니다 (예:
curl,ping또는nc사용). - 결과 분석:
- 연결에 성공한 경우: 기본 GKE 네트워크 라우팅,
ip-masq-agent규칙, Cloud NAT 게이트웨이가 올바르게 구성되었습니다. 연결 차단은 Cloud Service Mesh 정책, 누락된 이그레스 규칙 또는 mTLS 규칙으로 인해 발생합니다. 문제 해결에 대한 자세한 내용은 Cloud Service Mesh 문서에서 Envoy를 사용하는 배포 문제 해결을 참고하세요. - 연결에 실패한 경우: 문제는 기본 네트워크 인프라 (예: IP 매스커레이딩, Cloud Router, Cloud NAT, VPC 방화벽 규칙 또는 온프레미스 방화벽)에 있습니다. 이 페이지의 단계에 따라 라우팅 구성을 확인하세요.
- 연결에 성공한 경우: 기본 GKE 네트워크 라우팅,
검사기를 사용하여 소스 IP 주소 범위 확인
라우터 또는 방화벽을 구성하기 전에 이 문서의 IP 매스커레이드 검사기를 사용하고 다음을 실행하세요.
ip-masq-agentConfigMap의 YAML 콘텐츠를 구성 필드에 붙여넣습니다.- 타겟 엔드포인트 (예: 온프레미스 데이터베이스 또는 외부 인터넷 서비스)의 대상 IP 주소를 입력합니다.
- 매스커레이드 확인 을 클릭합니다.
- 출력을 확인합니다.
- 매스커레이드됨: 패킷이 노드 IP 주소 범위를 소스로 사용합니다.
- 매스커레이드되지 않음: 패킷이 포드 IP 주소 범위를 소스로 사용합니다.
엔드포인트에 대한 연결 구성
IP 매스커레이드 검사기 결과를 기반으로 대상 유형에 따라 네트워킹 경로와 게이트웨이를 구성합니다.
온프레미스 엔드포인트 (VPN 또는 Interconnect)
Cloud NAT는 온프레미스 연결에 사용되지 않지만 IP 매스커레이드 검사기로 확인한 소스 IP 주소 범위를 기반으로 라우터와 방화벽을 구성해야 합니다.
트래픽이 매스커레이드되는 경우 (소스가 노드 IP 주소):
- Cloud Router: Cloud Router 공지에 GKE 클러스터 서브넷의 기본 IP 주소 범위 가 포함되어 있는지 확인합니다.
- 온프레미스 라우터 또는 방화벽: GKE 노드 IP 주소 범위 에서 수신 트래픽을 허용하고 처리하도록 온프레미스 라우터와 방화벽을 구성합니다.
트래픽이 매스커레이드되지 않는 경우 (소스가 포드 IP 주소):
- Cloud Router: Cloud Router에서 커스텀 경로 공지를 구성하여 GKE 포드 보조 IP 주소 범위 를 온프레미스 네트워크에 공지합니다.
- 온프레미스 라우터 또는 방화벽: GKE 포드 IP 주소 범위 에서 시작된 트래픽을 허용하도록 온프레미스 라우팅 테이블과 방화벽을 구성하고 반환 경로가 VPC에 다시 공지되도록 합니다.
인터넷 엔드포인트 (Cloud NAT)
공개 인터넷 엔드포인트로 트래픽을 라우팅할 때는 VPC 내부에 Cloud NAT 게이트웨이를 구성해야 합니다.
- 콘솔에서 Cloud NAT 페이지로 이동합니다. Cloud de Confiance
- Cloud NAT 게이트웨이를 선택하거나 만듭니다.
- Cloud NAT 소스에서 게이트웨이가 GKE 서브넷 범위를 처리하는 방법을 선택합니다.
- 트래픽이 매스커레이드되는 경우 (소스가 노드 IP 주소): 서브넷의 기본 IP 주소 범위 를 선택합니다. 상용 GKE 배포는 일반적으로 기본적으로 이 옵션을 사용합니다.
- 트래픽이 매스커레이드되지 않는 경우(소스가 포드 IP 주소): 기본 및 보조 IP 주소 범위 를 선택하거나 GKE 포드 보조 범위를 명시적으로 지정해야 합니다. 기본 범위만 선택하면 GKE 포드 인터넷 트래픽이 차단됩니다.