Cómo crear una política de red de clúster

En esta página se explica cómo configurar las políticas de red en Google Kubernetes Engine. Para obtener información general sobre las herramientas de redes de GKE, ve a la Descripción general de la red.

Descripción general

Puedes usar la aplicación de la política de red de GKE para controlar la comunicación entre los pods y los servicios del clúster. Para definir una política de red en GKE, puedes usar la API de política de red de Kubernetes a fin de crear reglas de firewall a nivel del pod. Estas reglas de firewall determinan los pods y servicios que se pueden acceder entre sí dentro del clúster.

La definición de políticas de red te ayuda a habilitar estrategias como defensa en profundidad cuando el clúster entrega una aplicación de varios niveles. Por ejemplo, puedes crear una política de red para asegurar que un servicio de frontend vulnerable en la aplicación no pueda comunicarse directamente con un servicio de facturación o contabilidad en varios niveles inferiores.

La política de red también le facilita a la aplicación alojar datos de varios usuarios de manera simultánea. Por ejemplo, puedes proporcionar instancia múltiple segura si defines un modelo de instancia por espacio de nombres. En este modelo, las reglas de la política de red pueden garantizar que los pods y los servicios en un espacio de nombres determinado no puedan acceder a otros pods o servicios en un espacio de nombres diferente.

Antes de comenzar

Como preparación para esta tarea, realiza los siguientes pasos:

  • Asegúrate de habilitar la API de Google Kubernetes Engine.
  • Habilitar la API de Google Kubernetes Engine
  • Asegúrate de instalar el SDK de Cloud.
  • Configura el ID del proyecto predeterminado:
    gcloud config set project [PROJECT_ID]
  • Si trabajas con clústeres por zona, configura tu zona de procesamiento predeterminada:
    gcloud config set compute/zone [COMPUTE_ZONE]
  • Si trabajas con clústeres por región, configura tu región de procesamiento predeterminada:
    gcloud config set compute/region [COMPUTE_REGION]
  • Actualiza gcloud a la versión más reciente:
    gcloud components update

Cómo usar la aplicación de política de red

Puedes usar la herramienta de línea de comandos de gcloud, la API de REST de GKE o Google Cloud Platform Console para habilitar o inhabilitar la aplicación de la política de red.

Una vez que hayas habilitado la política de red en tu clúster, puedes crear una política de red con la API de política de red de Kubernetes.

Puedes habilitar la aplicación de política de red cuando creas un clúster de GKE o puedes habilitarla para un clúster existente. También puedes inhabilitar la política de red para un clúster existente.

Cómo habilitar la aplicación de la política de red

gcloud

Para habilitar la aplicación de la política de red cuando creas un clúster nuevo con la herramienta de línea de comandos de gcloud, ejecuta el comando gcloud container clusters create con el marcador --enable-network-policy:

gcloud container clusters create [CLUSTER_NAME] --enable-network-policy

Habilitar la aplicación de la política de red para un clúster existente con la herramienta de línea de comandos de gcloud es un proceso de dos pasos. Primero, ejecuta el comando gcloud container clusters update con el marcador --update-addons:

gcloud container clusters update [CLUSTER_NAME] --update-addons=NetworkPolicy=ENABLED

Luego, ejecuta el comando gcloud container clusters update con el marcador --enable-network-policy. Este comando hace que los grupos de nodos de tu clúster se vuelvan a crear con la política de red habilitada:

gcloud container clusters update [CLUSTER_NAME] --enable-network-policy

Console

  1. Ve al menú de Google Kubernetes Engine en GCP Console.

    Ir al menú de Google Kubernetes Engine

  2. Haz clic en Crear clúster.

  3. Configura tu clúster como desees.

  4. Haz clic en Opciones avanzadas. En la sección Herramientas de redes, selecciona Habilitar la política de red.

  5. Haz clic en Crear.

API

Para habilitar la política de red con la API de GKE, especifica el objeto networkPolicy dentro del objeto cluster que le proporcionas a projects.zones.clusters.create o projects.zones.clusters.update.

El objeto networkPolicy requiere una enumeración que especifique qué proveedor de política de red se usa y un booleano que especifique si se habilita la política de red. Si habilitas la política de red pero no configuras un proveedor, los comandos create y update muestran un error. Actualmente, el único valor de proveedor válido es CALICO.

Cómo inhabilitar la aplicación de la política de red

gcloud

Si quieres inhabilitar la aplicación de la política de red para un clúster existente con la herramienta de línea de comandos de gcloud, ejecuta el comando gcloud container clusters update con el marcador --no-enable-network-policy.

gcloud container clusters update [CLUSTER_NAME] --no-enable-network-policy

Console

  1. Ve al menú de Google Kubernetes Engine en GCP Console.

    Ir al menú de Google Kubernetes Engine

  2. Haz clic en el botón Editar del clúster, que tiene forma de lápiz.

  3. En el menú desplegable Política de red para nodos, selecciona Inhabilitada.

  4. Haz clic en Guardar. Luego, haz clic de nuevo en Editar.

  5. En el menú desplegable Política de red para instancia principal, selecciona Inhabilitada.

  6. Haz clic en Guardar.

API

Si quieres inhabilitar la aplicación de la política de red para un clúster existente con la API de GKE, especifica el objeto networkPolicy dentro de tu objeto cluster que le proporcionas a projects.zones.clusters.update. Dentro del objeto networkPolicy, establece el valor booleano enabled en false.

Cómo crear una política de red

Una vez que hayas habilitado la aplicación de la política de red para tu clúster, deberás definir la política de red real. La política de red se define con la API de política de red de Kubernetes.

Para obtener más detalles sobre cómo crear una política de red, consulta los siguientes temas en la documentación de Kubernetes:

Cómo trabajar con PodSecurityPolicy

Si usas un objeto NetworkPolicy, y tienes un pod sujeto a un objeto PodSecurityPolicy, crea una función RBAC o ClusterRole con permiso para usar PodSecurityPolicy. Luego, vincula la función o ClusterRole a la cuenta de servicio del pod. En este caso, otorgar permisos para las cuentas de usuarios no es suficiente. Para obtener más información, consulta Cómo autorizar políticas.

Cómo anular una política de red de manera temporal

En caso de tener problemas o en circunstancias extraordinarias, puedes inhabilitar de manera temporal la aplicación de la política de red en tu clúster. Para obtener más información, consulta la documentación de Tigera sobre la anulación de la política de Calico.

Sobrecarga, limitaciones y advertencias

  • Habilitar la aplicación de la política de red consume recursos adicionales en los nodos. Específicamente, aumenta el alcance de la memoria en el proceso “kube-system” en aproximadamente 128 MB, y requiere aproximadamente 300 millicores de CPU.
  • Habilitar la aplicación de la política de red requiere que los nodos se vuelvan a crear. Si tu clúster tiene un período de mantenimiento activo, los nodos no se vuelven a crear de manera automática hasta el próximo período de mantenimiento. Si prefieres, puedes actualizar tu clúster de manera manual en cualquier momento.

Limitaciones y requisitos

  • Tu clúster debe tener al menos 2 nodos del tipo n1-standard-1 o superior. El tamaño mínimo recomendado de clúster para ejecutar la aplicación de la política de red es de 3 instancias n1-standard-1.
  • La política de red no está admitida para clústeres cuyos nodos son instancias f1-micro o g1-small, ya que los requisitos de recursos son demasiado altos para instancias de ese tamaño.

Para obtener más información sobre tipos de máquinas de nodo y recursos asignables, consulta Arquitectura del clúster: nodos.

Cómo trabajar con las verificaciones de estado del balanceador de cargas HTTP(S)

Cuando se aplica un Ingress a un servicio para compilar un balanceador de cargas HTTP(S), la política de red aplicada a los pods detrás de ese servicio también debe permitir los rangos de IP de sondeo del balanceador de cargas HTTP(S) adecuados.

Además, los puertos de nodos para un servicio pueden reenviar conexiones a pods en otros nodos, a menos que no puedan hacerlo porque externalTrafficPolicy está establecido en “Local” en la definición del servicio. Si externalTrafficPolicy no está establecido en Local, la política de red también debe permitir conexiones desde otras IP de nodo en el clúster.

Ten en cuenta que este debate no se aplica cuando se usa el balanceo de cargas nativo del contenedor con Grupos de extremos de red.

Qué sigue

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...