- Redes: Aprende a configurar clústeres de bases de datos de AlloyDB Omni para el acceso interno con un servicio
ClusterIPde Kubernetes o el acceso externo con unLoadBalancer, incluido 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
PgBouncerpara implementar la agrupación de conexiones para una administración eficiente de las conexiones y una carga reducida en las instancias de la base de datos. - Autenticación y autorización: Protege el acceso con métodos compatibles, como la autenticación basada en contraseñas y la integración de 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 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 servicio ClusterIP de Kubernetes. Esto garantiza que las instancias solo sean accesibles para otras aplicaciones que se ejecutan en el mismo clúster de Kubernetes. 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: Establece
spec.allowExternalIncomingTraffic: true, que suele aprovisionar un servicioLoadBalancer. - Implementa un control detallado: Usa
spec.primarySpec.dbLoadBalancerOptions. Por ejemplo, en Google Cloud, establecegcp.loadBalancerType: "External"para obtener una dirección IP accesible desde Internet pública.
Restringir 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.
Deployment 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 vuelven a usar las conexiones (session,transactionostatement).default_pool_size: Conexiones del servidor por usuario y base de datos.max_client_conn: Conexiones máximas permitidas del cliente.max_db_connections: Conexiones máximas abiertas a la instancia de AlloyDB Omni.
Exponer PgBouncer
Usa spec.serviceOptions.type para controlar la visibilidad.
ClusterIP: Solo acceso interno al clúster.LoadBalancer: Acceso externo. Puedes restringir esto conspec.serviceOptions.loadBalancerSourceRangesusando 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 del administrador se proporciona con un secreto de Kubernetes, como se muestra en el ejemplo completo de DBCluster Sample.
Active Directory y Kerberos: Se administra con el CR
UserDefinedAuthentication. Esto admite la sincronización de grupos de GSSAPI y LDAP con lo siguiente:spec.keytabSecretRef: Para keytabs de Kerberos.spec.ldapConfiguration: Para la asignación de grupos y la configuración de LDAP.spec.pgHbaEntries: Para configurar reglaspg_hba.conf, por ejemplo,gssoldap.
Para obtener más información, consulta la referencia de CRD de UserDefinedAuthentication.
Basada en certificados (planificada): Se planea la compatibilidad con la autenticación de certificados TLS sin contraseña 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 de 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?
- Revisa la referencia de CRD de DBCluster para ver todas las opciones de configuración.
- Aprende a implementar la agrupación de conexiones con la referencia de CRD de PgBouncer.
- Comprende la integración de Active Directory en la UserDefinedAuthentication CRD Reference.
- Consulta un ejemplo completo en el ejemplo completo de DBCluster.
- Consulta la documentación de Kubernetes sobre las políticas de red.