Visão geral da conexão do orquestrador de contêineres

Selecione uma versão da documentação:

Esta visão geral descreve as configurações críticas de conexão e acesso para bancos de dados do AlloyDB Omni implantados em um cluster do Kubernetes e detalha como estabelecer uma conectividade flexível e segura. A conexão inclui as seguintes áreas:

  • Rede:saiba como configurar clusters de banco de dados do AlloyDB Omni para acesso interno usando um serviço ClusterIP do Kubernetes ou acesso externo usando um LoadBalancer, incluindo como restringir o tráfego externo usando intervalos de roteamento entre domínios sem classe (CIDR) de origem.
  • Pool de conexões:use o recurso personalizado PgBouncer para implementar o pool de conexões e ter um gerenciamento eficiente e reduzir a carga nas instâncias de banco de dados.
  • Autenticação e autorização:acesso seguro usando métodos compatíveis, como integração baseada em senhas, Active Directory e Kerberos, além de controle refinado implementado por políticas de rede do Kubernetes e papéis do PostgreSQL.

Rede

É possível configurar clusters de banco de dados do AlloyDB Omni, gerenciados pelo recurso personalizado DBCluster, para acesso interno ou externo.

Para mais detalhes sobre as opções de rede DBCluster, consulte a Referência de CRD DBCluster.

Conectividade interna

Por padrão, as instâncias do AlloyDB Omni são expostas usando um serviço ClusterIP do Kubernetes. Isso garante que as instâncias só sejam acessíveis a outros aplicativos em execução no mesmo cluster do Kubernetes. É possível encontrar o endpoint da instância principal no status DBCluster.

Conectividade externa

Para permitir conexões de fora do cluster do Kubernetes, atualize a especificação DBCluster:

  • Ative o tráfego externo:defina spec.allowExternalIncomingTraffic: true, que geralmente provisiona um serviço LoadBalancer.
  • Implemente o controle refinado:use spec.primarySpec.dbLoadBalancerOptions. Por exemplo, em Google Cloud, defina gcp.loadBalancerType: "External" para receber um endereço IP acessível pela Internet pública.

Acesso restrito

Para proteger conexões externas, use spec.primarySpec.sourceCidrRanges para definir uma lista de intervalos CIDR permitidos. O sistema bloqueia qualquer conexão originada de endereços IP fora desses intervalos.

Pooling de conexões com o PgBouncer

Para gerenciar conexões com eficiência e reduzir a carga da instância, use o PgBouncer. O operador do AlloyDB Omni fornece um recurso personalizado (CR) PgBouncer para simplificar essa operação.

Para detalhes abrangentes sobre a configuração do PgBouncer, consulte a Referência de CRD do PgBouncer.

Implantação e configuração

Crie um recurso PgBouncer e faça referência ao cluster de banco de dados em spec.dbclusterRef. Os principais parâmetros em spec.parameters incluem:

  • pool_mode: determina quando as conexões são reutilizadas (session, transaction ou statement).
  • default_pool_size: conexões de servidor por usuário e banco de dados.
  • max_client_conn: número máximo de conexões de clientes permitidas.
  • max_db_connections: número máximo de conexões abertas para a instância do AlloyDB Omni.

Expor o PgBouncer

Use spec.serviceOptions.type para controlar a visibilidade.

  • ClusterIP: acesso somente ao cluster interno.
  • LoadBalancer: acesso externo. É possível restringir isso com spec.serviceOptions.loadBalancerSourceRanges usando blocos CIDR.

Autenticação e autorização

O AlloyDB Omni oferece suporte a vários métodos para verificar identidades e controlar o acesso.

Métodos de autenticação

  • Baseada em senha:autenticação padrão de nome de usuário e senha do PostgreSQL. Normalmente, a senha de administrador é fornecida usando um secret do Kubernetes, conforme mostrado no Exemplo completo de DBCluster.
  • Active Directory e Kerberos:gerenciados usando o CR UserDefinedAuthentication. Isso é compatível com a sincronização de grupos GSSAPI e LDAP usando o seguinte:

    • spec.keytabSecretRef: para keytabs do Kerberos.
    • spec.ldapConfiguration: para mapeamento de grupos e configurações do LDAP.
    • spec.pgHbaEntries: para configurar regras de pg_hba.conf, por exemplo, gss ou ldap.

    Para mais informações, consulte a referência do CRD UserDefinedAuthentication.

  • Baseada em certificado (planejada): o suporte para autenticação sem senha de certificado TLS está previsto para uma versão futura.

Autorização e controle de acesso

  • Políticas de rede do Kubernetes:definem regras no nível do pod para proteger o tráfego entre aplicativos e pods do AlloyDB Omni ou do PgBouncer.
  • Intervalos CIDR de origem:restringem o tráfego no nível LoadBalancer.
  • Papéis do PostgreSQL:use papéis e privilégios padrão do banco de dados para gerenciar permissões de usuário depois que eles forem autenticados.

A seguir