개요
이 사용 사례에서는 여러 이그레스 IP가 할당된 Cloud NAT 게이트웨이를 만듭니다. 이러한 게이트웨이는 게이트웨이에 구성된 일치 라벨과 일치하는 포드 및 VM에서 트래픽을 이그레스합니다. 게이트웨이는 이를 통해 트래픽을 이그레스할 수 있는 각 엔드포인트에 이그레스 IP를 자동으로 할당합니다.

기본 요건
게이트웨이를 설정하기 전에 적절한 Identity and Access Management (IAM) 권한을 가져오고 프로젝트에 적절한 네트워크 정책이 있는지 확인하고 이그레스를 사용 설정해야 합니다.
자세한 내용은 Cloud NAT 시작하기 전에 를 참고하세요.
Cloud NAT 게이트웨이는 외부 leaf 서브넷을 입력으로 사용합니다. Cloud NAT의 외부 서브넷 구성에 대한 자세한 내용은
Cloud NAT의 외부 서브넷 만들기를 참고하세요.
호환되는 포드 또는 VM 구성 확인
NAT 개요에 설명된 대로 Cloud NAT는 기본 프로젝트 이그레스 구성과 호환되지 않습니다. Cloud NAT와 함께 사용하려는 포드 또는 VM에 egress.networking.gke.io/enabled:true 라벨이 없는지 확인합니다.
기본적으로 가상 머신 외부 액세스 (VMEA)는 기본 프로젝트 이그레스 구성을 사용하여 트래픽을 이그레스하도록 VM을 구성합니다. 즉, VM에 egress.networking.gke.io/enabled:"true" 라벨을 자동으로 추가합니다. 해당 VM이 Cloud NAT 게이트웨이를 사용하여 트래픽을 이그레스하도록 구성된 경우 NAT 구성 간에 충돌이 발생합니다. 이 충돌을 방지하려면 Cloud NAT 게이트웨이를 통해 트래픽을 이그레스하도록 구성된 VM과 연결된 모든 VMEA에 대해 해당 VM과 연결된 VMEA에 egress.networking.gke.io/use-cloud-nat:"true" 주석이 있는지 확인합니다.
그러면 연결된 VM이 Cloud NAT 게이트웨이를 통해서만 트래픽을 이그레스합니다.
Cloud NAT 게이트웨이 만들기
다음 예에서는 외부 리프 서브넷(subnet-1 및 subnet-2)이 두 개 있는 Cloud NAT 게이트웨이를 정의합니다. 게이트웨이는 이러한 서브넷의 모든 IP(subnet-1의 IP 1개와 subnet-2의 IP 4개)를 사용하고 지정된 라벨이 있는 각 VM 또는 포드의 엔드포인트에 자동으로 할당합니다. 여러 포드 또는 VM에 동일한 이그레스 IP가 할당될 수 있습니다.
apiVersion: networking.gdc.goog/v1
kind: CloudNATGateway
metadata:
namespace: project-1
name: gateway-1
spec:
workloadSelector: # Immutable
labelSelector:
workloads:
matchLabels:
app: aa
subnetRefs: # Mutable
- subnet-1
- subnet-2
게이트웨이 상태 확인
다음 kubectl 명령어를 실행하여 게이트웨이의 상태를 확인합니다.
export MGMT_KUBECONFIG=<path_to_management_kubeconfig>
kubectl get cloudnatgateways gateway-1 -n project-1 --kubeconfig "${MGMT_KUBECONFIG:?}"
올바르게 구성된 경우 Cloud NAT 게이트웨이의 상태 조건 필드에 Ready 유형의 조건이 true로 설정되고 서브넷이 OK로 표시되어야 합니다(다음 예시 출력 참고).
apiVersion: networking.gdc.goog/v1
kind: CloudNATGateway
metadata:
namespace: project-1
name: gateway-1
spec:
workloadSelector:
labelSelector:
workloads:
matchLabels:
app: aa
subnetRefs:
- subnet-1
- subnet-2
status:
conditions:
- lastTransitionTime: "2025-08-20T21:31:36Z"
message: ""
observedGeneration: 1
reason: Ready
status: "True"
type: Ready
- lastTransitionTime: "2025-08-20T21:31:36Z"
message: ""
observedGeneration: 1
reason: Ready
status: "True"
type: SubnetsReady
- lastTransitionTime: "2025-08-20T21:31:36Z"
message: ""
observedGeneration: 1
reason: Ready
status: "True"
type: PerimeterConfigurationReady
- lastTransitionTime: "2025-08-20T21:31:36Z"
message: ""
observedGeneration: 1
reason: Ready
status: "True"
type: EgressRoutesReady
subnets:
- name: subnet-1
status: OK
- name: subnet-2
status: OK
Cloud NAT 게이트웨이 상태에는 다음 유형의 4가지 조건이 포함됩니다.
Ready: 이 조건은 Cloud NAT 게이트웨이의 상태를 요약합니다. 게이트웨이가 완전히 설정된 경우 이 조건이 true로 설정됩니다.SubnetsReady: 이 조건은 게이트웨이에 할당된 서브넷이 유효한지 나타냅니다.PerimeterConfigurationReady: 이 조건은 경계 구성이 이미 구성되었는지 나타냅니다 (예: 외부를 향하는 노드에 할당된 외부 IP 등).EgressRoutesReady: 이 조건은 소스 엔드포인트에서 이그레스 트래픽으로의 경로가 이미 구성되었는지 나타냅니다.
트래픽 테스트
게이트웨이에 할당된 포드 또는 VM 중 하나에서 외부 엔드포인트를 향해 curl 명령어를 실행하여 트래픽을 테스트할 수 있습니다. 수신 엔드포인트에 게이트웨이와 연결된 이그레스 IP 중 하나가 표시됩니다.