Panoramica della connessione dell'orchestratore dei container

Seleziona una versione della documentazione:

Questa panoramica descrive le configurazioni di connessione e accesso critiche per i database AlloyDB Omni di cui è stato eseguito il deployment su un cluster Kubernetes e spiega come stabilire una connettività flessibile e sicura. La connessione include le seguenti aree:

  • Networking: scopri come configurare i cluster di database AlloyDB Omni per l'accesso interno utilizzando un servizio ClusterIP Kubernetes o l'accesso esterno utilizzando un LoadBalancer, incluso come limitare il traffico esterno utilizzando gli intervalli CIDR (Classless Inter-Domain Routing) di origine.
  • Pool di connessioni: utilizza la risorsa personalizzata PgBouncer per implementare il pool di connessioni per una gestione efficiente delle connessioni e un carico ridotto sulle istanze di database.
  • Autenticazione e autorizzazione: proteggi l'accesso utilizzando i metodi supportati come l'autenticazione basata su password e l'integrazione di Active Directory e Kerberos, insieme al controllo granulare implementato tramite i criteri di rete Kubernetes e i ruoli PostgreSQL.

Networking

Puoi configurare i cluster di database AlloyDB Omni, gestiti dalla risorsa personalizzata DBCluster, per l'accesso interno o esterno.

Per ulteriori dettagli sulle opzioni di networking di DBCluster, consulta il riferimento CRD DBCluster Reference.

Connettività interna

Per impostazione predefinita, le istanze AlloyDB Omni vengono esposte utilizzando un servizio ClusterIP Kubernetes. In questo modo, le istanze sono accessibili solo ad altre applicazioni in esecuzione nello stesso cluster Kubernetes. Puoi trovare l'endpoint per l'istanza principale nello stato DBCluster.

Connettività esterna

Per consentire le connessioni dall'esterno del cluster Kubernetes, aggiorna la specifica DBCluster:

  • Abilita il traffico esterno: imposta spec.allowExternalIncomingTraffic: true, che in genere esegue il provisioning di un servizio LoadBalancer.
  • Implementa il controllo granulare: utilizza spec.primarySpec.dbLoadBalancerOptions. Ad esempio, su Google Cloud, imposta gcp.loadBalancerType: "External" per ottenere un indirizzo IP accessibile dalla rete internet pubblica.

Limita l'accesso

Per proteggere le connessioni esterne, utilizza spec.primarySpec.sourceCidrRanges per definire un elenco di intervalli CIDR consentiti. Il sistema blocca tutte le connessioni provenienti da indirizzi IP al di fuori di questi intervalli.

Pool di connessioni con PgBouncer

Per gestire le connessioni in modo efficiente e ridurre il carico dell'istanza, utilizza PgBouncer. L'operatore AlloyDB Omni fornisce una risorsa personalizzata (CR) PgBouncer per semplificare questa operazione.

Per informazioni dettagliate sulla configurazione di PgBouncer, consulta il riferimento CRD PgBouncer.

Deployment e configurazione

Crea una risorsa PgBouncer e fai riferimento al cluster di database in spec.dbclusterRef. I parametri chiave in spec.parameters includono:

  • pool_mode: determina quando le connessioni vengono riutilizzate (session, transaction o statement).
  • default_pool_size: connessioni server per utente e database.
  • max_client_conn: numero massimo di connessioni client consentite.
  • max_db_connections: numero massimo di connessioni aperte all'istanza AlloyDB Omni.

Esponi PgBouncer

Utilizza spec.serviceOptions.type per controllare la visibilità.

  • ClusterIP: accesso interno al cluster.
  • LoadBalancer: accesso esterno. Puoi limitare questa opzione con spec.serviceOptions.loadBalancerSourceRanges utilizzando i blocchi CIDR.

Autenticazione e autorizzazione

AlloyDB Omni supporta più metodi per verificare le identità e controllare l'accesso.

Metodi di autenticazione

  • Basata su password: autenticazione standard con nome utente e password PostgreSQL. La password dell'amministratore viene in genere fornita utilizzando un secret Kubernetes, come mostrato nell'esempio completo di DBCluster Sample.
  • Active Directory e Kerberos: gestiti utilizzando la CR UserDefinedAuthentication. Questa opzione supporta la sincronizzazione dei gruppi GSSAPI e LDAP utilizzando:

    • spec.keytabSecretRef: per i keytab Kerberos.
    • spec.ldapConfiguration: per il mapping dei gruppi e le impostazioni LDAP.
    • spec.pgHbaEntries: per configurare le regole pg_hba.conf, ad esempio gss o ldap.

    Per ulteriori informazioni, consulta il riferimento CRD UserDefinedAuthentication.

  • Basata su certificati (pianificata): il supporto per l'autenticazione con certificati TLS senza password è previsto per una release futura.

Autorizzazione e controllo dell'accesso

  • Criteri di rete Kubernetes: definisci regole a livello di pod per proteggere il traffico tra le applicazioni e i pod AlloyDB Omni o PgBouncer.
  • Intervalli CIDR di origine: limita il traffico a livello di LoadBalancer.
  • Ruoli PostgreSQL: utilizza i ruoli e i privilegi standard del database per gestire le autorizzazioni utente dopo l'autenticazione degli utenti.

Passaggi successivi