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. -
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
- Sigue las instrucciones para autorizar a la CLI de gcloud a usar tu cuenta de Google Cloud.
- Crea una configuración nueva o selecciona una existente.
- Elige un proyecto de Google Cloud.
- Elige una zona de Compute Engine predeterminada.
- Elige una región de Compute Engine predeterminada.
- Establece tu ID del proyecto predeterminado:
gcloud config set project PROJECT_ID
- Configura la región de Compute Engine predeterminada (por ejemplo,
us-central1
):gcloud config set compute/region COMPUTE_REGION
- Configura la zona de Compute Engine predeterminada (por ejemplo,
us-central1-c
):gcloud config set compute/zone COMPUTE_ZONE
- Actualiza
gcloud
a la versión más reciente:gcloud components update
gcloud init
gcloud config
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:
Obtén las credenciales para su clúster.
gcloud container clusters get-credentials CLUSTER-NAME
Reemplaza
CLUSTER_NAME
por el nombre del clúster.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
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:
Obtén las credenciales para su clúster.
gcloud container clusters get-credentials CLUSTER_NAME
Reemplaza
CLUSTER_NAME
por el nombre del clúster.Edita la política de NAT de salida predeterminada:
kubectl edit egressnatpolicies default
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.
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:
- Puedes editar la política predeterminada existente.
- Puedes crear una política de NAT de salida nueva.
Para crear una nueva política de NAT de salida que no forma parte de la política predeterminada, realiza los siguientes pasos:
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
yCIDR_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 listadestinations
con el mismo formato.
Implementa la política nueva:
kubectl create -f egress_nat_policy.yaml
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?
- Obtén información para crear un clúster nativo de la VPC.
- Lee la descripción general de redes de GKE.
- Obtén información sobre cómo configurar redes autorizadas.