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 conectividade flexível e segura. A conexão inclui as seguintes áreas:

  • Rede:aprenda a 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, na sigla em inglês) de origem.
  • Pool de conexões:use o recurso personalizado PgBouncer para implementar o pool de conexões para um gerenciamento eficiente de conexões e uma carga reduzida nas instâncias de banco de dados.
  • Autenticação e autorização:acesso seguro usando métodos compatíveis, como autenticação baseada em senha e integração do Active Directory e do 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 do 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ó possam ser acessadas por 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:

  • Ativar o tráfego externo:defina spec.allowExternalIncomingTraffic: true, que normalmente provisiona um serviço LoadBalancer.
  • Implementar controle refinado:use spec.primarySpec.dbLoadBalancerOptions. Por exemplo, no 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 todas as conexões originadas de endereços IP fora desses intervalos.

Pool 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, na sigla em inglês) 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 referencie o cluster de banco de dados em spec.dbclusterRef. Os principais parâmetros em spec.parameters incluem o seguinte:

  • 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: conexões máximas de cliente permitidas.
  • max_db_connections: conexões máximas abertas para a instância do AlloyDB Omni.

Expor o PgBouncer

Use spec.serviceOptions.type para controlar a visibilidade.

  • ClusterIP: acesso interno ao cluster.
  • 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

  • Baseado em senha:autenticação padrão de nome de usuário e senha do PostgreSQL. A senha do administrador normalmente é fornecida usando um secret do Kubernetes, conforme mostrado no exemplo completo do DBCluster Sample.
  • Active Directory e Kerberos:gerenciado usando o CR UserDefinedAuthentication. Isso oferece suporte à 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 de LDAP.
    • spec.pgHbaEntries: para configurar regras pg_hba.conf, por exemplo, gss ou ldap.

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

  • Baseado em certificado (planejado) : o suporte à autenticação de certificado TLS sem senha está planejado 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 PgBouncer.
  • Intervalos CIDR de origem:restringem o tráfego no nível do LoadBalancer.
  • Papéis do PostgreSQL:usam papéis e privilégios de banco de dados padrão para gerenciar permissões do usuário depois que os usuários são autenticados.

A seguir