Acerca de Private Service Connect


En este documento, se proporciona una descripción general de Private Service Connect en los clústeres de Google Kubernetes Engine (GKE). Antes de continuar con la lectura, asegúrate de conocer las redes de VPC y los conceptos básicos de las redes, como la asignación de IP.

Descripción general

Private Service Connect (PSC) forma parte de la infraestructura de redes de Google Cloud, que permite que tus clústeres de GKE consuman servicios alojados en Google Cloud o entornos locales de forma segura y privada, sin necesidad de exponer esos servicios de forma pública. Con PSC, Google Cloud asigna una dirección IP interna al plano de control para reenviar solicitudes a la API de administración de clúster de GKE, lo que te permite administrar tus clústeres sin que el tráfico pase por Internet público. El PSC proporciona un marco de trabajo coherente que ayuda a conectar diferentes redes a través de un enfoque de red de servicios y permite que los productores y consumidores de servicios se comuniquen con 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 realiza de forma privada. También puedes aislar tu clúster a nivel del plano de control y del grupo de nodos sin necesidad de administrar configuraciones complejas de vinculación de VPC.

Beneficios 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 mantiene el tráfico por completo dentro de la red de Google y lejos de la Internet pública. Esto minimiza el riesgo de acceso no autorizado.

Conectividad simplificada: En el caso de los clústeres de PSC, no tienes que administrar subredes específicas para el extremo del plano de control. El extremo de PSC se encuentra completamente dentro de la red del clúster, lo que elimina la necesidad de configuraciones de red complejas.

Escalabilidad: Puedes crear hasta 1,000 clústeres habilitados con PSC para cumplir con requisitos de recursos altos. En cambio, solo puedes crear hasta 75 clústeres por zona o región para los clústeres que usan el intercambio de tráfico entre redes de VPC.

Configuración personalizable: PSC te permite controlar de forma independiente el aislamiento de tu plano de control, grupos de nodos o cargas de trabajo del clúster, lo que hace que tus clústeres sean más escalables y seguros. Puedes configurar una combinación de grupos de nodos privados y públicos en tu clúster.

Flexibilidad: Después de crear el clúster, puedes cambiar la configuración de aislamiento en cualquier momento. Puedes alternar entre el acceso público y privado al plano de control, y cambiar la accesibilidad del grupo de nodos y la carga de trabajo desde Internet sin tener que crear un clúster nuevo.

Limitaciones

El plano de control tiene un extremo interno y uno externo. El extremo interno del plano de control no admite direcciones IP internas en las URLs de los webhooks que configures. Si tienes un webhook con una dirección IP interna en la URL, puedes mitigar esta incompatibilidad siguiendo estos pasos:

  1. Crea un Service sin interfaz gráfica sin un selector para administrar de forma manual los extremos a los que este Service dirige 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
    
  2. Crea un extremo correspondiente para el destino requerido. Por ejemplo, si tu webhook usa la dirección IP interna 10.0.0.1 en la URL, puedes crear el siguiente extremo:

    apiVersion: v1
    kind: Endpoints
    metadata:
      name: <service-name>
    subsets:
    - addresses:
      - ip: 10.0.0.1
      ports:
      - port: 3000
    
  3. Actualiza la configuración del webhook: En la configuración del webhook, borra la URL con la dirección IP interna y agrega el servicio que creaste 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 una ruta de acceso de /validate y escucha en el puerto 3000.

  4. Verifica tu webhook: Confirma que tu webhook pueda seguir recibiendo solicitudes del servidor de la API y que pueda aprobar, rechazar o modificar la solicitud según la lógica personalizada. Si recibes un error cuando verificas el webhook, es posible que debas crear un certificado nuevo y, luego, actualizar la configuración del webhook con los detalles del certificado nuevo. Por ejemplo:

    ...
    kind: ValidatingWebhookConfiguration
    ...
    webhooks:
    - name: <webhook-name>
    ...
      clientConfig:
        ...
        caBundle: <new-certificate>
    ...
    

Arquitectura

En el siguiente diagrama, se proporciona una descripción general de la arquitectura de un clúster que usa PSC:

Arquitectura de Private Service Connect en GKE.
Figura: Arquitectura de Private Service Connect

Los siguientes son los componentes principales de un clúster habilitado con PSC:

Plano de control: Cada clúster de GKE tiene un servidor de la API de Kubernetes que administra el plano de control. El plano de control se ejecuta en una máquina virtual (VM) que está en una red de VPC en un proyecto administrado 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 extremo interno (extremo de Private Service Connect) para la comunicación interna del clúster y un extremo externo. Puedes inhabilitar el extremo 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 Cómo verificar la configuración del plano de control.

Red de VPC: Es una red virtual en la que creas subredes con rangos de direcciones IP internas específicamente para los nodos y los pods del clúster.

Extremo de Private Service Connect: Es el extremo interno del plano de control del clúster que se encuentra en la red de VPC de tu proyecto. El extremo 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 extremo de PSC accede al archivo adjunto del servicio a través de una conexión privada y permite que el tráfico fluya entre los nodos y el plano de control.

Configura el acceso al clúster

Tienes varias opciones para configurar el acceso al plano de control y el acceso a los nodos en clústeres habilitados para PSC. Puedes cambiar estos parámetros de configuración en cualquier momento después de la creación del clúster. Para configurar el acceso a tu clúster, consulta Cómo personalizar el aislamiento de red.

Acceso al plano de control

  • Accede al plano de control solo con el extremo basado en DNS (recomendado). Puedes autorizar solicitudes para acceder al plano de control creando políticas de IAM de permiso.

  • Accede al plano de control solo con extremos basados en IP. Puedes usar los extremos externos e internos del plano de control, o bien inhabilitar el extremo externo para permitir solo el acceso desde direcciones IP reservadas por Google (para fines de administración del clúster) y direcciones IP internas del clúster de GKE.

    Si usas direcciones IP, te recomendamos que uses 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 las VMs de Google Cloud , Cloud Run o funciones de Cloud Run que se aprovisionan con IPs externas de Google Cloud .

  • Accede al plano de control con extremos basados en DNS y en IP.

Acceso a los nodos del clúster

Con los clústeres habilitados para PSC, puedes configurar clústeres de modo mixto. Puedes configurar tu clúster para que tenga nodos con acceso interno o externo. También puedes cambiar la configuración de red del nodo según el tipo de clúster que uses:

  • En el caso de los clústeres de 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, es posible que ejecutes una combinación de cargas de trabajo en tu clúster en la que algunas requieran acceso a Internet y otras no. Puedes implementar una carga de trabajo en un nodo con direcciones IP externas para garantizar que solo se pueda acceder a esas cargas de trabajo de forma pública.

  • En el caso de los clústeres estándar, puedes aprovisionar algunos de tus nodos con direcciones IP internas, mientras que otros pueden usar direcciones IP externas.

Clústeres con Private Service Connect

Para verificar 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 tu clúster con PSC, créalo en la versión 1.29 o una posterior. De lo contrario, para las versiones 1.28 y anteriores, crea tu clúster sin habilitar los nodos privados. Puedes actualizar este parámetro de configuración y habilitar los nodos privados después de la creación del clúster.

¿Qué sigue?