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:
Obtén las credenciales de tu clúster:
gcloud container clusters get-credentials CLUSTER-NAME
Sustituye
CLUSTER_NAME
por el nombre del clúster.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
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:
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.Edita la política de NAT de salida predeterminada:
kubectl edit egressnatpolicies default
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.
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:
- Puede editar la política predeterminada.
- Puedes crear una política de NAT de salida.
Para crear una política de NAT de salida que no forme parte de la política predeterminada, sigue estos pasos:
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
yCIDR_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 listadestinations
siguiendo el mismo formato.
Implementa la nueva política:
kubectl create -f egress_nat_policy.yaml
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
- Consulta cómo crear un clúster nativo de VPC.
- Consulta la información general sobre la red de GKE.
- Aprende a configurar redes autorizadas.