Descripción general
En este caso de uso, crearemos una puerta de enlace de Cloud NAT con varias IPs de salida asignadas. Estas puertas de enlace dirigirán el tráfico de salida de los pods y las VMs que coincidan con las etiquetas coincidentes configuradas en la puerta de enlace. La puerta de enlace asignará automáticamente una IP de salida a cada extremo que pueda salir del tráfico a través de ella.

Requisitos previos
Antes de configurar una puerta de enlace, debes obtener los permisos de Identity and Access Management (IAM) adecuados, asegurarte de que tu proyecto tenga una política de red apropiada y habilitar el tráfico de salida.
Consulta Antes de comenzar a usar Cloud NAT para obtener más detalles.
La puerta de enlace de Cloud NAT usa subredes externas leaf como entradas. Para obtener más información sobre cómo configurar subredes externas para Cloud NAT, consulta Crea subredes externas para Cloud NAT.
Asegúrate de que la configuración del pod o la VM sea compatible
Como se mencionó en la Descripción general de NAT, Cloud NAT no es compatible con la configuración de salida predeterminada del proyecto. Asegúrate de que ningún pod o VM que desees usar con Cloud NAT tenga la etiqueta egress.networking.gke.io/enabled:true.
De forma predeterminada, una configuración de acceso externo a la máquina virtual (VMEA) configura una VM para que el tráfico de salida use la configuración de salida predeterminada del proyecto. En otras palabras, agrega automáticamente la etiqueta egress.networking.gke.io/enabled:"true" a la VM. Si dicha VM también está configurada para el tráfico de salida con una puerta de enlace de Cloud NAT, se produce una colisión entre las configuraciones de NAT. Para evitar esta colisión, asegúrate de que cada VMEA asociada a una VM configurada para enviar tráfico saliente a través de una puerta de enlace de Cloud NAT tenga la anotación egress.networking.gke.io/use-cloud-nat:"true".
Luego, la VM asociada enviará tráfico de salida exclusivamente a través de la puerta de enlace de Cloud NAT.
Crea las puertas de enlace de Cloud NAT
En el siguiente ejemplo, se define una puerta de enlace de Cloud NAT con dos subredes externas de hoja (subnet-1 y subnet-2). La puerta de enlace usará todas las IPs de esas subredes, una de subnet-1 y cuatro de subnet-2, y las asignará automáticamente a los extremos de cada VM o Pod con las etiquetas especificadas. Se puede asignar la misma IP de salida a varios Pods o VMs.
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
Verifica el estado de las puertas de enlace
Ejecuta el siguiente comando kubectl para verificar el estado de las puertas de enlace.
export MGMT_KUBECONFIG=<path_to_management_kubeconfig>
kubectl get cloudnatgateways gateway-1 -n project-1 --kubeconfig "${MGMT_KUBECONFIG:?}"
Si se configuró correctamente, el campo de condición de estado de la puerta de enlace de Cloud NAT debería mostrar la condición del tipo Ready establecida en true y las subredes marcadas como OK, como se muestra en el siguiente ejemplo de resultado.
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
El estado de la puerta de enlace de Cloud NAT contiene 4 condiciones de los siguientes tipos:
Ready: Esta condición resume el estado de la puerta de enlace de Cloud NAT. Esta condición se establece como verdadera si la puerta de enlace está completamente configurada.SubnetsReady: Esta condición indica si las subredes asignadas a la puerta de enlace son válidas.PerimeterConfigurationReady: Esta condición indica si ya se configuró el perímetro (p. ej., IPs externas asignadas a nodos externos, etc.).EgressRoutesReady: Esta condición indica si ya se configuraron las rutas para el tráfico de salida desde los extremos de origen.
Tráfico de prueba
Para probar el tráfico, podemos ejecutar un comando curl desde uno de los Pods o las VMs asignados a la puerta de enlace hacia un extremo externo. El extremo receptor debería ver una de las IPs de salida asociadas con la puerta de enlace.