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 que has 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 CLI de gcloud, obtén la versión más reciente ejecutando el comando
gcloud components update. Es posible que las versiones anteriores de la interfaz de línea de comandos de gcloud no admitan la ejecución de los comandos de este documento.
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-NAMESustituye
CLUSTER_NAMEpor el nombre del clúster.Comprueba si la política de NAT de salida se está ejecutando:
kubectl get crds egressnatpolicies.networking.gke.ioSi 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:43ZObtén la lista de las políticas de NAT de salida creadas:
kubectl get egressnatpoliciesEl 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_NAMESustituye
CLUSTER_NAMEpor el nombre de tu clúster.Edita la política de NAT de salida predeterminada:
kubectl edit egressnatpolicies defaultAñade o quita destinos con la acción NoSNAT como atributo
cidren 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/24Cuando 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 eventsEl 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_2Haz los cambios siguientes:
POLICY_NAME: el nombre de la nueva política.CIDR_1yCIDR_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 listadestinationssiguiendo el mismo formato.
Implementa la nueva política:
kubectl create -f egress_nat_policy.yamlPara verificar que la política se ha implementado, comprueba los eventos de Kubernetes:
kubectl get eventsEl 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.