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:

  • Habilita la API de Google Kubernetes Engine.
  • Habilitar la API de Google Kubernetes Engine
  • Si deseas usar Google Cloud CLI para esta tarea, instala y, luego, inicializa gcloud CLI. Si ya instalaste gcloud CLI, ejecuta gcloud components update para obtener la versión más reciente.
  • Asegúrate de tener un clúster de Autopilot que ejecute la versión 1.23.4-gke.1600 o posterior, o 1.22.7-gke.1500 o posterior. Tu clúster debe tener GKE Dataplane V2 habilitado.

  • Asegúrate de que tu clúster tenga una carga de trabajo en ejecución. Para obtener más información, consulta cómo solicitar recursos.

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"
    

    Los cambios pueden tardar hasta tres minutos en aplicarse.

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?