Personalizar el aislamiento de red en GKE


En esta página se explica cómo configurar el aislamiento de red para los clústeres de Google Kubernetes Engine (GKE) al crear o actualizar un clúster.

Práctica recomendada:

Planifica y diseña el aislamiento de la red de tu clúster con los arquitectos de red, los administradores de red o cualquier otro equipo de ingenieros de red de tu organización que se encargue de definir, implementar y mantener la arquitectura de red.

Cómo funciona el aislamiento de red de clústeres

En un clúster de GKE, el aislamiento de la red depende de quién puede acceder a los componentes del clúster y cómo. Puedes controlar los siguientes aspectos:

  • Acceso al plano de control: puedes personalizar el acceso externo, el acceso limitado o el acceso sin restricciones al plano de control.
  • Red de clúster: puedes elegir quién puede acceder a los nodos de los clústeres estándar o a las cargas de trabajo de los clústeres de Autopilot.

Antes de crear un clúster, ten en cuenta lo siguiente:

  1. ¿Quién puede acceder al plano de control y cómo se expone?
  2. ¿Cómo se exponen tus nodos o cargas de trabajo?

Para responder a estas preguntas, sigue las directrices de planificación y diseño que se indican en el artículo Acerca del aislamiento de la red.

Restricciones y limitaciones

De forma predeterminada, GKE crea los clústeres como clústeres nativos de VPC. Los clústeres nativos de VPC no admiten redes antiguas.

Intervalos secundarios de pods a nivel de grupo de nodos: al crear un clúster de GKE, si especificas un intervalo secundario de pods inferior a /24 por grupo de nodos mediante la interfaz de usuario, es posible que se produzca el siguiente error:

Getting Pod secondary range 'pod' must have a CIDR block larger or equal to /24

GKE no admite que se especifique un intervalo inferior a /24 en el nivel del grupo de nodos. Sin embargo, se admite especificar un intervalo más pequeño a nivel de clúster. Para ello, puedes usar Google Cloud CLI con el argumento --cluster-ipv4-cidr. Para obtener más información, consulta Crear un clúster con un intervalo CIDR específico.

Despliega las secciones siguientes para ver las reglas sobre los intervalos de direcciones IP y el tráfico al crear un clúster.

Antes de empezar

Antes de empezar, asegúrate de haber 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 gcloud CLI, obtén la versión más reciente ejecutando gcloud components update.

Configurar el acceso al plano de control

Cuando creas un clúster de GKE en cualquier versión mediante la CLI de Google Cloud o en la versión 1.29 y posteriores mediante la consola, se puede acceder al plano de control a través de las siguientes interfaces:

Endpoint basado en DNS

El acceso al plano de control depende de la resolución de DNS del tráfico de origen. Habilita el endpoint basado en DNS para disfrutar de las siguientes ventajas:

  • Crea una política de acceso dinámica basada en políticas de gestión de identidades y accesos.
  • Acceder al plano de control desde otras redes de VPC o ubicaciones externas sin necesidad de configurar un host bastion o nodos proxy.

Para configurar el acceso al endpoint basado en DNS, consulta Definir el acceso al endpoint basado en DNS.

Endpoints basados en IP

El acceso a los endpoints del plano de control depende de la dirección IP de origen y se controla mediante las redes autorizadas. Puedes gestionar el acceso a los endpoints basados en IP del plano de control, como los siguientes:

  • Habilita o inhabilita el endpoint basado en IP.
  • Habilita o inhabilita el endpoint externo para permitir el acceso desde tráfico externo. El endpoint interno siempre está habilitado cuando habilitas los endpoints basados en IP del plano de control.
  • Añade redes autorizadas a la lista de permitidos o deniega el acceso desde direcciones IP públicas. Si no configuras redes autorizadas, se podrá acceder al plano de control desde cualquier dirección IP externa. Esto incluye Internet público o direcciones IP externas sin restricciones. Google Cloud
  • Permitir o denegar el acceso desde todas o algunas de las direcciones IP privadas del clúster.
  • Permitir o denegar el acceso desde Google Cloud direcciones IP externas, que son direcciones IP externas asignadas a cualquier VM utilizada por cualquier cliente alojado en Google Cloud.

  • Permitir o denegar el acceso desde direcciones IP de otras Google Cloud regiones.

Consulta las limitaciones de los endpoints basados en IP antes de definir el acceso al plano de control.

Crear un clúster y definir el acceso al plano de control

Para crear o actualizar un clúster Autopilot o Estándar, usa la CLI de Google Cloud o la Google Cloud consola.

Consola

Para crear un clúster, sigue estos pasos:

  1. Ve a la página Google Kubernetes Engine en la Google Cloud consola.

    Ir a Google Kubernetes Engine

  2. Haz clic en Crear.

  3. Configura los atributos de tu clúster en función de las necesidades de tu proyecto.

  4. En el menú de navegación, haga clic en Redes.

  5. En Control Plane Access (Acceso al plano de control), configura los endpoints del plano de control:

    1. Selecciona la casilla Acceso mediante DNS para habilitar los endpoints basados en DNS del plano de control.
    2. Selecciona la casilla Acceso mediante direcciones IPv4 para habilitar los endpoints basados en IP del plano de control. Usa la configuración incluida en Define las direcciones IP que pueden acceder al plano de control para personalizar el acceso a los endpoints basados en IP.

gcloud

En los clústeres Autopilot, ejecuta el siguiente comando:

  gcloud container clusters create-auto CLUSTER_NAME \
    --enable-ip-access  \
    --enable-dns-access

En los clústeres estándar, ejecuta el siguiente comando:

  gcloud container clusters create CLUSTER_NAME \
      --enable-ip-access \
      --enable-dns-access

Haz los cambios siguientes:

  • CLUSTER_NAME: el nombre de tu clúster.

Ambos comandos incluyen marcas que permiten lo siguiente:

  • enable-dns-access: habilita el acceso al plano de control mediante el endpoint basado en DNS del plano de control.
  • enable-ip-access: habilita el acceso al plano de control mediante direcciones IPv4. Si quieres inhabilitar los endpoints internos y externos del plano de control, usa la marca no-enable-ip-access.

Usa las marcas que se indican en Define las direcciones IP que pueden acceder al plano de control para personalizar el acceso a los endpoints basados en IP.

Definir el acceso al endpoint basado en DNS

Para gestionar la autenticación y la autorización del endpoint basado en DNS, configura el permiso de gestión de identidades y accesos container.clusters.connect. Para configurar este permiso, asigna uno de los siguientes roles de gestión de identidades y accesos (IAM) a tuGoogle Cloud proyecto:

  • roles/container.developer
  • roles/container.viewer

Si quieres, puedes gestionar la accesibilidad del endpoint basado en DNS mediante las siguientes funciones:

  • Controles de Servicio de VPC: el endpoint basado en DNS admite Controles de Servicio de VPC para añadir una capa de seguridad al acceso al plano de control. Controles de Servicio de VPC funciona de forma coherente en todas las APIs. Google Cloud

  • Acceso al endpoint basado en DNS desde clientes sin acceso a Internet público: se puede acceder al endpoint basado en DNS a través de las APIs que están disponibles en Internet público. Google Cloud Para acceder al endpoint basado en DNS desde clientes privados, puedes usar Acceso privado a Google, puerta de enlace Cloud NAT o Private Service Connect para APIs Google Cloud .

    Cuando usas Private Service Connect para APIs, GKE redirige las solicitudes de direcciones gke.goog a la dirección IP interna que ha añadido Private Service Connect para APIs de Google, no a la dirección IP pública predeterminada de Google. Google Cloud Para configurar Private Service Connect para las APIs de Google Cloud , sigue los pasos que se indican en Acceder a las APIs de Google a través de puntos finales.

  • Acceso al endpoint basado en DNS desde clientes on‐premise: los clientes on‐premise pueden acceder al endpoint basado en DNS a través del acceso privado de Google. Para configurar Acceso privado de Google, sigue los pasos que se indican en el artículo Configurar Acceso privado de Google para hosts on-premise.

Definir las direcciones IP que pueden acceder al plano de control

Para definir las direcciones IP que pueden acceder al plano de control, sigue estos pasos:

Consola

  1. En Acceso al plano de control, selecciona Habilitar redes autorizadas.
  2. Haz clic en Añadir red autorizada.
  3. Introduce un nombre para la red.
  4. En Red, introduce un intervalo CIDR al que quieras conceder acceso al plano de control del clúster.
  5. Haz clic en Listo.
  6. Añade más redes autorizadas si es necesario.
Definir las reglas de cortafuegos de la dirección IP del plano de control

Para definir las reglas de cortafuegos de la dirección IP del plano de control, sigue estos pasos:

  1. Despliega la sección Mostrar reglas de cortafuegos de direcciones IP.
  2. Selecciona la casilla Acceder con la dirección IP externa del plano de control para permitir el acceso al plano de control desde direcciones IP públicas.

    Práctica recomendada:

    Define redes autorizadas del plano de control para restringir el acceso al plano de control.

  3. Selecciona la casilla Acceder con la dirección IP interna del plano de control desde cualquier región. Las direcciones IP internas de cualquier Google Cloudregión pueden acceder al endpoint interno del plano de control.

  4. Selecciona Aplicar redes autorizadas en el endpoint interno del plano de control. Solo las direcciones IP que hayas definido en la lista Añadir redes autorizadas pueden acceder al endpoint interno del plano de control. El endpoint interno está habilitado de forma predeterminada.

  5. Selecciona Añadir Google Cloud direcciones IP externas a redes autorizadas. Todas las direcciones IP públicas de Google Cloud pueden acceder al plano de control.

gcloud

Puede configurar las direcciones IP que pueden acceder a los endpoints externos e internos del plano de control mediante las siguientes marcas:

  • enable-private-endpoint: especifica que el acceso al endpoint externo está inhabilitado. Omite esta marca si quieres permitir el acceso al plano de control desde direcciones IP externas. En ese caso, te recomendamos que controles el acceso al endpoint externo con la marca enable-master-authorized-networks.
  • enable-master-authorized-networks: Especifica que el acceso al endpoint externo está restringido a los intervalos de direcciones IP que autorices.
  • master-authorized-networks: muestra los valores de CIDR de las redes autorizadas. Esta lista es una lista de elementos separados por comas. Por ejemplo, 8.8.8.8/32,8.8.8.0/24.

    Práctica recomendada:

    Usa la marca enable-master-authorized-networks para restringir el acceso al plano de control.

  • enable-authorized-networks-on-private-endpoint: especifica que el acceso al endpoint interno está restringido a los intervalos de direcciones IP que autorices con la marca enable-master-authorized-networks.

  • no-enable-google-cloud-access: deniega el acceso al plano de control desde Google Cloud direcciones IP externas. Ten en cuenta que la actualización de este ajuste no se aplica inmediatamente. Es posible que GKE tarde varias horas en propagar y aplicar los cambios en las reglas de firewall.

  • enable-master-global-access: permite el acceso desde direcciones IP de otras regiones.Google Cloud

    Puedes seguir configurando la red del clúster definiendo el aislamiento de nodos o pods a nivel de clúster.

También puedes crear un clúster y definir atributos a nivel de clúster, como la red y la subred de nodos, el tipo de pila de IP y la asignación de direcciones IP. Para obtener más información, consulta Crear un clúster nativo de VPC.

Modificar el acceso al plano de control

Para cambiar el acceso al plano de control de un clúster, usa la CLI de gcloud o la Google Cloud consola.

Consola

  1. Ve a la página Google Kubernetes Engine en la Google Cloud consola.

    Ir a Google Kubernetes Engine

  2. En la lista de clústeres, haz clic en el nombre del clúster.

  3. En la pestaña Detalles del clúster, vaya a Redes del plano de control y haga clic en .

  4. En el cuadro de diálogo Editar redes del plano de control, modifica el acceso al plano de control según los requisitos de tu caso práctico.

  5. Verifica la configuración del plano de control.

gcloud

Ejecuta el siguiente comando y añade las marcas que se ajusten a tu caso de uso. Puedes usar las siguientes marcas:

  • enable-dns-access: habilita el acceso al plano de control mediante el endpoint basado en DNS del plano de control.
  • enable-ip-access: habilita el acceso al plano de control mediante direcciones IPv4. Si quieres inhabilitar los endpoints internos y externos del plano de control, usa la marca no-enable-ip-access.
  • enable-private-endpoint: especifica que el acceso al endpoint externo está inhabilitado. Omite esta marca si quieres permitir el acceso al plano de control desde direcciones IP externas. En ese caso, te recomendamos que controles el acceso al endpoint externo con la marca enable-master-authorized-networks.
  • enable-master-authorized-networks: Especifica que el acceso al endpoint externo está restringido a los intervalos de direcciones IP que autorices.
  • master-authorized-networks: muestra los valores de CIDR de las redes autorizadas. Esta lista es una lista de elementos separados por comas. Por ejemplo, 8.8.8.8/32,8.8.8.0/24.

    Práctica recomendada:

    Usa la marca enable-master-authorized-networks para restringir el acceso al plano de control.

  • enable-authorized-networks-on-private-endpoint: especifica que el acceso al endpoint interno está restringido a los intervalos de direcciones IP que autorices con la marca enable-master-authorized-networks.

  • no-enable-google-cloud-access: deniega el acceso al plano de control desde Google Cloud direcciones IP externas. Ten en cuenta que la actualización de este ajuste no se aplica inmediatamente. Es posible que GKE tarde varias horas en propagar y aplicar los cambios en las reglas de firewall.

  • enable-master-global-access: permite el acceso desde direcciones IP de otras regiones.Google Cloud

    gcloud container clusters update CLUSTER_NAME
    

    Sustituye CLUSTER_NAME por el nombre del clúster.

Verificar la configuración del plano de control

Puedes ver los endpoints de tu clúster con gcloud CLI o laGoogle Cloud consola.

Consola

  1. Ve a la página Google Kubernetes Engine en la Google Cloud consola.

    Ir a Google Kubernetes Engine

  2. En la lista de clústeres, haz clic en el nombre del clúster.

  3. En la pestaña Detalles del clúster, en Plano de control, puede consultar las siguientes características de los endpoints del plano de control:

    • Endpoint de DNS incluye el nombre del endpoint basado en DNS de tu clúster, si lo has habilitado.
    • Acceso al plano de control mediante direcciones IPv4: incluye el estado del endpoint basado en IP. Si está habilitada, puedes ver la información de los endpoints públicos y privados.
    • La opción Acceso mediante la dirección IP interna del plano de control desde cualquier región muestra el estado Habilitado cuando se puede acceder al plano de control mediante direcciones IP de Google de otras regiones.
    • En Redes autorizadas se muestra la lista de CIDRs que pueden acceder al plano de control si has habilitado las redes autorizadas.
    • Aplicar redes autorizadas al endpoint interno del plano de control muestra el estado Habilitado si solo los CIDRs del campo Redes autorizadas pueden acceder al endpoint interno.
    • Añadir Google Cloud direcciones IP externas a las redes autorizadas muestra el estado Habilitado si las direcciones IP externas de Google Cloud pueden acceder al plano de control.

Para modificar cualquier atributo, haz clic en Acceso al plano de control mediante direcciones IPv4 y ajústalo según tu caso práctico.

gcloud

Para verificar la configuración del plano de control, ejecuta el siguiente comando:

gcloud container clusters describe CLUSTER_NAME

El resultado tiene un bloque controlPlaneEndpointsConfig que describe la definición de la red. Verás un resultado similar al siguiente:

controlPlaneEndpointsConfig:
dnsEndpointConfig:
  allowExternalTraffic: true
  endpoint: gke-dc6d549babec45f49a431dc9ca926da159ca-518563762004.us-central1-c.autopush.gke.goog
ipEndpointsConfig:
  authorizedNetworksConfig:
    cidrBlocks:
    - cidrBlock: 8.8.8.8/32
    - cidrBlock: 8.8.8.0/24
    enabled: true
    gcpPublicCidrsAccessEnabled: false
    privateEndpointEnforcementEnabled: true
  enablePublicEndpoint: false
  enabled: true
  globalAccess: true
  privateEndpoint: 10.128.0.13

En este ejemplo, el clúster tiene la siguiente configuración:

  • Los endpoints basados en DNS y en direcciones IP están habilitados.
  • Las redes autorizadas están habilitadas y los intervalos CIDR están definidos. Estas redes autorizadas se aplican a la dirección IP interna.
  • Se deniega el acceso al plano de control desde direcciones IP externas. Google Cloud

Ejemplos de configuración de acceso al plano de control

En esta sección se detalla la configuración de los siguientes ejemplos de aislamiento de red. Evalúa estos ejemplos para ver si se parecen a tu caso práctico:

  • Ejemplo 1: El plano de control es accesible desde determinadas direcciones IP que definas. Entre ellas, se incluyen direcciones IP de otras Google Cloud regiones o direcciones IP reservadas por Google.
  • Ejemplo 2: No se puede acceder al plano de control con ninguna dirección IP externa.
Ejemplo 1: Se puede acceder al plano de control desde determinadas direcciones IP

En esta sección, creará un clúster con las siguientes configuraciones de aislamiento de red:

  • El plano de control tiene habilitado el endpoint basado en DNS.
  • El plano de control tiene habilitado el endpoint externo, además del endpoint interno, que está habilitado de forma predeterminada.
  • El plano de control tiene redes autorizadas definidas, lo que permite que solo las siguientes redes autorizadas accedan al plano de control:

Para crear este clúster, usa la CLI de Google Cloud o la Google Cloud consola.

Consola

  1. Ve a la página Google Kubernetes Engine en la Google Cloud consola.

    Ir a Google Kubernetes Engine

  2. Haz clic en Crear.

  3. Configura el clúster para que se ajuste a tus requisitos.

  4. En el menú de navegación, haga clic en Redes.

  5. En Control Plane Access (Acceso al plano de control), configura los endpoints del plano de control:

    1. Marca la casilla Acceso mediante DNS.
    2. Seleccione la casilla Acceder mediante direcciones IPv4.
  6. Selecciona Habilitar redes autorizadas.

  7. Haz clic en Añadir red autorizada.

  8. Introduce un nombre para la red.

  9. En Red, introduce un intervalo CIDR al que quieras conceder acceso al plano de control del clúster.

  10. Haz clic en Listo.

  11. Añade más redes autorizadas si es necesario.

  12. Despliega la sección Mostrar reglas de cortafuegos de direcciones IP.

  13. Selecciona Acceder con la dirección IP interna del plano de control desde cualquier región. Las direcciones IP internas de cualquier Google Cloud región pueden acceder al plano de control a través de la dirección IP interna.

  14. Selecciona Añadir Google Cloud direcciones IP externas a redes autorizadas. Todas las direcciones IP externas de Google Cloud pueden acceder al plano de control.

Puedes seguir configurando la red del clúster definiendo el aislamiento de nodos o pods a nivel de clúster.

gcloud

Ejecuta el siguiente comando:

gcloud container clusters create-auto CLUSTER_NAME \
    --enable-dns-access \
    --enable-ip-access \
    --enable-master-authorized-networks \
    --enable-master-global-access \
    --master-authorized-networks CIDR1,CIDR2,...

Haz los cambios siguientes:

  • CLUSTER_NAME: el nombre del clúster de GKE.
  • CIDR1,CIDR2,...: lista delimitada por comas de valores CIDR de las redes autorizadas. Por ejemplo, 8.8.8.8/32,8.8.8.0/24.
Ejemplo 2: Se puede acceder al plano de control desde direcciones IP internas

En esta sección, creará un clúster con las siguientes configuraciones de aislamiento de red:

  • El plano de control tiene habilitado el endpoint basado en DNS.
  • El plano de control tiene el endpoint externo inhabilitado.
  • El plano de control tiene habilitadas las redes autorizadas.
  • Se permite el acceso al plano de control a través de la dirección IP interna desde cualquier Google Cloud región.
  • Las Google Cloud direcciones IP externas no tienen acceso a tu clúster.

Puedes crear este clúster mediante la CLI de Google Cloud o la Google Cloud consola.

Consola

  1. Ve a la página Google Kubernetes Engine en la Google Cloud consola.

    Ir a Google Kubernetes Engine

  2. Haz clic en Crear.

  3. Configura el clúster para que se ajuste a tus requisitos.

  4. En el menú de navegación, haga clic en Redes.

  5. En Control Plane Access (Acceso al plano de control), configura los endpoints del plano de control:

    1. Marca la casilla Acceso mediante DNS.
    2. Seleccione la casilla Acceder mediante direcciones IPv4.
  6. Despliega la sección Mostrar reglas de cortafuegos de direcciones IP.

  7. Desmarca Acceder con la dirección IP externa del plano de control. No se puede acceder al plano de control mediante ninguna dirección IP externa.

  8. En Acceso al plano de control, selecciona Habilitar redes autorizadas.

  9. Marca la casilla Acceder con la dirección IP interna del plano de control desde cualquier región. Las direcciones IP internas de cualquier Google Cloud región pueden acceder al plano de control a través de la dirección IP interna.

Puedes continuar con la configuración de la red del clúster definiendo el aislamiento de nodos o pods a nivel de clúster.

gcloud

Ejecuta el siguiente comando:

gcloud container clusters create-auto CLUSTER_NAME \
    --enable-dns-access \
    --enable-ip-access \
    --enable-private-endpoint \
    --enable-master-authorized-networks \
    --master-authorized-networks CIDR1,CIDR2,... \
    --no-enable-google-cloud-access \
    --enable-master-global-access

Haz los cambios siguientes:

  • CLUSTER_NAME: el nombre del clúster.
  • CIDR1,CIDR2,...: lista delimitada por comas de valores CIDR de las redes autorizadas. Por ejemplo, 8.8.8.8/32,8.8.8.0/24.

Configurar redes de clúster

En esta sección, configurará su clúster para que tenga nodos con acceso interno (privado) o externo (público). GKE te permite combinar la configuración de red de los nodos en función del tipo de clúster que utilices:

  • Clúster estándar: puedes crear o actualizar tus grupos de nodos para aprovisionar nodos privados o públicos en el mismo clúster. Por ejemplo, si creas un pool de nodos con nodos privados, GKE aprovisiona sus nodos solo con direcciones IP internas. GKE no modifica los grupos de nodos. También puedes definir la configuración de red predeterminada a nivel de clúster. GKE aplica esta configuración de red predeterminada solo cuando los grupos de nodos nuevos no tienen ninguna configuración de red definida.
  • Clústeres de Autopilot: puedes crear o actualizar tu clúster para definir la configuración de red predeterminada de todas tus cargas de trabajo. GKE programa cargas de trabajo nuevas y actuales en nodos públicos o privados en función de tu configuración. También puedes definir explícitamente la configuración de la red de clúster de una carga de trabajo concreta.

Configura el clúster

En esta sección, configure la red del clúster a nivel de clúster. GKE tiene en cuenta esta configuración cuando tu grupo de nodos o carga de trabajo no la tienen definida.

Para definir la configuración a nivel de clúster, usa la CLI de Google Cloud o laGoogle Cloud consola.

Consola

Crear un clúster

  1. Ve a la página Google Kubernetes Engine en la Google Cloud consola.

    Ir a Google Kubernetes Engine

  2. Haz clic en Crear y, a continuación, en la sección Estándar o Autopiloto, haz clic en Configurar.

  3. Configura el clúster para que se ajuste a tus requisitos.

  4. En el menú de navegación, haga clic en Redes.

  5. En la sección Redes del clúster, completa los siguientes pasos según tu caso práctico:

    1. Selecciona Habilitar nodos privados para aprovisionar nodos con solo direcciones IP internas (nodos privados), lo que impide que los clientes externos accedan a los nodos. Puedes cambiar esta configuración en cualquier momento.
    2. Desmarca Habilitar nodos privados para aprovisionar nodos con solo direcciones IP externas (públicas), lo que permite que los clientes externos accedan a los nodos.
  6. En la sección Opciones de red avanzadas, configura atributos nativos de VPC adicionales. Para obtener más información, consulta Crear un clúster nativo de VPC.

  7. Haz clic en Crear.

Actualizar un clúster

  1. Ve a la página Google Kubernetes Engine en la Google Cloud consola.

    Ir a Google Kubernetes Engine

  2. En la lista de clústeres, haz clic en el nombre del clúster.

  3. En Nodos privados, en la pestaña Configuración predeterminada del nuevo grupo de nodos, haga clic en Editar nodos privados.

  4. En el cuadro de diálogo Editar nodos privados, haz lo siguiente:

    1. Selecciona Habilitar nodos privados para aprovisionar nodos con solo direcciones IP internas (nodos privados), lo que impide que los clientes externos accedan a los nodos. Puedes cambiar esta configuración en cualquier momento.
    2. Desmarca Habilitar nodos privados para aprovisionar nodos con solo direcciones IP externas (públicas), lo que permite que los clientes externos accedan a los nodos.
  5. Haz clic en Guardar cambios.

gcloud

Usa cualquiera de las siguientes marcas para definir la red del clúster:

  • enable-private-nodes: para aprovisionar nodos solo con direcciones IP internas (nodos privados). Ten en cuenta las siguientes condiciones al usar esta marca:
    • La marca enable-ip-alias es obligatoria cuando se usa enable-private-nodes.
    • La marca master-ipv4-cidr es opcional para crear subredes privadas. Si usas esta marca, GKE crea una subred que usa los valores que has definido en master-ipv4-cidr y usa la nueva subred para aprovisionar la dirección IP interna del plano de control.
  • no-enable-private-nodes: Para aprovisionar nodos solo con direcciones IP externas (nodos públicos).

En los clústeres de Autopilot, crea o actualiza el clúster con la marca enable-private-nodes.

  • Para crear un clúster, usa el siguiente comando:

    gcloud container clusters create-auto CLUSTER_NAME \
        --enable-private-nodes \
        --enable-ip-alias
    
  • Para actualizar un clúster, usa el siguiente comando.

    gcloud container clusters update CLUSTER_NAME \
        --enable-private-nodes \
        --enable-ip-alias
    

    La actualización del clúster solo se aplica cuando se han vuelto a programar todos los grupos de nodos. Este proceso puede tardar varias horas.

En los clústeres estándar, crea o actualiza el clúster con la marca enable-private-nodes.

  • Para crear un clúster, usa el siguiente comando:

    gcloud container clusters create CLUSTER_NAME \
        --enable-private-nodes \
        --enable-ip-alias
    
  • Para actualizar un clúster, usa el siguiente comando:

    gcloud container clusters update CLUSTER_NAME \
        --enable-private-nodes \
        --enable-ip-alias
    

    La actualización del clúster solo se aplica a los grupos de nodos nuevos. GKE no actualiza esta configuración en los grupos de nodos existentes.

La configuración del clúster se sobrescribe con la configuración de la red en el grupo de nodos o a nivel de carga de trabajo.

Configurar los grupos de nodos o las cargas de trabajo

Para configurar nodos privados o públicos a nivel de carga de trabajo en clústeres de Autopilot, o bien grupos de nodos en clústeres estándar, usa la CLI de Google Cloud o la consolaGoogle Cloud . Si no defines la configuración de red a nivel de carga de trabajo o de grupo de nodos, GKE aplicará la configuración predeterminada a nivel de clúster.

Consola

En los clústeres estándar, sigue estos pasos:

  1. Ve a la página Google Kubernetes Engine en la Google Cloud consola.

    Ir a Google Kubernetes Engine

  2. En la página Detalles del clúster, haz clic en el nombre del clúster que quieras modificar.

  3. Haz clic en Añadir grupo de nodos.

  4. Marca la casilla Habilitar nodos privados en función de tu caso práctico:

    1. Selecciona Habilitar nodos privados para aprovisionar nodos con solo direcciones IP internas (nodos privados).
    2. Desmarca Habilitar nodos privados para aprovisionar nodos con solo direcciones IP externas (públicas), lo que permite que los clientes externos accedan a los nodos. Puedes cambiar esta configuración en cualquier momento.
  5. Configura tu nuevo grupo de nodos.

  6. Haz clic en Crear.

Para obtener más información sobre la gestión de grupos de nodos, consulta Añadir y gestionar grupos de nodos.

gcloud

  • En los clústeres de Autopilot y en los grupos de nodos estándar que usan el aprovisionamiento automático de nodos, añade lo siguiente nodeSelector a la especificación de tu pod:

    cloud.google.com/private-node=true
    

    Usa private-node=true para programar un pod en nodos que solo tengan direcciones IP internas (nodos privados).

    GKE vuelve a crear tus pods en nodos privados o públicos, según tu configuración. Para evitar interrupciones en la carga de trabajo, migra cada carga de trabajo de forma independiente y monitoriza la migración.

  • En los clústeres estándar, para aprovisionar nodos mediante direcciones IP privadas en un grupo de nodos, ejecuta el siguiente comando:

    gcloud container node-pools update NODE_POOL_NAME \
        --cluster=CLUSTER_NAME \
        --enable-private-nodes \
        --enable-ip-alias
    

    Haz los cambios siguientes:

    • NODE_POOL_NAME: el nombre del grupo de nodos que quieras editar.
    • CLUSTER_NAME: el nombre del clúster.

    Usa cualquiera de las siguientes marcas para definir la configuración de red del grupo de nodos:

    • enable-private-nodes: para aprovisionar nodos solo con direcciones IP internas (nodos privados).
    • no-enable-private-nodes: Para aprovisionar nodos solo con direcciones IP externas (nodos públicos).

Configuración avanzada

En las secciones siguientes se describen configuraciones avanzadas que puedes usar al configurar el aislamiento de la red de tu clúster.

Usar Cloud Shell para acceder a un clúster con el endpoint externo inhabilitado

Si el endpoint externo del plano de control de tu clúster está inhabilitado, no podrás acceder al plano de control de GKE con Cloud Shell. Si quieres usar Cloud Shell para acceder a tu clúster, te recomendamos que habilites el endpoint basado en DNS.

Para verificar el acceso a tu clúster, sigue estos pasos:

  1. Si has habilitado el endpoint basado en DNS, ejecuta el siguiente comando para obtener las credenciales de tu clúster:

    gcloud container clusters get-credentials CLUSTER_NAME \
        --dns-endpoint
    

    Si has habilitado el endpoint basado en IP, ejecuta el siguiente comando para obtener las credenciales de tu clúster:

    gcloud container clusters get-credentials CLUSTER_NAME \
        --project=PROJECT_ID \
        --internal-ip
    

    Sustituye PROJECT_ID por el ID del proyecto.

  2. Usa kubectl en Cloud Shell para acceder a tu clúster:

    kubectl get nodes
    

    El resultado debería ser similar al siguiente:

    NAME                                               STATUS   ROLES    AGE    VERSION
    gke-cluster-1-default-pool-7d914212-18jv   Ready    <none>   104m   v1.21.5-gke.1302
    gke-cluster-1-default-pool-7d914212-3d9p   Ready    <none>   104m   v1.21.5-gke.1302
    gke-cluster-1-default-pool-7d914212-wgqf   Ready    <none>   104m   v1.21.5-gke.1302
    

El comando get-credentials usa automáticamente el endpoint basado en DNS si el acceso al endpoint basado en IP está inhabilitado.

Añadir reglas de cortafuegos para casos prácticos específicos

En esta sección se explica cómo añadir una regla de firewall a un clúster. De forma predeterminada, las reglas de cortafuegos restringen el plano de control de tu clúster para que solo inicie conexiones TCP con tus nodos y pods en los puertos 443 (HTTPS) y 10250 (kubelet). Para algunas funciones de Kubernetes, es posible que tengas que añadir reglas de cortafuegos para permitir el acceso a puertos adicionales. No cree reglas de cortafuegos ni reglas de políticas de cortafuegos jerárquicas que tengan una prioridad más alta que las reglas de cortafuegos creadas automáticamente.

Entre las funciones de Kubernetes que requieren reglas de cortafuegos adicionales se incluyen las siguientes:

Si añades una regla de cortafuegos, se permitirá el tráfico del plano de control del clúster a todos los elementos siguientes:

  • El puerto especificado de cada nodo (hostPort).
  • El puerto especificado de cada pod que se ejecuta en estos nodos.
  • El puerto especificado de cada servicio que se ejecuta en estos nodos.

Para obtener información sobre las reglas de cortafuegos, consulta el artículo Reglas de cortafuegos de la documentación de Cloud Load Balancing.

Para añadir una regla de cortafuegos a un clúster, debes registrar el bloque CIDR del plano de control del clúster y el destino utilizado. Una vez que lo hayas registrado, podrás crear la regla.

Ver el bloque CIDR del plano de control

Necesitas el bloque CIDR del plano de control del clúster para añadir una regla de cortafuegos.

Consola

  1. Ve a la página Google Kubernetes Engine en la Google Cloud consola.

    Ir a Google Kubernetes Engine

  2. En la lista de clústeres, haz clic en el nombre del clúster.

En la pestaña Detalles, en Redes, anota el valor del campo Intervalo de direcciones del plano de control.

gcloud

Ejecuta el siguiente comando:

gcloud container clusters describe CLUSTER_NAME

Sustituye CLUSTER_NAME por el nombre de tu clúster.

En el resultado del comando, anota el valor del campo masterIpv4CidrBlock.

Ver las reglas de cortafuegos

Debe especificar el destino (en este caso, los nodos de destino) que usan las reglas de firewall del clúster.

Consola

  1. Ve a la página Políticas de cortafuegos de la consola de Google Cloud .

    Ir a Políticas de cortafuegos

  2. En la tabla de filtros de las reglas de cortafuegos de VPC, introduce gke-CLUSTER_NAME.

En los resultados, anota el valor del campo Objetivos.

gcloud

Ejecuta el siguiente comando:

gcloud compute firewall-rules list \
    --filter 'name~^gke-CLUSTER_NAME' \
    --format 'table(
        name,
        network,
        direction,
        sourceRanges.list():label=SRC_RANGES,
        allowed[].map().firewall_rule().list():label=ALLOW,
        targetTags.list():label=TARGET_TAGS
    )'

En el resultado del comando, anota el valor del campo Targets (Objetivos).

Para ver las reglas de cortafuegos de una VPC compartida, añade la marca --project HOST_PROJECT_ID al comando.

Añadir una regla de cortafuegos

Consola

  1. Ve a la página Políticas de cortafuegos de la consola de Google Cloud .

    Ir a Políticas de cortafuegos

  2. Haz clic en Crear regla de cortafuegos.

  3. En Nombre, introduce el nombre de la regla de cortafuegos.

  4. En la lista Red, selecciona la red correspondiente.

  5. En Dirección del tráfico, haga clic en Entrada.

  6. En Acción tras coincidencia, haz clic en Permitir.

  7. En la lista Objetivos, seleccione Etiquetas de objetivo especificadas.

  8. En Etiquetas de destino, introduce el valor de destino que has anotado antes.

  9. En la lista Filtro de origen, selecciona Intervalos de IPv4.

  10. En Intervalos IPv4 de origen, introduce el bloque CIDR del plano de control del clúster.

  11. En Protocolos y puertos, haz clic en Protocolos y puertos especificados, selecciona la casilla del protocolo correspondiente (tcp o udp) e introduce el número de puerto en el campo del protocolo.

  12. Haz clic en Crear.

gcloud

Ejecuta el siguiente comando:

gcloud compute firewall-rules create FIREWALL_RULE_NAME \
    --action ALLOW \
    --direction INGRESS \
    --source-ranges CONTROL_PLANE_RANGE \
    --rules PROTOCOL:PORT \
    --target-tags TARGET

Haz los cambios siguientes:

  • FIREWALL_RULE_NAME: el nombre que elijas para la regla de firewall.
  • CONTROL_PLANE_RANGE: el intervalo de direcciones IP del plano de control del clúster (masterIpv4CidrBlock) que has recogido anteriormente.
  • PROTOCOL:PORT: el puerto y su protocolo, tcp o udp.
  • TARGET: el valor de destino (Targets) que has recogido anteriormente.

Para añadir una regla de cortafuegos a una VPC compartida, añade las siguientes marcas al comando:

--project HOST_PROJECT_ID
--network NETWORK_ID

Conceder acceso a Internet de salida a nodos privados

Para proporcionar acceso saliente a Internet a tus nodos privados (por ejemplo, para extraer imágenes de un registro externo), usa Cloud NAT para crear y configurar un Cloud Router. Cloud NAT permite que los nodos privados establezcan conexiones salientes a través de Internet para enviar y recibir paquetes.

Cloud Router permite que todos los nodos de la región usen Cloud NAT para todos los intervalos de IPs principales y de alias. También asigna automáticamente las direcciones IP externas de la pasarela NAT.

Para obtener instrucciones sobre cómo crear y configurar un router de Cloud, consulta el artículo Crear una configuración de Cloud NAT con Cloud Router de la documentación de Cloud NAT.

.

Desplegar una aplicación de contenedor de Windows Server

Para saber cómo desplegar una aplicación de contenedor de Windows Server en un clúster con nodos privados, consulta la documentación sobre grupos de nodos de Windows.

Siguientes pasos