Pasarelas de Cloud NAT para clústeres estándar

Google Distributed Cloud (GDC) aislado admite clústeres estándar, un clúster de Kubernetes de autoservicio y un solo proyecto gestionado por el grupo de operadores de aplicaciones que ofrece más flexibilidad para las cargas de trabajo personalizadas. En esta página se explica cómo configurar Cloud NAT para clústeres estándar y se describen algunas restricciones y limitaciones en las configuraciones de NAT para este tipo de clúster.

Antes de empezar

Antes de configurar una pasarela, debes obtener los permisos de gestión de identidades y accesos (IAM) adecuados, asegurarte de que tu proyecto tiene una política de red adecuada y habilitar la salida.

Consulta más información en el artículo Antes de empezar a usar Cloud NAT.

La pasarela de Cloud NAT usa subredes leaf externas como entradas. Para obtener más información sobre cómo configurar subredes externas para Cloud NAT, consulta el artículo Crear subredes externas para Cloud NAT.

Información general

Diagrama que muestra la configuración de una pasarela de Cloud NAT para un clúster estándar

Las pasarelas de Cloud NAT se pueden configurar para gestionar el tráfico de salida de las cargas de trabajo que se ejecutan en clústeres estándar de dos formas:

  • Pasarela con ámbito de proyecto: pasarela que se aplica a todo el tráfico de cargas de trabajo en clústeres de un proyecto, incluidos todos los clústeres compartidos y estándar. Esta es la configuración que se describe en el artículo Crear una pasarela de Cloud NAT.
  • Pasarela con ámbito de clúster: pasarela que se aplica solo a las cargas de trabajo de un clúster estándar especificado. Este es el tipo de pasarela que se muestra en esta página.

Estos dos métodos son exclusivamente para cargas de trabajo y no se aplican a los nodos que componen un clúster estándar. Para habilitar Cloud NAT en los nodos que forman un clúster estándar, añade la etiqueta cluster.gdc.goog/enable-node-egress-to-outside-the-org: "true" al objeto de clúster estándar.

Crear la pasarela de Cloud NAT

El proceso de creación de una pasarela para un clúster estándar sigue siendo el mismo que el de cualquier pasarela de Cloud NAT con ámbito de proyecto.

En este caso, nos centraremos en la función de filtrado de clústeres de Cloud NAT para clústeres estándar y crearemos una configuración similar al primer escenario, pero especificando el nombre del clúster estándar user-vc-1 donde se encuentran los endpoints que enrutarán el tráfico a través de la pasarela. Como resultado, esta pasarela tendrá un ámbito específico para este clúster.

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 configuración seleccionará todas las cargas de trabajo con las etiquetas app: aa en todos los espacios de nombres del clúster estándar user-vc-1.

Comprobar el estado de la pasarela

Para comprobar el estado de las pasarelas, ejecuta el siguiente comando kubectl.

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

Si se ha configurado correctamente, el campo de condición de estado de la pasarela de Cloud NAT debe mostrar la condición del tipo Ready establecida en true y las subredes marcadas como OK, tal como se muestra en el siguiente ejemplo de salida:

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

Probar el tráfico

Para probar el tráfico, ejecuta un comando curl desde uno de los pods o las VMs asignados a la pasarela del clúster estándar hacia un endpoint externo. El endpoint receptor debería ver un paquete de una de las IPs de salida asociadas a la pasarela. Los endpoints de los clústeres compartidos con las mismas etiquetas NO PUEDEN enviar tráfico de salida mediante esta pasarela.

Restricciones en las configuraciones de pasarela específicas de clústeres

Los selectores de etiquetas de cargas de trabajo (workloadSelector.labelSelector.workloads.matchLabels) de las pasarelas con ámbito de clúster NO DEBEN SOLAPARSE con los selectores de etiquetas de cargas de trabajo de otras pasarelas con ámbito de proyecto. Como se indica en el artículo Restricciones en la configuración de Cloud NAT, los workloadSelector.labelSelector.workloads.matchLabels no deben solaparse entre las pasarelas del mismo proyecto y zona.

Las demás restricciones que se indican en el artículo Restricciones en la configuración de Cloud NAT también se aplican a las configuraciones de pasarela con ámbito de clúster.