Descripción general de la conexión del organizador de contenedores

Selecciona una versión de la documentación:

En esta descripción general, se detallan los parámetros de configuración de conexión y acceso críticos para las bases de datos de AlloyDB Omni implementadas en un clúster de Kubernetes, y se explica cómo establecer una conectividad flexible y segura. La conexión incluye las siguientes áreas:

  • Herramientas de redes: Aprende a configurar clústeres de bases de datos de AlloyDB Omni para el acceso interno con un Service ClusterIP de Kubernetes o el acceso externo con un LoadBalancer, lo que incluye cómo restringir el tráfico externo con rangos de enrutamiento entre dominios sin clases (CIDR) de origen.
  • Agrupación de conexiones: Usa el recurso personalizado PgBouncer para implementar la agrupación de conexiones y, así, administrar las conexiones de forma eficiente y reducir la carga en las instancias de base de datos.
  • Autenticación y autorización: Acceso seguro con métodos compatibles, como la integración basada en contraseñas, Active Directory y Kerberos, junto con el control detallado implementado a través de las políticas de red de Kubernetes y los roles de PostgreSQL.

Redes

Puedes configurar los clústeres de bases de datos de AlloyDB Omni, administrados por el recurso personalizado DBCluster, para el acceso interno o externo.

Para obtener más detalles sobre las opciones de redes de DBCluster, consulta la referencia de CRD de DBCluster.

Conectividad interna

De forma predeterminada, las instancias de AlloyDB Omni se exponen con un Service de Kubernetes ClusterIP. Esto garantiza que solo otras aplicaciones que se ejecutan en el mismo clúster de Kubernetes puedan acceder a las instancias. Puedes encontrar el extremo de la instancia principal en el estado DBCluster.

Conectividad externa

Para permitir conexiones desde fuera del clúster de Kubernetes, actualiza la especificación DBCluster:

  • Habilita el tráfico externo: Configura spec.allowExternalIncomingTraffic: true, que, por lo general, aprovisiona un Service LoadBalancer.
  • Implementa un control detallado: Usa spec.primarySpec.dbLoadBalancerOptions. Por ejemplo, en Google Cloud, configura gcp.loadBalancerType: "External" para obtener una dirección IP accesible desde la Internet pública.

Restringe el acceso

Para proteger las conexiones externas, usa spec.primarySpec.sourceCidrRanges para definir una lista de rangos de CIDR permitidos. El sistema bloquea cualquier conexión que se origine en direcciones IP fuera de estos rangos.

Agrupación de conexiones con PgBouncer

Para administrar las conexiones de manera eficiente y reducir la carga de la instancia, usa PgBouncer. El operador de AlloyDB Omni proporciona un recurso personalizado (CR) PgBouncer para simplificar esta operación.

Para obtener detalles completos sobre la configuración de PgBouncer, consulta la referencia de CRD de PgBouncer.

Implementación y configuración

Crea un recurso PgBouncer y haz referencia a tu clúster de base de datos en spec.dbclusterRef. Los parámetros clave en spec.parameters incluyen los siguientes:

  • pool_mode: Determina cuándo se reutilizan las conexiones (session, transaction o statement).
  • default_pool_size: conexiones de servidor por usuario y base de datos.
  • max_client_conn: Es la cantidad máxima de conexiones de cliente permitidas.
  • max_db_connections: Es la cantidad máxima de conexiones abiertas a la instancia de AlloyDB Omni.

Expón PgBouncer

Usa spec.serviceOptions.type para controlar la visibilidad.

  • ClusterIP: Solo acceso interno al clúster.
  • LoadBalancer: acceso externo. Puedes restringir esto con spec.serviceOptions.loadBalancerSourceRanges usando bloques CIDR.

Autenticación y autorización

AlloyDB Omni admite varios métodos para verificar identidades y controlar el acceso.

Métodos de autenticación

  • Basada en contraseñas: Autenticación estándar de nombre de usuario y contraseña de PostgreSQL. Por lo general, la contraseña de administrador se proporciona con un Secret de Kubernetes, como se muestra en la muestra completa de DBCluster.
  • Active Directory y Kerberos: Se administra con la CR UserDefinedAuthentication. Esto admite la sincronización de grupos de GSSAPI y LDAP con lo siguiente:

    • spec.keytabSecretRef: para las tablas de claves de Kerberos.
    • spec.ldapConfiguration: para la asignación de grupos y la configuración de LDAP.
    • spec.pgHbaEntries: para configurar reglas de pg_hba.conf, por ejemplo, gss o ldap.

    Para obtener más información, consulta la referencia de CRD de UserDefinedAuthentication.

  • Basada en certificados (planificada): La compatibilidad con la autenticación de certificados TLS sin contraseña está planificada para una versión futura.

Autorización y control de acceso

  • Políticas de red de Kubernetes: Define reglas a nivel de Pod para proteger el tráfico entre las aplicaciones y los Pods de AlloyDB Omni o PgBouncer.
  • Rangos CIDR de origen: Restringe el tráfico a nivel de LoadBalancer.
  • Roles de PostgreSQL: Usa roles y privilegios de base de datos estándar para administrar los permisos de los usuarios después de que se autentiquen.

¿Qué sigue?