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

기본 요건
게이트웨이를 설정하기 전에 적절한 ID 및 액세스 관리 (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에서 하나, subnet-2에서 네 개)를 사용하고 지정된 라벨이 있는 각 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 중 하나가 표시됩니다.