En esta página, se describe cómo inhabilitar las reglas de firewall de VPC de entrada permitidas que crea GKE para los servicios de LoadBalancer.
Inhabilitar estas reglas de firewall creadas automáticamente para los servicios de LoadBalancer puede ser útil en las siguientes situaciones:
- Si tienes varios servicios de LoadBalancer en dos o más clústeres de GKE, administrar las reglas de firewall por tu cuenta puede ser más eficiente. Por ejemplo, en lugar de que GKE cree una regla de firewall única para cada Service LoadBalancer, las reglas de firewall que creaste de forma manual pueden permitir el tráfico entrante de varios Service LoadBalancer.
- Puedes usar políticas de firewall jerárquicas, políticas de firewall de red globales o políticas de firewall de red regionales en lugar de reglas de firewall de VPC. Las reglas de estas políticas de firewall admiten acciones adicionales, objetivos más flexibles, y funciones como ubicación geográfica, inteligencia contra amenazas, grupos de direcciones y FQDN.
Para inhabilitar las reglas de firewall creadas automáticamente para los servicios de LoadBalancer, debes especificar la marca --disable-l4-lb-firewall-reconciliation
cuando crees o actualices un clúster. La marca --disable-l4-lb-firewall-reconciliation
no afecta a otras
reglas de firewall de VPC creadas automáticamente, como las que facilitan
la comunicación entre nodos o las que permiten verificaciones de estado para tus servicios.
Requisitos
- Para usar reglas de firewall administradas por el usuario para los servicios de LoadBalancer, tus clústeres de GKE deben usar la versión 1.31.3-gke.105600 o una posterior.
Limitaciones
GKE admite inhabilitar la creación automática de reglas de firewall para estos tipos de servicios de LoadBalancer:
- Servicios LoadBalancer internos que usan la subdivisión de GKE
- Servicios de LoadBalancer externos basados en servicios de backend
No puedes inhabilitar la creación automática de reglas de firewall para estos tipos de servicios de LoadBalancer:
- Servicios LoadBalancer internos que no usan la subdivisión de GKE
- Servicios LoadBalancer externos basados en grupos de destino
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.
Estrategias para la administración manual de reglas de firewall
Antes de inhabilitar la creación automática de reglas de firewall de VPC para los servicios de LoadBalancer en tu clúster de GKE, trabaja con un administrador de seguridad para desarrollar una estrategia para configurar reglas de firewall de forma manual.
Decide qué tipo de política de firewall usar: una política de firewall jerárquica, una política de firewall de red global o una política de firewall de red regional. Para conocer los pasos para crear una política de firewall, consulta los siguientes artículos:
- Usa reglas y políticas jerárquicas de firewall
- Usa reglas y políticas de firewall de red global
- Usa reglas y políticas de firewall de red regionales
También puedes usar reglas de firewall de VPC, que no usan ninguna política.
Las reglas de firewall que creaste de forma manual deben ser reglas de permiso de entrada, ya que la regla de firewall de entrada de denegación implícita prohíbe el tráfico entrante. Cuando inhabilitas la creación automática de reglas de firewall de VPC, el tráfico entrante no llegará a tus nodos, a menos que hayas creado reglas de firewall de permiso de entrada que coincidan con el tráfico de tus servicios de LoadBalancer.
Según los parámetros de la regla de firewall, una sola regla de firewall de permiso de entrada puede aplicarse a uno o más servicios de LoadBalancer. Para cada regla de firewall de permiso de entrada que crees, define los siguientes parámetros:
Parámetro de destino: Asegúrate de que la regla de firewall incluya, al menos, todos los nodos del clúster que contiene los servicios de LoadBalancer. Los destinos compatibles dependen del tipo de política de firewall en el que se encuentra una regla o si usas una regla de firewall de VPC. Para obtener información sobre el parámetro de destino de una regla en una política de firewall, consulta Destinos.
Protocolos y puertos: Incluye todos los protocolos y puertos de destino que usan los servicios de LoadBalancer a los que se debe aplicar la regla de firewall.
Parámetro de destino: Puedes emplear una de las siguientes estrategias para el parámetro de destino:
- Incluye las direcciones IP de todos los servicios de LoadBalancer a los que se debe aplicar la regla de firewall en el parámetro de destino. Para encontrar la dirección IP de un servicio de LoadBalancer, usa el siguiente comando:
kubectl get svc LOADBALANCER_NAME \ -n NAMESPACE_NAME \ -o jsonpath='{.status.loadBalancer.ingress[0].ip}
- Puedes omitir el parámetro de destino. Cuando se omite el parámetro de destino, el parámetro de destino define los destinos de forma implícita. Para obtener más información, consulta Objetivos y direcciones IP para reglas de entrada.
Parámetro de origen: Especifica las fuentes (por ejemplo, direcciones IP) que usan los clientes que deben conectarse a los servicios de balanceador de cargas a los que se debe aplicar la regla de firewall.
Para conocer los pasos para crear reglas de firewall, consulta los siguientes artículos:
Para asegurarte de que las reglas de firewall que creaste de forma manual funcionen correctamente, ejecuta una prueba de conectividad del Network Intelligence Center (NIC). Cuando ejecutes la prueba de conectividad, haz lo siguiente:
- Establece el destino en la dirección IP del servicio de LoadBalancer.
- Establece la fuente en la dirección IP del cliente.
Para obtener más información, consulta Soluciona problemas de conectividad.
Inhabilita la creación de reglas de firewall de VPC para tus servicios de LoadBalancer
En esta sección, se describen los pasos para inhabilitar la creación automática de reglas de firewall de VPC para los servicios de LoadBalancer.
Crea un clúster de GKE nuevo con la creación de reglas de firewall de VPC inhabilitada
Para inhabilitar las reglas de firewall de VPC creadas automáticamente para los servicios de LoadBalancer en un clúster recién creado, crea el clúster con la marca
--disable-l4-lb-firewall-reconciliation
:gcloud
Autopilot:
gcloud container clusters create-auto CLUSTER_NAME \ --disable-l4-lb-firewall-reconciliation \ --cluster-version=VERSION
Estándar:
gcloud container clusters create CLUSTER_NAME \ --disable-l4-lb-firewall-reconciliation \ --enable-l4-ilb-subsetting \ --cluster-version=VERSION
Reemplaza lo siguiente:
CLUSTER_NAME
es el nombre del clúster nuevo.VERSION
: Es la versión de GKE.
Terraform
Para crear un clúster con la creación de reglas de firewall de VPC inhabilitada a través de Terraform, consulta el siguiente ejemplo:
resource "google_container_cluster" "primary" { provider = google-beta name = CLUSTER_NAME location = ZONE enable-l4-ilb-subsetting = true disable_l4_lb_firewall_reconciliation = true }
Crea un Service LoadBalancer externo o interno:
Verifica que GKE no cree una regla de firewall de permiso de entrada para el servicio de LoadBalancer. (Las reglas de firewall de permiso de entrada creadas automáticamente tienen nombres del siguiente formato:
k8s2-[cluster-id]-[namespace]-[service-name]-[suffixhash]
).El siguiente comando no muestra nada:
gcloud compute firewall-rules list --format="value(name)" | grep "k8s2"
Actualiza un clúster de GKE existente para inhabilitar la creación de reglas de firewall de VPC
Antes de inhabilitar la creación de reglas de firewall de VPC, ten en cuenta los siguientes puntos sobre la actualización de un clúster existente:
- Cuando actualizas un clúster existente para inhabilitar la creación de reglas de firewall de VPC, GKE no borra las reglas de firewall existentes que GKE creó automáticamente para tus servicios de LoadBalancer.
- GKE deja de actualizar las reglas existentes y no creará ninguna nueva para los nuevos servicios de LoadBalancer.
- Para volver a activar la creación de reglas de firewall de VPC, puedes usar la marca
--enable-l4-lb-firewall-reconciliation
con el comandogcloud_name container clusters update
.
Para inhabilitar la creación automática de reglas de firewall en un clúster existente, sigue estos pasos:
Actualiza el clúster para inhabilitar la creación y administración automáticas de las reglas de firewall para los servicios de LoadBalancer:
gcloud container clusters update CLUSTER_NAME \ --disable-l4-lb-firewall-reconciliation \ --cluster-version=supported_version
Reemplaza lo siguiente:
CLUSTER_NAME
es el nombre del clúster nuevo.VERSION
: Es la versión de GKE.
Crea un Service LoadBalancer externo o interno:
Verifica que GKE no cree una regla de firewall de permiso de entrada para el servicio de LoadBalancer. (Las reglas de firewall de permiso de entrada creadas automáticamente tienen nombres del siguiente formato:
k8s2-[cluster-id]-[namespace]-[service-name]-[suffixhash]
).El siguiente comando no muestra nada:
gcloud compute firewall-rules list --format="value(name)" | grep "k8s2"
Soluciona problemas de conectividad
En los siguientes ejemplos, se muestra cómo usar las pruebas de conectividad de Network Intelligence Center para probar la conectividad con un clúster de Service LoadBalancer externo:
Network Intelligence Center:
- En la consola de Google Cloud, ve al Centro de Network Intelligence y comienza una nueva prueba de conectividad.
- En el menú desplegable, elige Cualquier dirección IP pública externa como fuente y selecciona tu balanceador de cargas desde el destino.
- Vuelve a ejecutar la prueba de conectividad.
La CLI de gcloud:
En el siguiente comando de ejemplo, se crea y ejecuta una prueba con la dirección IP pública de tu estación de trabajo local como fuente y la dirección IP externa del balanceador de cargas externo como destino:
gcloud network-management connectivity-tests create TEST_NAME \ --source-ip-address=SOURCE_IP_ADDRESS \ --source-network-type=NON_GCP_NETWORK \ --destination-ip-address=$(kubectl get svc LOADBALANCER_NAME -o jsonpath='{.status.loadBalancer.ingress[0].ip}') \ --destination-port=$(kubectl get svc LOADBALANCER_NAME -o jsonpath='{.spec.ports[0].targetPort}') \ --destination-network=projects/PROJECT_ID/global/networks/NETWORK_NAME
Reemplaza lo siguiente:
TEST_NAME
: Es un nombre para la prueba de conectividad.SOURCE_IP_ADDRESS
: Es la dirección IP del sistema que se debe conectar al servicio de LoadBalancer externo. Por ejemplo:LOADBALANCER_NAME
: Es el nombre del servicio de LoadBalancer externo.PROJECT_ID
: Es el ID del proyecto que contiene la red de VPC del clúster. Si tu clúster usa una red de VPC compartida, usa el ID del proyecto host.NETWORK_NAME
: Es el nombre de la red de VPC del clúster.
Verifica los resultados de la prueba:
gcloud network-management connectivity-tests describe TEST_NAME
¿Qué sigue?
- Obtén más información sobre las políticas de firewall.
- Lee Reglas de firewall creadas automáticamente para obtener una descripción general de las reglas de firewall de VPC de entrada permitidas que GKE crea automáticamente de forma predeterminada.
- Lee Parámetros de Services LoadBalancer para obtener una descripción de los parámetros de los servicios de LoadBalancer.
- Obtén más información sobre otras reglas de firewall prepropagadas en Google Cloud.
- Obtén más información para crear reglas de firewall en proyectos que usan VPC compartida.