En esta página se explica cómo crear un clúster privado de Google Kubernetes Engine (GKE), que es un tipo de clúster nativo de VPC. En un clúster privado, los nodos solo tienen direcciones IP internas, lo que significa que los nodos y los pods están aislados de Internet de forma predeterminada. Puede elegir si quiere tener acceso al plano de control, si quiere que sea limitado o si no quiere tener acceso.
.Restricciones y limitaciones
Los clústeres privados deben ser 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
.
Comprueba que tienes el permiso correcto para crear clústeres. Como mínimo, debes tener el rol Administrador de clúster de Kubernetes Engine.
Asegúrate de que tienes una ruta a la pasarela de Internet predeterminada.
Crear un clúster privado sin acceso de cliente al endpoint público
En esta sección, crearás los siguientes recursos:
- Un clúster privado llamado
private-cluster-0
que tiene nodos privados y que no tiene acceso de cliente al endpoint público. - Una red llamada
my-net-0
. - Una subred llamada
my-subnet-0
.
Consola
Crear una red y una subred
Ve a la página Redes de VPC de la Google Cloud consola.
Haz clic en add_box Crear red VPC.
En Nombre, escribe
my-net-0
.En Modo de creación de subred, selecciona Personalizado.
En la sección Nueva subred, en Nombre, introduce
my-subnet-0
.En la lista Región, selecciona la que quieras.
En Intervalo de direcciones IP, introduce
10.2.204.0/22
.Activa Acceso privado de Google.
Haz clic en Listo.
Haz clic en Crear.
Crear un clúster privado
Ve a la página Google Kubernetes Engine en la Google Cloud consola.
Haz clic en
Crear y, a continuación, en la sección Estándar o Autopiloto, haz clic en Configurar.En Nombre, especifica
private-cluster-0
.En el panel de navegación, haz clic en Redes.
En la lista Red, selecciona my-net-0.
En la lista Subred de nodos, selecciona my-subnet-0.
Selecciona el botón de selección Clúster privado.
Desmarque la casilla Acceder al plano de control con su dirección IP externa.
(Opcional para Autopilot): asigna el valor Intervalo de direcciones IP del plano de control a
172.16.0.32/28
.Haz clic en Crear.
gcloud
En los clústeres Autopilot, ejecuta el siguiente comando:
gcloud container clusters create-auto private-cluster-0 \ --create-subnetwork name=my-subnet-0 \ --enable-master-authorized-networks \ --enable-private-nodes \ --enable-private-endpoint
En los clústeres estándar, ejecuta el siguiente comando:
gcloud container clusters create private-cluster-0 \ --create-subnetwork name=my-subnet-0 \ --enable-master-authorized-networks \ --enable-ip-alias \ --enable-private-nodes \ --enable-private-endpoint \ --master-ipv4-cidr 172.16.0.32/28
donde:
--create-subnetwork name=my-subnet-0
hace que GKE cree automáticamente una subred llamadamy-subnet-0
.--enable-master-authorized-networks
especifica que el acceso al endpoint público está restringido a los intervalos de direcciones IP que autorices.--enable-ip-alias
hace que el clúster sea nativo de VPC (no es necesario para Autopilot).--enable-private-nodes
indica que los nodos del clúster no tienen direcciones IP externas.--enable-private-endpoint
indica que el clúster se gestiona mediante la dirección IP interna del endpoint de la API del plano de control.--master-ipv4-cidr 172.16.0.32/28
especifica un intervalo de direcciones IP internas para el plano de control (opcional en Autopilot). Este ajuste es permanente para este clúster y debe ser único en la VPC. Se admite el uso de direcciones IP internas que no sean de RFC 1918.
API
Para crear un clúster sin un plano de control accesible públicamente, especifica el campo enablePrivateEndpoint: true
en el recurso privateClusterConfig
.
En este punto, estas son las únicas direcciones IP que tienen acceso al plano de control:
- El intervalo principal de
my-subnet-0
. - Intervalo secundario que se usa para los pods.
Por ejemplo, supongamos que has creado una VM en el intervalo principal de my-subnet-0
.
A continuación, en esa máquina virtual, puedes configurar kubectl
para que use la dirección IP interna del plano de control.
Si quieres acceder al plano de control desde fuera de my-subnet-0
, debes autorizar al menos un intervalo de direcciones para que tenga acceso al endpoint privado.
Supongamos que tienes una VM en la red predeterminada, en la misma región que tu clúster, pero no en my-subnet-0
.
Por ejemplo:
my-subnet-0
:10.0.0.0/22
- Intervalo secundario de pods:
10.52.0.0/14
- Dirección de la VM:
10.128.0.3
Puedes autorizar a la VM para que acceda al plano de control con este comando:
gcloud container clusters update private-cluster-0 \
--enable-master-authorized-networks \
--master-authorized-networks 10.128.0.3/32
Crear un clúster privado con acceso limitado al endpoint público
Cuando creas un clúster privado con esta configuración, puedes usar una subred generada automáticamente o una subred personalizada.
Usar una subred generada automáticamente
En esta sección, creará un clúster privado llamado private-cluster-1
, donde GKE generará automáticamente una subred para los nodos del clúster.
La subred tiene habilitado el Acceso privado de Google. En la subred, GKE crea automáticamente dos intervalos secundarios: uno para los pods y otro para los servicios.
Puedes usar la CLI de Google Cloud o la API de GKE.
gcloud
En los clústeres Autopilot, ejecuta el siguiente comando:
gcloud container clusters create-auto private-cluster-1 \ --create-subnetwork name=my-subnet-1 \ --enable-master-authorized-networks \ --enable-private-nodes
En los clústeres estándar, ejecuta el siguiente comando:
gcloud container clusters create private-cluster-1 \ --create-subnetwork name=my-subnet-1 \ --enable-master-authorized-networks \ --enable-ip-alias \ --enable-private-nodes \ --master-ipv4-cidr 172.16.0.0/28
donde:
--create-subnetwork name=my-subnet-1
hace que GKE cree automáticamente una subred llamadamy-subnet-1
.--enable-master-authorized-networks
especifica que el acceso al endpoint público está restringido a los intervalos de direcciones IP que autorices.--enable-ip-alias
hace que el clúster sea nativo de VPC (no es necesario para Autopilot).--enable-private-nodes
indica que los nodos del clúster no tienen direcciones IP externas.--master-ipv4-cidr 172.16.0.0/28
especifica un intervalo de direcciones IP internas para el plano de control (opcional para Autopilot). Este ajuste es permanente para este clúster y debe ser único en la VPC. Se admite el uso de direcciones IP internas que no sean de RFC 1918.
API
Especifica el campo privateClusterConfig
en el recurso de la API Cluster
:
{
"name": "private-cluster-1",
...
"ipAllocationPolicy": {
"createSubnetwork": true,
},
...
"privateClusterConfig" {
"enablePrivateNodes": boolean # Creates nodes with internal IP addresses only
"enablePrivateEndpoint": boolean # false creates a cluster control plane with a publicly-reachable endpoint
"masterIpv4CidrBlock": string # CIDR block for the cluster control plane
"privateEndpoint": string # Output only
"publicEndpoint": string # Output only
}
}
En este punto, estas son las únicas direcciones IP que tienen acceso al plano de control del clúster:
- El intervalo principal de
my-subnet-1
. - Intervalo secundario que se usa para los pods.
Imagina que tienes un grupo de máquinas fuera de tu red de VPC que tienen direcciones en el intervalo 203.0.113.0/29
. Puedes autorizar a esas máquinas para que accedan al endpoint público introduciendo este comando:
gcloud container clusters update private-cluster-1 \
--enable-master-authorized-networks \
--master-authorized-networks 203.0.113.0/29
Ahora, estas son las únicas direcciones IP que tienen acceso al plano de control:
- El intervalo principal de
my-subnet-1
. - Intervalo secundario que se usa para los pods.
- Intervalos de direcciones que hayas autorizado, como
203.0.113.0/29
.
Usar una subred personalizada
En esta sección, crearás los siguientes recursos:
- Un clúster privado llamado
private-cluster-2
. - Una red llamada
my-net-2
. - Una subred llamada
my-subnet-2
, con el intervalo principal192.168.0.0/20
, para los nodos del clúster. Tu subred tiene los siguientes intervalos de direcciones secundarias:my-pods
para las direcciones IP de los pods.my-services
para las direcciones IP de servicio.
Consola
Crear una red, una subred y rangos secundarios
Ve a la página Redes de VPC de la Google Cloud consola.
Haz clic en add_box Crear red VPC.
En Nombre, escribe
my-net-2
.En Modo de creación de subred , selecciona Personalizado.
En la sección Nueva subred, en Nombre, introduce
my-subnet-2
.En la lista Región, selecciona la que quieras.
En Intervalo de direcciones IP, introduce
192.168.0.0/20
.Haz clic en Crear intervalo de IPs secundario. En Nombre del intervalo de subred, escribe
my-services
y, en Intervalo de IP secundario, escribe10.0.32.0/20
.Haz clic en Añadir intervalo de IPs. En Nombre del intervalo de subred, escribe
my-pods
y, en Intervalo de IP secundario, escribe10.4.0.0/14
.Activa Acceso privado de Google.
Haz clic en Listo.
Haz clic en Crear.
Crear un clúster privado
Crea un clúster privado que use tu subred:
Ve a la página Google Kubernetes Engine en la Google Cloud consola.
Haz clic en
Crear y, a continuación, en la sección Estándar o Autopiloto, haz clic en Configurar.En Nombre, escribe
private-cluster-2
.En el panel de navegación, haz clic en Redes.
Selecciona el botón de selección Clúster privado.
Para crear un plano de control al que se pueda acceder desde intervalos de IP externas autorizadas, mantén marcada la casilla Acceder al plano de control con su dirección IP externa.
(Opcional para Autopilot) Asigna el valor
172.16.0.16/28
a Intervalo de direcciones IP del plano de control.En la lista Red, selecciona my-net-2.
En la lista Subred de nodos, selecciona my-subnet-2.
Desmarca la casilla Crear automáticamente intervalos secundarios.
En la lista Intervalo CIDR secundario de pods, selecciona my-pods.
En la lista Intervalo CIDR secundario de servicios, selecciona my-services.
Marca la casilla Habilitar redes autorizadas del plano de control.
Haz clic en Crear.
gcloud
Crear una red
Primero, crea una red para tu clúster. El siguiente comando crea una red, my-net-2
:
gcloud compute networks create my-net-2 \
--subnet-mode custom
Crear una subred e intervalos secundarios
A continuación, crea una subred, my-subnet-2
, en la red my-net-2
, con los intervalos secundarios my-pods
para los pods y my-services
para los servicios:
gcloud compute networks subnets create my-subnet-2 \
--network my-net-2 \
--range 192.168.0.0/20 \
--secondary-range my-pods=10.4.0.0/14,my-services=10.0.32.0/20 \
--enable-private-ip-google-access
Crear un clúster privado
Ahora, crea un clúster privado, private-cluster-2
, con la red, la subred y los intervalos secundarios que has creado.
En los clústeres Autopilot, ejecuta el siguiente comando:
gcloud container clusters create-auto private-cluster-2 \ --enable-master-authorized-networks \ --network my-net-2 \ --subnetwork my-subnet-2 \ --cluster-secondary-range-name my-pods \ --services-secondary-range-name my-services \ --enable-private-nodes
En los clústeres estándar, ejecuta el siguiente comando:
gcloud container clusters create private-cluster-2 \ --enable-master-authorized-networks \ --network my-net-2 \ --subnetwork my-subnet-2 \ --cluster-secondary-range-name my-pods \ --services-secondary-range-name my-services \ --enable-private-nodes \ --enable-ip-alias \ --master-ipv4-cidr 172.16.0.16/28 \ --no-enable-basic-auth \ --no-issue-client-certificate
En este punto, estas son las únicas direcciones IP que tienen acceso al plano de control:
- El intervalo principal de
my-subnet-2
. - El intervalo secundario
my-pods
.
Supongamos que tienes un grupo de máquinas fuera de my-net-2
que tienen direcciones en el intervalo 203.0.113.0/29
. Puedes autorizar a esas máquinas para que accedan al endpoint público introduciendo este comando:
gcloud container clusters update private-cluster-2 \
--enable-master-authorized-networks \
--master-authorized-networks 203.0.113.0/29
En este punto, estas son las únicas direcciones IP que tienen acceso al plano de control:
- El intervalo principal de
my-subnet-2
. - El intervalo secundario
my-pods
. - Intervalos de direcciones que hayas autorizado, como
203.0.113.0/29
.
Usar Cloud Shell para acceder a un clúster privado
Si has habilitado un endpoint privado, no podrás acceder a tu plano de control de GKE con Cloud Shell.
Si quieres usar Cloud Shell para acceder a tu clúster, debes añadir la dirección IP externa de Cloud Shell a la lista de redes autorizadas del clúster.
Para hacer esto:
En la ventana de la línea de comandos de Cloud Shell, usa
dig
para buscar la dirección IP externa de Cloud Shell:dig +short myip.opendns.com @resolver1.opendns.com
Añade la dirección externa de tu Cloud Shell a la lista de redes autorizadas de tu clúster:
gcloud container clusters update CLUSTER_NAME \ --enable-master-authorized-networks \ --master-authorized-networks EXISTING_AUTH_NETS,SHELL_IP/32
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre de tu clúster.EXISTING_AUTH_NETS
: las direcciones IP de tu lista de redes autorizadas. Puede encontrar sus redes autorizadas en la consola o ejecutando el siguiente comando:gcloud container clusters describe CLUSTER_NAME --format "flattened(masterAuthorizedNetworksConfig.cidrBlocks[])"
SHELL_IP
: la dirección IP externa de tu Cloud Shell.
Obtén las credenciales para poder usar
kubectl
y acceder al clúster:gcloud container clusters get-credentials CLUSTER_NAME \ --project=PROJECT_ID \ --internal-ip
Sustituye
PROJECT_ID
por el ID del proyecto.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
Crear un clúster privado con acceso ilimitado al endpoint público
En esta sección, creará un clúster privado en el que cualquier dirección IP podrá acceder al plano de control.
Consola
Ve a la página Google Kubernetes Engine en la Google Cloud consola.
Haz clic en
Crear y, a continuación, en la sección Estándar o Autopiloto, haz clic en Configurar.En Nombre, escribe
private-cluster-3
.En el panel de navegación, haz clic en Redes.
Selecciona la opción Clúster privado.
Mantén marcada la casilla Acceder al plano de control con su dirección IP externa.
(Opcional para Autopilot) Asigna el valor
172.16.0.32/28
a Intervalo de direcciones IP del plano de control.Deja Red y Subred de nodos configurados como
default
. De esta forma, GKE genera una subred para tu clúster.Desmarca la casilla Habilitar redes autorizadas del plano de control.
Haz clic en Crear.
gcloud
En los clústeres Autopilot, ejecuta el siguiente comando:
gcloud container clusters create-auto private-cluster-3 \ --create-subnetwork name=my-subnet-3 \ --no-enable-master-authorized-networks \ --enable-private-nodes
En los clústeres estándar, ejecuta el siguiente comando:
gcloud container clusters create private-cluster-3 \ --create-subnetwork name=my-subnet-3 \ --no-enable-master-authorized-networks \ --enable-ip-alias \ --enable-private-nodes \ --master-ipv4-cidr 172.16.0.32/28
donde:
--create-subnetwork name=my-subnet-3
hace que GKE cree automáticamente una subred llamadamy-subnet-3
.--no-enable-master-authorized-networks
inhabilita las redes autorizadas del clúster.--enable-ip-alias
hace que el clúster sea nativo de VPC (no es necesario para Autopilot).--enable-private-nodes
indica que los nodos del clúster no tienen direcciones IP externas.--master-ipv4-cidr 172.16.0.32/28
especifica un intervalo de direcciones IP internas para el plano de control (opcional para Autopilot). Este ajuste es permanente para este clúster y debe ser único en la VPC. Se admite el uso de direcciones IP internas que no sean de RFC 1918.
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:
- Webhooks de admisión
- Servidores de APIs agregadas
- Conversión de webhook
- Configuración de auditoría dinámica
- Por lo general, cualquier API que tenga un campo ServiceReference requiere reglas de cortafuegos adicionales.
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
Ve a la página Google Kubernetes Engine en la Google Cloud consola.
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
Ve a la página Políticas de cortafuegos de la consola de Google Cloud .
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
Ve a la página Políticas de cortafuegos de la consola de Google Cloud .
Haz clic en add_box Crear regla de cortafuegos.
En Nombre, introduce el nombre de la regla de cortafuegos.
En la lista Red, selecciona la red correspondiente.
En Dirección del tráfico, haga clic en Entrada.
En Acción tras coincidencia, haz clic en Permitir.
En la lista Objetivos, seleccione Etiquetas de objetivo especificadas.
En Etiquetas de destino, introduce el valor de destino que has anotado antes.
En la lista Filtro de origen, selecciona Intervalos de IPv4.
En Intervalos IPv4 de origen, introduce el bloque CIDR del plano de control del clúster.
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.
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
oudp
.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
Verificar que los nodos no tengan direcciones IP externas
Una vez que hayas creado un clúster privado, comprueba que los nodos del clúster no tengan direcciones IP externas.
Consola
Ve a la página Google Kubernetes Engine en la Google Cloud consola.
En la lista de clústeres, haz clic en el nombre del clúster.
En el caso de los clústeres de Autopilot, en la sección Información básica del clúster, consulta el campo Endpoint externo. El valor es Inhabilitado.
En los clústeres estándar, haz lo siguiente:
- En la página Clústeres, haz clic en la pestaña Nodos.
- En Grupos de nodos, haz clic en el nombre del grupo de nodos.
- En la página Detalles del grupo de nodos, en Grupos de instancias, haz clic en el nombre del grupo de instancias. Por ejemplo, gke-private-cluster-0-default-pool-5c5add1f-grp.
- En la lista de instancias, comprueba que tus instancias no tengan direcciones IP externas.
gcloud
Ejecuta el siguiente comando:
kubectl get nodes --output wide
La columna EXTERNAL-IP
de la salida está vacía:
STATUS ... VERSION EXTERNAL-IP OS-IMAGE ...
Ready v.8.7-gke.1 Container-Optimized OS
Ready v1.8.7-gke.1 Container-Optimized OS
Ready v1.8.7-gke.1 Container-Optimized OS
Verificar la reutilización del emparejamiento de VPC en el clúster
Los clústeres privados que crees después del 15 de enero del 2020 reutilizarán las conexiones de emparejamiento entre redes de VPC.
Puedes comprobar si tu clúster privado reutiliza las conexiones de emparejamiento entre redes VPC mediante la CLI de gcloud o la Google Cloud consola.
Consola
Consulta la fila Emparejamiento de VPC en la página Detalles del clúster. Si tu clúster reutiliza conexiones de emparejamiento de VPC, el resultado empieza por gke-n
.
Por ejemplo, gke-n34a117b968dee3b2221-93c6-40af-peer
.
gcloud
gcloud container clusters describe CLUSTER_NAME \
--format="value(privateClusterConfig.peeringName)"
Si tu clúster reutiliza conexiones de emparejamiento de VPC, el resultado empieza por gke-n
. Por ejemplo, gke-n34a117b968dee3b2221-93c6-40af-peer
.
Configuraciones avanzadas de clústeres
En esta sección se describen algunas configuraciones avanzadas que puede que quieras usar al crear un clúster privado.
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.
.Crear un clúster privado en una red de VPC compartida
Para saber cómo crear un clúster privado en una red de VPC compartida, consulta Crear un clúster privado en una VPC compartida.
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.
Acceder al endpoint privado del plano de control de forma global
El endpoint privado del plano de control se implementa mediante un balanceador de carga de red interno de transferencia en la red de VPC del plano de control. Los clientes internos o conectados a través de túneles de Cloud VPN y adjuntos de VLAN de Cloud Interconnect pueden acceder a balanceadores de carga de red internos de tipo pasarela.
De forma predeterminada, estos clientes deben estar ubicados en la misma región que el balanceador de carga.
Cuando habilitas el acceso global al plano de control, el balanceador de carga de red con paso a través interno es accesible a nivel global: las máquinas virtuales de cliente y los sistemas locales pueden conectarse al endpoint privado del plano de control, sujeto a la configuración de las redes autorizadas, desde cualquier región.
Para obtener más información sobre los balanceadores de carga de red con paso a través internos y el acceso global, consulta el artículo Balanceadores de carga internos y redes conectadas.
Habilitar el acceso global al endpoint privado del plano de control
De forma predeterminada, el acceso global no está habilitado para el endpoint privado del plano de control cuando creas un clúster privado. Para habilitar el acceso global al plano de control, usa las siguientes herramientas en función del modo de tu clúster:
- En los clústeres estándar, puedes usar
Google Cloud CLI
o la consola Google Cloud . - En el caso de los clústeres de Autopilot, puedes usar el recurso de Terraform
google_container_cluster
.
Consola
Para crear un clúster privado con el acceso global al plano de control habilitado, sigue estos pasos:
En la Google Cloud consola, ve a la página Crear un clúster de Autopilot.
Ir a Crear un clúster de Autopilot
También puedes completar esta tarea creando un clúster estándar.
Escribe un nombre.
En el panel de navegación, haz clic en Redes.
Selecciona Clúster privado.
Marca la casilla Habilitar el acceso global al plano de control.
Configura los demás campos como quieras.
Haz clic en Crear.
Para habilitar el acceso global al plano de control de un clúster privado, sigue estos pasos:
Ve a la página Google Kubernetes Engine en la Google Cloud consola.
Junto al clúster que quieras editar, haz clic en more_vert Acciones y, a continuación, en edit Editar.
En la sección Redes, junto a Acceso global al plano de control, haz clic en edit Editar.
En el cuadro de diálogo Editar acceso global al plano de control, marca la casilla Habilitar acceso global al plano de control.
Haz clic en Guardar cambios.
gcloud
Añade la marca --enable-master-global-access
para crear un clúster privado con el acceso global al endpoint privado del plano de control habilitado:
gcloud container clusters create CLUSTER_NAME \
--enable-private-nodes \
--enable-master-global-access
También puedes habilitar el acceso global al endpoint privado del plano de control de un clúster privado que ya tengas:
gcloud container clusters update CLUSTER_NAME \
--enable-master-global-access
Verificar el acceso global al endpoint privado del plano de control
Para verificar que el acceso global al endpoint privado del plano de control está habilitado, ejecuta el siguiente comando y consulta su salida.
gcloud container clusters describe CLUSTER_NAME
El resultado incluye una sección privateClusterConfig
en la que puedes ver el estado de masterGlobalAccessConfig
.
privateClusterConfig:
enablePrivateNodes: true
masterIpv4CidrBlock: 172.16.1.0/28
peeringName: gke-1921aee31283146cdde5-9bae-9cf1-peer
privateEndpoint: 172.16.1.2
publicEndpoint: 34.68.128.12
masterGlobalAccessConfig:
enabled: true
Acceder al endpoint privado del plano de control desde otras redes
Cuando creas un clúster privado de GKE y inhabilitas el punto de conexión público del plano de control, debes administrar el clúster con herramientas como kubectl
mediante el punto de conexión privado del plano de control. Puedes acceder al endpoint privado del plano de control del clúster desde otra red, incluidas las siguientes:
- Una red local conectada a la red de VPC del clúster mediante túneles de Cloud VPN o vinculaciones de VLAN de Cloud Interconnect
- Otra red de VPC conectada a la red de VPC del clúster mediante túneles de Cloud VPN
En el siguiente diagrama se muestra una ruta entre una red on-premise y los nodos del plano de control de GKE:
Para permitir que los sistemas de otra red se conecten al endpoint privado del plano de control de un clúster, debes cumplir los siguientes requisitos:
Identifica y registra la información de red pertinente del clúster y del endpoint privado de su plano de control.
gcloud container clusters describe CLUSTER_NAME \ --location=COMPUTE_LOCATION \ --format="yaml(network, privateClusterConfig)"
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre del clúster.COMPUTE_LOCATION
: la ubicación de Compute Engine del clúster
En el resultado del comando, identifica y registra la siguiente información para usarla en los pasos siguientes:
network
: el nombre o el URI de la red VPC del clúster.privateEndpoint
: la dirección IPv4 del endpoint privado del plano de control o el intervalo CIDR IPv4 que lo contiene (masterIpv4CidrBlock
).peeringName
: nombre de la conexión de emparejamiento entre redes de VPC que se usa para conectar la red VPC del clúster con la red VPC del plano de control.
El resultado debería ser similar al siguiente:
network: cluster-network privateClusterConfig: enablePrivateNodes: true masterGlobalAccessConfig: enabled: true masterIpv4CidrBlock: 172.16.1.0/28 peeringName: gke-1921aee31283146cdde5-9bae-9cf1-peer privateEndpoint: 172.16.1.2 publicEndpoint: 34.68.128.12
Te recomendamos que habilites el acceso global al endpoint privado del plano de control para permitir que los paquetes entren desde cualquier región de la red VPC del clúster. Si habilitas el acceso global al endpoint privado del plano de control, podrás conectarte al endpoint privado mediante túneles de Cloud VPN o vinculaciones de VLAN de Cloud Interconnect ubicados en cualquier región, no solo en la región del clúster.
Crea una ruta para la dirección IP
privateEndpoint
o el intervalo de direcciones IPmasterIpv4CidrBlock
en la otra red. Como la dirección IP del endpoint privado del plano de control siempre se ajusta al intervalo de direcciones IPv4masterIpv4CidrBlock
, si creas una ruta para la dirección IPprivateEndpoint
o para el intervalo que la contiene, se proporciona una ruta para los paquetes de la otra red al endpoint privado del plano de control si se cumplen las siguientes condiciones:La otra red se conecta a la red de VPC del clúster mediante vinculaciones de VLAN de Cloud Interconnect o túneles de Cloud VPN que usan rutas dinámicas (BGP): usa una ruta anunciada personalizada de Cloud Router. Para obtener más información, consulta la sección sobre cómo anunciar intervalos de direcciones personalizadas de la documentación de Cloud Router.
La otra red se conecta a la red de VPC del clúster mediante túneles de VPN clásica que no usan rutas dinámicas: debes configurar una ruta estática en la otra red.
Configura la red VPC del clúster para que exporte sus rutas personalizadas en la relación de emparejamiento a la red VPC del plano de control. Google Cloud siempre configura la red VPC del plano de control para que importe rutas personalizadas desde la red VPC del clúster. Este paso proporciona una ruta para los paquetes desde el endpoint privado del plano de control a la otra red.
Para habilitar la exportación de rutas personalizadas desde la red de VPC de tu clúster, usa el siguiente comando:
gcloud compute networks peerings update PEERING_NAME \ --network=CLUSTER_VPC_NETWORK \ --export-custom-routes
Haz los cambios siguientes:
PEERING_NAME
: el nombre del emparejamiento que conecta la red VPC del clúster con la red VPC del plano de controlCLUSTER_VPC_NETWORK
: el nombre o el URI de la red VPC del clúster
Si la exportación de rutas personalizadas está habilitada en la VPC, la creación de rutas que se solapen con Google Cloud intervalos de IP podría dañar el clúster.
Para obtener más información sobre cómo actualizar el intercambio de rutas de las conexiones de emparejamiento entre redes de VPC, consulta Actualizar la conexión de emparejamiento.
Las rutas personalizadas de la red de VPC del clúster incluyen rutas cuyos destinos son intervalos de direcciones IP de otras redes, como una red local. Para asegurarte de que estas rutas se conviertan en rutas personalizadas de emparejamiento en la red de VPC del plano de control, consulta Destinos admitidos de la otra red.
Destinos admitidos de la otra red
Los intervalos de direcciones que la otra red envía a los routers de Cloud Router de la red VPC del clúster deben cumplir las siguientes condiciones:
Aunque la VPC de tu clúster puede aceptar una ruta predeterminada (
0.0.0.0/0
), la red de VPC del plano de control siempre rechaza las rutas predeterminadas porque ya tiene una ruta predeterminada local. Si la otra red envía una ruta predeterminada a tu red de VPC, también debe enviar los destinos específicos de los sistemas que necesiten conectarse al endpoint privado del plano de control. Para obtener más información, consulta Orden de enrutamiento.Si la red de VPC del plano de control acepta rutas que sustituyen de forma efectiva a una ruta predeterminada, esas rutas interrumpen la conectividad con las APIs y los servicios deGoogle Cloud , lo que interrumpe el plano de control del clúster. Por ejemplo, la otra red no debe anunciar rutas con destinos
0.0.0.0/1
y128.0.0.0/1
. Consulta el punto anterior para ver una alternativa.
Monitoriza los límites de Cloud Router, especialmente el número máximo de destinos únicos para las rutas aprendidas.
Proteger un clúster privado con Controles de Servicio de VPC
Para proteger aún más tus clústeres privados de GKE, puedes usar Controles de Servicio de VPC.
Controles de Servicio de VPC proporciona seguridad adicional a tus clústeres privados de GKE para ayudarte a mitigar el riesgo de filtración externa de datos. Con Controles de Servicio de VPC, puedes añadir proyectos a perímetros de servicio que protejan recursos y servicios de solicitudes que procedan de fuera del perímetro.
Para obtener más información sobre los perímetros de servicio, consulta Detalles y configuración de los perímetros de servicio.
Si usas Artifact Registry con tu clúster privado de GKE en un perímetro de servicio de Controles de Servicio de VPC, debes configurar el enrutamiento a la IP virtual restringida para evitar la exfiltración de datos.
Eliminar los recursos utilizados
Después de completar las tareas de esta página, siga estos pasos para eliminar los recursos y evitar que se le cobren cargos no deseados en su cuenta:
Eliminar los clústeres
Consola
Ve a la página Google Kubernetes Engine en la Google Cloud consola.
Selecciona cada clúster.
Haz clic en delete Eliminar.
gcloud
gcloud container clusters delete -q private-cluster-0 private-cluster-1 private-cluster-2 private-cluster-3
Eliminar la cadena
Consola
Ve a la página Redes de VPC de la consola de Google Cloud .
En la lista de redes, haz clic en
my-net-0
.En la página Detalles de la red de VPC, haz clic en delete Eliminar red de VPC.
En el cuadro de diálogo Eliminar una red, haz clic en Eliminar.
gcloud
gcloud compute networks delete my-net-0
Siguientes pasos
- Consulta las configuraciones avanzadas con clústeres privados.
- Consulta cómo crear clústeres nativos de VPC.
- Más información sobre el emparejamiento entre redes de VPC
- Sigue el tutorial sobre cómo acceder a clústeres privados de GKE con grupos privados de Cloud Build.