표준 클러스터용 Cloud NAT 게이트웨이

Google Distributed Cloud (GDC) 에어 갭은 표준 클러스터를 지원합니다. 표준 클러스터는 애플리케이션 운영자 그룹에서 관리하는 단일 프로젝트, 셀프 서비스 Kubernetes 클러스터로, 맞춤 워크로드에 더 큰 유연성을 제공합니다. 이 페이지에서는 표준 클러스터에 Cloud NAT를 설정하는 방법을 설명하고 이 클러스터 유형의 NAT 구성에 관한 몇 가지 제약 조건과 제한사항을 설명합니다.

시작하기 전에

게이트웨이를 설정하기 전에 적절한 ID 및 액세스 관리 (IAM) 권한을 획득하고, 프로젝트에 적절한 네트워크 정책이 있는지 확인하고, 이그레스를 사용 설정해야 합니다.

자세한 내용은 Cloud NAT 시작하기 전에를 참고하세요.

Cloud NAT 게이트웨이는 외부 leaf 서브넷을 입력으로 사용합니다. Cloud NAT용 외부 서브넷 구성에 관한 자세한 내용은 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 게이트웨이의 상태 조건 필드에 true로 설정된 Ready 유형의 조건과 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)는 다른 프로젝트 범위 게이트웨이의 워크로드 라벨 매처와 겹치면 안 됩니다(MUST NOT). Cloud NAT 구성의 제약 조건에서 설명한 대로 workloadSelector.labelSelector.workloads.matchLabels는 동일한 프로젝트 및 영역의 게이트웨이 간에 중복되어서는 안 됩니다.

Cloud NAT 구성의 제약 조건에 나열된 다른 제약 조건도 클러스터 범위 게이트웨이 구성에 적용됩니다.