Usa la política de NAT de salida para configurar el enmascaramiento de IP en clústeres Autopilot


En esta página, se explica cómo configurar clústeres creados en el modo Autopilot de Google Kubernetes Engine (GKE) para realizar el enmascaramiento de IP con la política de NAT de salida. Para obtener más información sobre el enmascaramiento de IP en modo Standad de GKE, consulta Configura un agente de enmascaramiento de IP.

Descripción general

La política de NAT de salida de GKE te permite configurar el comportamiento de enmascaramiento de IP para los clústeres Autopilot.

GKE admite dos políticas de NAT de salida generadas de forma automática:

  • Administradas por GKE que son fijas y no se pueden editar.
  • Políticas predeterminadas que se pueden editar.

En esta página, se muestra cómo editar e implementar una política de NAT de salida mediante la edición de la política predeterminada o la creación de una política de NAT de salida. En esta página, también se muestra cómo borrar una política de NAT de salida creada.

Si deseas obtener más información sobre el comportamiento de las políticas de NAT de salida, consulta el comportamiento de enmascaramiento de tráfico para clústeres Autopilot.

Antes de comenzar

Antes de comenzar, asegúrate de haber realizado las siguientes tareas:

  • Asegúrate de que habilitaste la API de Google Kubernetes Engine.
  • Habilitar la API de Google Kubernetes Engine
  • Asegúrate de que instalaste Google Cloud CLI.
  • Establece la configuración predeterminada de Google Cloud CLI para tu proyecto mediante uno de los siguientes métodos:
    • Usa gcloud init si deseas ver una explicación sobre cómo configurar los valores predeterminados del proyecto.
    • Usa gcloud config para configurar el ID, la zona y la región del proyecto de manera individual.

    gcloud init

    1. Ejecuta gcloud init y sigue las instrucciones:

      gcloud init

      Si usas SSH en un servidor remoto, usa la marca --console-only para evitar que el comando abra un navegador:

      gcloud init --console-only
    2. Sigue las instrucciones para autorizar a la CLI de gcloud a usar tu cuenta de Google Cloud.
    3. Crea una configuración nueva o selecciona una existente.
    4. Elige un proyecto de Google Cloud.
    5. Elige una zona de Compute Engine predeterminada.
    6. Elige una región de Compute Engine predeterminada.

    gcloud config

    1. Establece tu ID del proyecto predeterminado:
      gcloud config set project PROJECT_ID
    2. Configura la región de Compute Engine predeterminada (por ejemplo, us-central1):
      gcloud config set compute/region COMPUTE_REGION
    3. Configura la zona de Compute Engine predeterminada (por ejemplo, us-central1-c):
      gcloud config set compute/zone COMPUTE_ZONE
    4. Actualiza gcloud a la versión más reciente:
      gcloud components update

    Cuando configuras las ubicaciones predeterminadas, puedes evitar errores en la CLI de gcloud como el siguiente: One of [--zone, --region] must be supplied: Please specify location.

Requisitos

Para usar la política de NAT de salida de GKE, se requiere lo siguiente:

  • Un clúster en la versión 1.23.4-gke.1600 o posterior, o 1.22.7-gke.1500 o posterior.
  • Un clúster en modo Autopilot con GKE Dataplane V2 habilitado.

Verifica el estado de la política de NAT de salida

Puedes verificar si el clúster ejecuta la definición de recurso personalizado (CRD) de la política de NAT de salida mediante la herramienta de Google Cloud CLI:

  1. Obtén las credenciales para su clúster.

    gcloud container clusters get-credentials CLUSTER-NAME
    

    Reemplaza CLUSTER_NAME por el nombre del clúster.

  2. Verifica si la política de NAT de salida se está ejecutando:

    kubectl get crds egressnatpolicies.networking.gke.io
    

    Si la política de NAT de salida está en ejecución, el resultado es similar al siguiente:

     NAME                                  CREATED AT
     egressnatpolicies.networking.gke.io   2022-03-16T21:05:43Z
    
  3. Obtén la lista de las políticas de NAT de salida creadas:

    kubectl get egressnatpolicies
    

    El resultado es similar a este:

      NAME             AGE
      default          44h
      gke-bbfa6c0e-1   44h
    

Edita la política predeterminada existente

GKE admite dos políticas de NAT generadas automáticamente, la política predeterminada y la política administrada por GKE. La política predeterminada se puede editar y configura los destinos predeterminados sin enmascarar.

Para editar la política predeterminada existente, sigue estos pasos:

  1. Obtén las credenciales para su clúster.

    gcloud container clusters get-credentials CLUSTER_NAME
    

    Reemplaza CLUSTER_NAME por el nombre del clúster.

  2. Edita la política de NAT de salida predeterminada:

    kubectl edit egressnatpolicies default
    
  3. Agrega o quita destinos con la acción NoSNAT como un atributo cidr en formato CIDR:

      apiVersion: networking.gke.io/v1
      kind: EgressNATPolicy
      metadata:
        name: default
      spec:
        action: NoSNAT
        destinations:
        - cidr:  10.0.0.0/8
        - cidr:  172.16.0.0/12
        - cidr:  192.168.0.0/16
        - cidr:  240.0.0.0/4
        - cidr:  192.0.2.0/24
        - cidr:  198.51.100.0/24
        - cidr:  203.0.113.0/24
        - cidr:  100.64.0.0/10
        - cidr:  198.18.0.0/15
        - cidr:  192.0.0.0/24
        - cidr:  192.88.99.0/24
    

    Cuando se envían paquetes a estos destinos, tu clúster no enmascara las fuentes de las direcciones IP y conserva las direcciones IP del Pod de origen.

  4. Para verificar que la política predeterminada editada se haya implementado, revisa los eventos de Kubernetes:

    kubectl get events
    

    El resultado es similar a este:

    LAST SEEN   TYPE     REASON           OBJECT                    MESSAGE
    13s         Normal   EnsuringPolicy   egressnatpolicy/default   Ensuring IP masquerade config for policy "default"
    

Implementa una nueva política de NAT de salida

Para agregar destinos nuevos con la acción NoSNAT, puedes usar una de las siguientes opciones:

Para crear una nueva política de NAT de salida que no forma parte de la política predeterminada, realiza los siguientes pasos:

  1. Guarda el siguiente manifiesto como egress_nat_policy.yaml:

    kind: EgressNATPolicy
    apiVersion: networking.gke.io/v1
    metadata:
      name: POLICY_NAME
    spec:
      action: NoSNAT
      destinations:
      - cidr: CIDR_1
      - cidr: CIDR_2
    

    Reemplaza lo siguiente:

    • POLICY_NAME: El nombre de la política nueva.
    • CIDR_1 y CIDR_2: Los rangos de direcciones IP en formato CIDR. Cuando se envían paquetes a estos destinos, tu clúster no enmascara las fuentes de las direcciones IP y conserva las direcciones IP del Pod de origen. Si necesitas más de dos CIDR, agrega más entradas a la lista destinations con el mismo formato.
  2. Implementa la política nueva:

    kubectl create -f egress_nat_policy.yaml
    
  3. Para verificar que la política se haya implementado, revisa los eventos de Kubernetes:

    kubectl get events
    

    El resultado es similar a este:

    LAST SEEN   TYPE     REASON           OBJECT                              MESSAGE
    13s         Normal   EnsuringPolicy   egressnatpolicy/mypolicy            Ensuring IP masquerade config for policy "mypolicy"
    

Borra una política de NAT de salida

Para borrar por completo una política de NAT de salida, ejecuta el siguiente comando:

kubectl delete egressnatpolicies POLICY_NAME

Reemplaza POLICY_NAME por el nombre de la política que deseas borrar.

¿Qué sigue?