Gateways do Cloud NAT para clusters padrão

O Google Distributed Cloud (GDC) air-gapped é compatível com clusters padrão, um cluster Kubernetes de self-service de projeto único gerido pelo grupo de operadores de aplicações que oferece maior flexibilidade para cargas de trabalho personalizadas. Esta página aborda como configurar o 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 uma gateway, tem de receber as autorizações de gestão de identidade e de acesso (IAM) adequadas, garantir que o seu projeto tem uma política de rede adequada e ativar o tráfego de saída.

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

A gateway do 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 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 do Cloud NAT podem ser configuradas para processar o tráfego de saída das cargas de trabalho em execução em clusters padrão de duas formas:

  • Gateway com âmbito do projeto: uma gateway que se aplica a todo o tráfego de cargas de trabalho em clusters num projeto, que inclui todos os clusters partilhados e padrão. Esta é a configuração descrita no artigo Crie uma gateway do Cloud NAT.
  • Gateway com âmbito do cluster: uma 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 a gateway do Cloud NAT

O processo de criação de uma gateway para um cluster padrão permanece o mesmo que a 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 clusters padrão e criamos uma configuração semelhante ao primeiro cenário, mas especificando o nome do cluster padrão user-vc-1 onde se encontram os pontos finais que encaminharão o tráfego através da gateway. Como resultado, o âmbito desta gateway será 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 da gateway

Execute o seguinte comando kubectl para verificar o estado das gateways.

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 da gateway do Cloud NAT deve apresentar a condição do tipo Ready definida como true e as sub-redes marcadas como OK, conforme mostrado no seguinte exemplo de resultado:

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

Teste o tráfego

Para testar o tráfego, emita um comando curl a partir de um dos pods ou VMs atribuídos à gateway no cluster padrão para um ponto final externo. O ponto final de receção deve ver um pacote de um dos IPs de saída associados à gateway. Os pontos finais em clusters partilhados com as mesmas etiquetas NÃO podem encaminhar o tráfego de saída através desta gateway.

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

Os correspondentes de etiquetas de cargas de trabalho (workloadSelector.labelSelector.workloads.matchLabels) de gateways com âmbito do cluster NÃO SE DEVEM SOBREPOR aos correspondentes de etiquetas de cargas de trabalho de outras gateways com âmbito do projeto. Conforme abordado em Restrições na configuração do Cloud NAT, o workloadSelector.labelSelector.workloads.matchLabels não se deve sobrepor entre gateways no mesmo projeto e zona.

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