Google Distributed Cloud (GDC) 에어 갭은 커스텀 워크로드에 더 큰 유연성을 제공하는 애플리케이션 운영자 그룹에서 관리하는 단일 프로젝트, 셀프서비스 Kubernetes 클러스터인 표준 클러스터를 지원합니다. 이 페이지에서는 표준 클러스터에 Cloud NAT를 설정하는 방법을 설명하고 이 클러스터 유형의 NAT 구성에 대한 몇 가지 제약조건과 제한사항을 설명합니다.
시작하기 전에
게이트웨이를 설정하기 전에 적절한 Identity and Access Management (IAM) 권한을 가져오고 프로젝트에 적절한 네트워크 정책이 있는지 확인하고 이그레스를 사용 설정해야 합니다.
자세한 내용은 Cloud NAT 시작하기 전에 를 참조하세요.
Cloud NAT 게이트웨이는 외부 leaf 서브넷을 입력으로 사용합니다. Cloud NAT의 외부 서브넷 구성에 대한 자세한 내용은
Cloud NAT의 외부 서브넷 만들기를 참조하세요.
개요

Cloud NAT 게이트웨이는 표준 클러스터에서 실행되는 워크로드의 이그레스 트래픽을 처리하도록 두 가지 방법으로 구성할 수 있습니다.
- 프로젝트 범위 게이트웨이: 공유 클러스터와 표준 클러스터를 모두 포함하여 프로젝트 내 클러스터의 모든 워크로드 트래픽에 적용되는 게이트웨이입니다. 이는 Cloud NAT 게이트웨이 만들기에 설명된 구성입니다.
- 클러스터 범위 게이트웨이: 지정된 단일 표준 클러스터 내의 워크로드에만 적용되는 게이트웨이입니다. 이 페이지에 설명된 게이트웨이 유형입니다.
이 두 가지 방법은 워크로드에만 적용되며 표준 클러스터를 구성하는 노드에는 적용되지 않습니다. 표준 클러스터를 구성하는 노드에
Cloud NAT를 사용 설정하려면 표준 클러스터 객체에 라벨
cluster.gdc.goog/enable-node-egress-to-outside-the-org: "true"을 추가합니다.
Cloud NAT 게이트웨이 만들기
표준 클러스터의 게이트웨이를 만드는 프로세스는 프로젝트 범위 Cloud NAT 게이트웨이를 만드는 것과 동일합니다.
이 경우 표준 클러스터 Cloud NAT의 클러스터 필터링 기능에 중점을 두고 첫 번째 시나리오와 유사한 설정을 만들지만 게이트웨이를 통해 트래픽을 라우팅하는 엔드포인트가 있는 표준 클러스터 user-vc-1의 이름을 지정합니다. 따라서 이 게이트웨이는 이 특정 클러스터로 범위가 지정됩니다.
apiVersion: networking.gdc.goog/v1
kind: CloudNATGateway
metadata:
namespace: project-1
name: gateway-1
spec:
workloadSelector: # Immutable
labelSelector:
workloads:
matchLabels:
app: aa
clusters:
matchLabels:
kubernetes.io/metadata.name: user-vc-1
subnetRefs: # Mutable
- subnet-1
- subnet-2
이 구성은 표준 클러스터 user-vc-1의 모든 네임스페이스에서 라벨 app: aa가 있는 모든 워크로드를 선택합니다.
게이트웨이 상태 확인
다음 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: # Immutable
labelSelector:
workloads:
matchLabels:
app: aa
clusters:
matchLabels:
kubernetes.io/metadata.name: user-vc-1
subnetRefs: # Mutable
- 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
트래픽 테스트
표준 클러스터의 게이트웨이에 할당된 포드 또는 VM 중 하나에서 외부 엔드포인트로 curl 명령어를 실행하여 트래픽을 테스트합니다. 수신 엔드포인트에 게이트웨이와 연결된 이그레스 IP 중 하나의 패킷이 표시됩니다. 라벨이 동일한 공유 클러스터의 엔드포인트는 이 게이트웨이를 사용하여 트래픽을 이그레스할 수 없습니다.
클러스터별 게이트웨이 구성의 제약조건
클러스터 범위 게이트웨이의 워크로드 라벨 일치자(workloadSelector.labelSelector.workloads.matchLabels)는 다른 프로젝트 범위 게이트웨이의 워크로드 라벨 일치자와 겹치지 않아야 합니다. Cloud NAT 구성의 제약조건
에서 설명한 대로
workloadSelector.labelSelector.workloads.matchLabels는 동일한 프로젝트 및 영역의
게이트웨이 간에 겹치지 않아야 합니다.
Cloud NAT 구성의 제약조건 에 나열된 다른 제약조건도 클러스터 범위 게이트웨이 구성에 적용됩니다.