En esta página se ofrece una descripción general de Private Service Connect en clústeres de Google Kubernetes Engine (GKE).
En esta página se da por hecho que conoces los siguientes conceptos:
- Conceptos básicos de redes, como el direccionamiento IP
- Redes de VPC
Información general
Private Service Connect (PSC) forma parte de la infraestructura de redes de Trusted Cloud by S3NS, que permite a tus clústeres de GKE consumir de forma segura y privada servicios alojados en Trusted Cloud by S3NS o en entornos on-premise, sin necesidad de exponer esos servicios públicamente. Con PSC, Trusted Cloud by S3NS se asigna una dirección IP interna al plano de control para reenviar solicitudes a la API de gestión de clústeres de GKE, lo que te permite gestionar tus clústeres sin que el tráfico pase por Internet público. PSC proporciona un marco de trabajo coherente que ayuda a conectar diferentes redes mediante un enfoque de redes de servicios y permite que los productores y consumidores de servicios se comuniquen mediante direcciones IP internas de una VPC.
En un clúster de GKE que usa la infraestructura de PSC, toda la comunicación entre el plano de control del clúster y los nodos se produce de forma privada. También puedes aislar tu clúster a nivel de plano de control y de grupo de nodos sin tener que gestionar configuraciones complejas de peering de VPC.
Ventajas de los clústeres habilitados con Private Service Connect
Seguridad: PSC establece conexiones privadas entre el plano de control y los nodos de tu clúster de GKE, lo que permite que el tráfico se mantenga por completo en la red de Google y no pase por Internet público. De esta forma, se minimiza el riesgo de que se produzcan accesos no autorizados.
Conectividad simplificada: en los clústeres de PSC, no tienes que gestionar subredes específicas para el endpoint del plano de control. El endpoint de PSC se encuentra por completo en la red del clúster, por lo que no es necesario realizar configuraciones de red complejas.
Escalabilidad: puedes crear hasta 1000 clústeres con PSC habilitado para satisfacer los requisitos de recursos elevados. Por el contrario, solo puedes crear hasta 75 clústeres por zona o región para los clústeres que usen el emparejamiento de redes VPC.
Configuración personalizable: PSC te permite controlar de forma independiente el aislamiento del plano de control, los grupos de nodos o las cargas de trabajo de tu clúster, lo que hace que tus clústeres sean más escalables y seguros. Puedes configurar una combinación de grupos de nodos públicos y privados en tu clúster.
Flexibilidad: después de crear el clúster, puedes cambiar los ajustes de aislamiento en cualquier momento. Puedes alternar entre el acceso público y privado al plano de control, así como cambiar la accesibilidad de los grupos de nodos y las cargas de trabajo desde Internet sin tener que crear un clúster.
Limitaciones
El plano de control tiene un endpoint interno y otro externo. El endpoint interno del plano de control no admite direcciones IP internas en las URLs de los webhooks que configure. Si tiene un webhook con una dirección IP interna en la URL, puede mitigar esta incompatibilidad siguiendo estos pasos:
Crea un servicio sin encabezado sin un selector para gestionar manualmente los endpoints a los que dirige este servicio el tráfico. En el siguiente ejemplo se muestra un servicio con un webhook que escucha en el puerto 3000:
apiVersion: v1 kind: Service metadata: name: <service-name> spec: clusterIP: None ports: - port: 3000 targetPort: 3000
Crea un endpoint correspondiente para el destino necesario. Por ejemplo, si tu webhook usa la dirección IP interna
10.0.0.1
en la URL, puedes crear el siguiente endpoint:apiVersion: v1 kind: Endpoints metadata: name: <service-name> subsets: - addresses: - ip: 10.0.0.1 ports: - port: 3000
Actualiza la configuración del webhook: en la configuración del webhook, elimina la URL con la dirección IP interna y añade el servicio que has creado en el primer paso. Por ejemplo:
... kind: ValidatingWebhookConfiguration ... webhooks: - name: <webhook-name> ... clientConfig: service: name: <service-name> namespace: <namespace> path: "/validate" port: 3000
En el ejemplo anterior, el webhook tiene la ruta
/validate
y escucha en el puerto 3000.Verifica tu webhook: confirma que tu webhook puede seguir recibiendo solicitudes del servidor de la API y que puede aprobar, rechazar o modificar la solicitud en función de la lógica personalizada. Si se produce un error al verificar el webhook, es posible que tengas que crear un nuevo certificado y, a continuación, actualizar la configuración del webhook con los detalles del nuevo certificado. Por ejemplo:
... kind: ValidatingWebhookConfiguration ... webhooks: - name: <webhook-name> ... clientConfig: ... caBundle: <new-certificate> ...
Arquitectura
En el siguiente diagrama se muestra un resumen de la arquitectura de un clúster que usa PSC:
Estos son los componentes principales de un clúster habilitado con PSC:
Plano de control: todos los clústeres de GKE tienen un servidor de la API de Kubernetes que gestiona el plano de control. El plano de control se ejecuta en una máquina virtual (VM) que está en una red de VPC de un proyecto gestionado por Google. Un clúster regional tiene varias réplicas del plano de control, cada una de las cuales se ejecuta en su propia VM.
El plano de control tiene un endpoint interno (endpoint de Private Service Connect) para la comunicación interna del clúster y un endpoint externo. Puedes inhabilitar el endpoint externo. El tráfico entre los nodos y el plano de control se enruta por completo mediante direcciones IP internas. Para obtener información sobre la configuración de tu clúster, consulta Verificar la configuración del plano de control.
Red VPC: es una red virtual en la que creas subredes con intervalos de direcciones IP internas específicamente para los nodos y los pods del clúster.
Punto final de Private Service Connect: es el punto final interno del plano de control del clúster, que se encuentra en la red de VPC de tu proyecto. El endpoint de PSC actúa como punto de entrada para acceder al plano de control del clúster.
Adjunto de servicio: es un recurso que establece una conexión segura y privada entre tu red de VPC y la red de VPC del productor. Como se muestra en el diagrama anterior, el punto final de PSC accede al acoplamiento de servicio a través de una conexión privada y permite que el tráfico fluya entre los nodos y el plano de control.
Configurar el acceso al clúster
Tienes varias opciones para configurar el acceso al plano de control y a los nodos en clústeres con PSC habilitado. Puedes cambiar estas configuraciones en cualquier momento después de crear el clúster. Para configurar el acceso a tu clúster, consulta Personalizar el aislamiento de la red.
Acceso al plano de control
Acceder al plano de control solo mediante un endpoint basado en DNS (opción recomendada). Puedes autorizar solicitudes para acceder al plano de control creando políticas de permiso de gestión de identidades y accesos (IAM).
Acceder al plano de control solo mediante endpoints basados en IP. Puedes usar los endpoints externos e internos del plano de control, o bien inhabilitar el endpoint externo para permitir el acceso solo desde direcciones IP reservadas por Google (para gestionar el clúster) y direcciones IP internas del clúster de GKE.
Si usas direcciones IP, te recomendamos que utilices redes autorizadas para restringir el acceso al plano de control de tu clúster. Con las redes autorizadas, también puedes bloquear el acceso a tu plano de control desde Trusted Cloud by S3NS máquinas virtuales, Cloud Run o funciones de Cloud Run con Trusted Cloud by S3NS IPs externas.
Accede al plano de control con el endpoint basado en DNS y los endpoints basados en IP.
Acceso a nodos de clúster
Con los clústeres habilitados para PSC, puedes configurar clústeres en modo mixto. Puede configurar su clúster para que tenga nodos con acceso interno o externo. También puedes cambiar la configuración de la red de nodos en función del tipo de clúster que utilices:
En los clústeres Autopilot, puedes configurar algunas cargas de trabajo para que se ejecuten en nodos privados y otras para que se ejecuten en nodos públicos. Por ejemplo, puede que ejecutes una combinación de cargas de trabajo en tu clúster, algunas de las cuales requieren acceso a Internet y otras no. Puedes desplegar una carga de trabajo en un nodo con direcciones IP externas para asegurarte de que solo se pueda acceder públicamente a esas cargas de trabajo.
En los clústeres estándar, puedes aprovisionar algunos de tus nodos con direcciones IP internas, mientras que otros nodos pueden usar direcciones IP externas.
Clústeres con Private Service Connect
Para comprobar si tu clúster usa Private Service Connect, ejecuta el comando gcloud container clusters describe. Si tu clúster usa Private Service Connect, el recurso privateClusterConfig
tiene los siguientes valores:
- El campo
peeringName
está vacío o no existe. - El campo
privateEndpoint
tiene un valor asignado.
Para habilitar PSC en tu clúster, crea el clúster en la versión 1.29 o posterior. De lo contrario, en las versiones 1.28 y anteriores, crea el clúster sin habilitar los nodos privados. Puede cambiar este ajuste y habilitar los nodos privados después de crear el clúster.
Siguientes pasos
- Consulta cómo personalizar el aislamiento de la red en GKE.