Crea una política de red de clúster

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

Descripción general

Puedes usar la aplicación de políticas de red de GKE para controlar la comunicación entre los pods y los objetos Service del clúster. Para definir una política de red, usa la API de política de red de Kubernetes a fin de crear reglas de firewall a nivel de pod. Estas reglas de firewall determinan los pods y los Services que pueden acceder unos a otros dentro del clúster.

La definición de políticas de red te ayuda a habilitar estrategias como la 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 Services en un espacio de nombres determinado no puedan acceder a otros pods o Services en otro espacio de nombres.

Antes de comenzar

Antes de comenzar, asegúrate de haber realizado las siguientes tareas:

Establece la configuración de gcloud predeterminada mediante uno de los siguientes métodos:

  • Usa gcloud init si deseas ver una explicación sobre cómo configurar parámetros predeterminados.
  • Usa gcloud config para establecer el ID, la zona y la región del proyecto de manera individual.

Usa gcloud init

  1. 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
  2. Sigue las instrucciones a fin de autorizar a gcloud para que use tu cuenta de Google Cloud.
  3. Crea una configuración nueva o selecciona una existente.
  4. Elige un proyecto de Google Cloud.
  5. Elige una zona predeterminada de Compute Engine.

Usa gcloud config

  • Establece tu ID del proyecto predeterminado:
    gcloud config set project project-id
  • Si trabajas con clústeres zonales, establece tu zona de procesamiento predeterminada:
    gcloud config set compute/zone compute-zone
  • Si trabajas con clústeres regionales, establece 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

Usa la aplicación de políticas de red

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

Una vez que habilitaste las políticas de red en tu clúster, puedes crear una mediante la API de política de red de Kubernetes.

Habilita la aplicación de políticas de red

Cuando habilitas la aplicación de políticas de red en un clúster de GKE, este administra y aplica las políticas de red dentro de ese clúster.

Puedes habilitar la aplicación de políticas de red en GKE mediante la herramienta de gcloud, Google Cloud Console o la API de REST de GKE.

gcloud

Para habilitar la aplicación de políticas de red durante la creación de un clúster nuevo, ejecuta el siguiente comando:

gcloud container clusters create cluster-name --enable-network-policy

Para habilitar la aplicación de políticas de red en un clúster existente, realiza las siguientes tareas:

  1. Ejecuta el siguiente comando para habilitar el complemento:

    gcloud container clusters update cluster-name --update-addons=NetworkPolicy=ENABLED
  2. Ejecuta el siguiente comando para habilitar la aplicación de políticas de red en tu clúster, lo que ocasionará que se vuelvan a crear los grupos de nodos del clúster con la aplicación de políticas de red habilitada:

    gcloud container clusters update cluster-name --enable-network-policy

Console

Para habilitar la aplicación de políticas de red durante la creación de un clúster nuevo, sigue los siguientes pasos:

  1. Visita el menú de Google Kubernetes Engine en Cloud Console.

    Ir al menú de Google Kubernetes Engine

  2. Haz clic en el botón Crear clúster.

  3. Configura tu clúster como desees.

  4. En el panel de navegación, en Clúster, haz clic en Herramientas de redes.

  5. Selecciona la casilla de verificación Habilitar política de red.

  6. Haz clic en Crear.

Para habilitar la aplicación de políticas de red en un clúster existente, sigue estos pasos:

  1. Visita el menú de Google Kubernetes Engine en Cloud Console.

    Ir al menú Google Kubernetes Engine

  2. Haz clic en el clúster en el que deseas aplicar la política de red.

  3. Haz clic en Editar junto a un ícono de lápiz.

  4. En el menú desplegable Política de red para la instancia principal, selecciona Habilitada.

  5. Haz clic en Guardar y, luego, vuelve a hacer clic en Editar una vez que se actualice el clúster.

  6. En el menú desplegable Política de red para nodos, selecciona Habilitada.

  7. Haz clic en Guardar.

API

Para habilitar la aplicación de políticas de red, sigue estos pasos:

  1. Especifica el objeto networkPolicy dentro del objeto cluster que proporcionas a projects.zones.clusters.create o projects.zones.clusters.update.

  2. El objeto networkPolicy requiere una enumeración que especifique qué proveedor de políticas de red usar y un valor booleano que determine si se debe habilitar la política de red. Si habilitas la política de red, pero no estableces el proveedor, los comandos create y update muestran un error.

Inhabilita la aplicación de políticas de red

Puedes inhabilitar la aplicación de políticas de red mediante la herramienta de gcloud, Google Cloud Console o la API de GKE.

gcloud

Para inhabilitar la aplicación de políticas de red en un clúster existente, ejecuta el siguiente comando:

gcloud container clusters update cluster-name --no-enable-network-policy

Console

Para inhabilitar la aplicación de políticas de red en un clúster existente, sigue estos pasos:

  1. Visita el menú de Google Kubernetes Engine en Cloud Console.

    Ir al menú 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

Para inhabilitar la aplicación de políticas de red en un clúster existente, sigue estos pasos:

  1. Especifica el objeto networkPolicy dentro de tu objeto cluster que proporcionas a projects.zones.clusters.update.
  2. Dentro del objeto networkPolicy, establece el valor booleano enabled en false.

Crea 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:

Trabaja con PodSecurityPolicy

Si usas un objeto NetworkPolicy y tienes un pod que depende de un objeto PodSecurityPolicy, crea un objeto RBAC Role o un objeto ClusterRole que tenga permiso para usar el PodSecurityPolicy. Luego, vincula el Role o el ClusterRole a la cuenta de servicio del pod. Cuando usas NetworkPolicy y PodSecurityPolicy juntas, otorgar permisos a las cuentas de usuario no es suficiente. Debes vincular la función a la cuenta de servicio. Para obtener más información, consulta Autoriza políticas.

Anula las políticas de red de manera temporal

En caso de tener problemas o en circunstancias extraordinarias, puedes inhabilitar de manera temporal la aplicación de políticas de red en tu clúster.

Sobrecarga, limitaciones y advertencias

  • Cuando se habilita la aplicación de políticas de red, se consumen recursos adicionales en los nodos. En particular, aumenta el alcance de memoria del proceso kube-system en casi 128 MB, y requiere unos 300 millicores de CPU.

  • Cuando se habilita la aplicación de políticas de red, se 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 siguiente período de mantenimiento. Si lo prefieres, puedes actualizar tu clúster de forma manual en cualquier momento.

Limitaciones y requisitos

  • Tu clúster debe tener, al menos, 2 nodos de tipo n1-standard-1 o superior. El clúster de tamaño mínimo recomendado para ejecutar la aplicación de la política de red es de 3 instancias n1-standard-1.
  • La política de red no es compatible con los 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.

Trabaja 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á configurado en Local, la política de red también debe permitir las conexiones de 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.

Próximos pasos