Gateways do Cloud NAT para clusters padrão

O Google Distributed Cloud (GDC) air-gapped suporta clusters padrão, um cluster do Kubernetes self-service de projeto único gerido pelo grupo de operadores da aplicação que oferece maior flexibilidade para cargas de trabalho personalizadas. Esta página aborda a configuração do Cloud NAT para clusters padrão e descreve algumas restrições e limitações nas configurações de NAT para este tipo de cluster.

Antes de começar

Antes de configurar um gateway, tem de obter as autorizações de gestão de identidade e de acesso (IAM) adequadas, certificar-se de que o seu projeto tem uma política de rede adequada e ativar a saída.

Consulte a secção Antes de começar a usar o Cloud NAT para ver detalhes.

O gateway Cloud NAT usa sub-redes leaf externas como entradas. Para mais informações sobre a configuração de sub-redes externas para o Cloud NAT, consulte o artigo Crie sub-redes externas para o Cloud NAT.

Vista geral

Diagrama que mostra uma configuração de gateway do Cloud NAT para um cluster padrão

As gateways NAT da nuvem podem ser configuradas para processar o tráfego de saída para as cargas de trabalho executadas em clusters padrão de duas formas:

  • Gateway ao nível do projeto: um gateway que se aplica a todo o tráfego de carga de trabalho em clusters num projeto, o que inclui todos os clusters partilhados e padrão. Esta é a configuração descrita no artigo Crie um gateway Cloud NAT.
  • Gateway com âmbito de cluster: um gateway que se aplica apenas a cargas de trabalho num único cluster padrão especificado. Este é o tipo de gateway demonstrado nesta página.

Estes dois métodos destinam-se exclusivamente a cargas de trabalho e não se aplicam aos nós que compõem um cluster padrão. Para ativar o Cloud NAT para os nós que formam um cluster padrão, adicione a etiqueta cluster.gdc.goog/enable-node-egress-to-outside-the-org: "true" ao objeto do cluster padrão.

Crie o gateway do Cloud NAT

O processo de criação de uma gateway para um cluster padrão permanece igual ao da criação de qualquer gateway do Cloud NAT com âmbito do projeto.

Neste caso, focamo-nos na capacidade de filtragem de clusters para o Cloud NAT de cluster padrão e criamos uma configuração semelhante à do primeiro cenário, mas especificando o nome do cluster padrão user-vc-1 onde se encontram os pontos finais que encaminham o tráfego através do gateway. Como resultado, este gateway vai ser limitado a este cluster específico.

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

Esta configuração seleciona todas as cargas de trabalho com as etiquetas app: aa em todos os espaços de nomes no cluster padrão user-vc-1.

Verifique o estado do gateway

Verifique o estado das gateways executando o seguinte comando kubectl.

export MGMT_KUBECONFIG=<path_to_management_kubeconfig>
kubectl get cloudnatgateways gateway-1 -n project-1 --kubeconfig "${MGMT_KUBECONFIG:?}"

Se estiver configurado corretamente, o campo de condição de estado do gateway Cloud NAT deve mostrar a condição do tipo Ready definida como true e as sub-redes marcadas como OK, conforme mostrado no seguinte exemplo de saída:

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

Tráfego de teste

Teste o tráfego emitindo um comando curl a partir de um dos pods ou VMs atribuídos ao gateway no cluster padrão em direção a um ponto final externo. O ponto final de receção deve ver um pacote de um dos IPs de saída associados ao gateway. Os pontos finais em clusters partilhados com as mesmas etiquetas NÃO PODEM enviar tráfego de saída através deste gateway.

Restrições nas configurações de gateway específicas do cluster

Os Workloads label matchers (workloadSelector.labelSelector.workloads.matchLabels) de gateways com âmbito de cluster NÃO SE DEVEM SOBREPOR aos Workloads label matchers de outros gateways com âmbito de projeto. Conforme abordado na secção Restrições na configuração do Cloud NAT, o workloadSelector.labelSelector.workloads.matchLabels não pode sobrepor-se entre gateways no mesmo projeto e zona.

As outras restrições indicadas na configuração do Cloud NAT também se aplicam às configurações de gateway com âmbito de cluster.