Vista geral
Neste exemplo de utilização, vamos criar um gateway Cloud NAT com vários IPs de saída atribuídos. Estes gateways vão encaminhar o tráfego dos pods e das VMs que correspondem às etiquetas correspondentes configuradas no gateway. O gateway atribui automaticamente um IP de saída a cada ponto final que pode enviar tráfego através dele.

Pré-requisitos
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.
Garanta uma configuração de VM ou pod compatível
Conforme mencionado na vista geral da NAT, a NAT da nuvem não é compatível
com a configuração de saída do projeto predefinida. Certifique-se de que qualquer pod ou VM que queira usar com o Cloud NAT NÃO tem a etiqueta egress.networking.gke.io/enabled:true.
Por predefinição, uma configuração de acesso externo da máquina virtual (VMEA) configura uma VM para o tráfego de saída
através da configuração de saída do projeto predefinido. Por outras palavras, adiciona automaticamente a etiqueta egress.networking.gke.io/enabled:"true" à VM. Se a VM em questão também estiver configurada para enviar tráfego através de um gateway Cloud NAT, isto resulta numa colisão entre as configurações de NAT. Para evitar esta colisão: para cada VMEA associada a uma VM configurada para enviar tráfego através de um gateway do Cloud NAT, certifique-se de que a VMEA associada a essa VM tem a anotação egress.networking.gke.io/use-cloud-nat:"true".
A VM associada vai, então, enviar tráfego exclusivamente através do gateway Cloud NAT.
Crie os gateways do Cloud NAT
O exemplo seguinte define um gateway Cloud NAT com duas sub-redes externas de folhas (subnet-1 e subnet-2). O gateway vai usar todos os IPs nessas sub-redes, um de subnet-1 e quatro de subnet-2, e atribuí-los automaticamente aos pontos finais de cada VM ou pod com as etiquetas especificadas. Vários pods ou VMs podem receber o mesmo IP de saída atribuído.
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
Verifique o estado dos gateways
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:
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
O estado da gateway do Cloud NAT contém 4 condições dos seguintes tipos:
Ready: esta condição resume o estado da gateway do Cloud NAT. Esta condição é definida como verdadeira se o gateway estiver totalmente configurado.SubnetsReady: esta condição indica se as sub-redes atribuídas ao gateway são válidas.PerimeterConfigurationReady: esta condição indica se a configuração do perímetro já foi configurada (por exemplo, IPs externos atribuídos a nós virados para o exterior, etc.).EgressRoutesReady: esta condição indica se as rotas para o tráfego de saída dos pontos finais de origem já foram configuradas.
Tráfego de teste
Podemos testar o tráfego emitindo um comando curl a partir de um dos pods ou VMs
atribuídos ao gateway em direção a um ponto final externo. O ponto final de receção deve ver um dos IPs de saída associados ao gateway.