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


En esta página se explica cómo configurar los clústeres creados en el modo Autopilot de Google Kubernetes Engine (GKE) para realizar el enmascaramiento de IP con la política NAT de salida.

Para obtener más información sobre el enmascaramiento de IP en el modo Estándar de GKE, consulta Configurar un agente de enmascaramiento de IP.

Información general

La política de NAT de salida de GKE te permite configurar el comportamiento de la máscara de IP de los clústeres de Autopilot.

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

  • Gestionados por GKE, son fijos y no se pueden editar.
  • Políticas predeterminadas que se pueden editar.

En esta página se explica cómo editar e implementar una política de NAT de salida. Para ello, puedes editar la política predeterminada o crear una política de NAT de salida. En esta página también se explica cómo eliminar una política de NAT de salida creada.

Para obtener más información sobre el comportamiento de la política de NAT de salida, consulte el comportamiento de enmascaramiento del tráfico en clústeres de Autopilot.

Antes de empezar

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

  • Habilita la API de Google Kubernetes Engine.
  • Habilitar la API de Google Kubernetes Engine
  • Si quieres usar Google Cloud CLI para esta tarea, instálala y, a continuación, inicialízala. Si ya has instalado la gcloud CLI, obtén la versión más reciente ejecutando gcloud components update.
  • Asegúrate de que tienes un clúster de Autopilot con la versión 1.23.4-gke.1600 o una posterior, o la versión 1.22.7-gke.1500 o una 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.

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

Para comprobar si tu clúster ejecuta la definición de recurso personalizado (CRD) de la política de NAT de salida, usa la herramienta de la CLI de Google Cloud:

  1. Obtén las credenciales de tu clúster:

    gcloud container clusters get-credentials CLUSTER-NAME
    

    Sustituye CLUSTER_NAME por el nombre del clúster.

  2. Comprueba 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 será 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 debería ser similar al siguiente:

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

Editar la política predeterminada

GKE admite dos políticas de NAT generadas automáticamente: default policy y managed by GKE policy. La política predeterminada se puede editar y configura los destinos predeterminados sin enmascaramiento.

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

  1. Obtén las credenciales de tu clúster:

    gcloud container clusters get-credentials CLUSTER_NAME
    

    Sustituye CLUSTER_NAME por el nombre de tu clúster.

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

    kubectl edit egressnatpolicies default
    
  3. Añade o quita destinos con la acción NoSNAT como 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 los orígenes de las direcciones IP y conserva las direcciones IP de los pods de origen.

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

    kubectl get events
    

    El resultado debería ser similar al siguiente:

    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.

Desplegar una nueva política de NAT de salida

Para añadir destinos nuevos con la acción NoSNAT, puede usar una de las siguientes opciones:

Para crear una política de NAT de salida que no forme parte de la política predeterminada, sigue estos pasos:

  1. Guarda el siguiente archivo de 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
    

    Haz los cambios siguientes:

    • POLICY_NAME: el nombre de la nueva política.
    • CIDR_1 y CIDR_2: los intervalos de direcciones IP en formato CIDR. Cuando se envían paquetes a estos destinos, tu clúster no enmascara las fuentes de direcciones IP y conserva las direcciones IP de los pods de origen. Si necesitas más de dos CIDRs, añade más entradas a la lista destinationssiguiendo el mismo formato.
  2. Implementa la nueva política:

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

    kubectl get events
    

    El resultado debería ser similar al siguiente:

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

Eliminar una política de NAT de salida

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

kubectl delete egressnatpolicies POLICY_NAME

Sustituye POLICY_NAME por el nombre de la política que quieras eliminar.

.

Siguientes pasos