Übersicht über die Verbindung zum Container-Orchestrator

Wählen Sie eine Dokumentationsversion aus:

Diese Übersicht beschreibt die kritischen Verbindungs- und Zugriffskonfigurationen für AlloyDB Omni-Datenbanken, die in einem Kubernetes-Cluster bereitgestellt werden. Außerdem wird beschrieben, wie Sie flexible und sichere Verbindungen herstellen. Die Verbindung umfasst die folgenden Bereiche:

  • Netzwerk: Informationen zum Konfigurieren von AlloyDB Omni-Datenbankclustern für den internen Zugriff mit einem Kubernetes-ClusterIP-Dienst oder für den externen Zugriff mit einem LoadBalancer. Außerdem wird beschrieben, wie Sie externen Traffic mit CIDR-Bereichen (Classless Inter-Domain Routing) der Quelle einschränken.
  • Verbindungs-Pooling: Verwenden Sie die benutzerdefinierte Ressource PgBouncer, um Verbindungs-Pooling für eine effiziente Verbindungsverwaltung und eine geringere Last auf Datenbankinstanzen zu implementieren.
  • Authentifizierung und Autorisierung: Sichern Sie den Zugriff mit unterstützten Methoden wie passwortbasierter Authentifizierung und Active Directory- und Kerberos-Integration sowie mit detaillierter Steuerung, die über Kubernetes-Netzwerkrichtlinien und PostgreSQL-Rollen implementiert wird.

Netzwerk

Sie können AlloyDB Omni-Datenbankcluster, die von der benutzerdefinierten Ressource DBCluster verwaltet werden, für den internen oder externen Zugriff konfigurieren.

Weitere Informationen zu den DBCluster Netzwerkoptionen finden Sie in der DBCluster CRD Referenz.

Interne Konnektivität

Standardmäßig werden AlloyDB Omni-Instanzen über einen Kubernetes-ClusterIP-Dienst bereitgestellt. Dadurch wird sichergestellt, dass die Instanzen nur für andere Anwendungen zugänglich sind, die im selben Kubernetes-Cluster ausgeführt werden. Sie finden den Endpunkt für die primäre Instanz im Status DBCluster.

Externe Konnektivität

Wenn Sie Verbindungen von außerhalb des Kubernetes-Clusters zulassen möchten, aktualisieren Sie die DBCluster-Spezifikation:

  • Externen Traffic aktivieren: Legen Sie spec.allowExternalIncomingTraffic: true fest. Dadurch wird in der Regel ein LoadBalancer-Dienst bereitgestellt.
  • Detaillierte Steuerung implementieren: Verwenden Sie spec.primarySpec.dbLoadBalancerOptions. Legen Sie beispielsweise unter Google Cloudfest, umgcp.loadBalancerType: "External" eine IP-Adresse zu erhalten, die über das öffentliche Internet zugänglich ist.

Zugriff einschränken

Verwenden Sie spec.primarySpec.sourceCidrRanges, um eine Liste zulässiger CIDR-Bereiche zu definieren und externe Verbindungen zu sichern. Das System blockiert alle Verbindungen, die von IP-Adressen außerhalb dieser Bereiche stammen.

Verbindungs-Pooling mit PgBouncer

Verwenden Sie PgBouncer, um Verbindungen effizient zu verwalten und die Instanzlast zu reduzieren. Der AlloyDB Omni-Operator bietet eine benutzerdefinierte Ressource PgBouncer (CR), um diesen Vorgang zu vereinfachen.

Ausführliche Informationen zum Konfigurieren von PgBouncer finden Sie in der PgBouncer CRD Referenz.

Bereitstellung und Konfiguration

Erstellen Sie eine PgBouncer-Ressource und verweisen Sie in spec.dbclusterRef auf Ihren Datenbankcluster. Wichtige Parameter in spec.parameters sind:

  • pool_mode: bestimmt, wann Verbindungen wiederverwendet werden (session, transaction oder statement).
  • default_pool_size: Serververbindungen pro Nutzer und Datenbank.
  • max_client_conn: maximal zulässige Clientverbindungen.
  • max_db_connections: maximale Anzahl von Verbindungen, die zur AlloyDB Omni-Instanz geöffnet werden.

PgBouncer freigeben

Verwenden Sie spec.serviceOptions.type, um die Sichtbarkeit zu steuern.

  • ClusterIP: nur interner Clusterzugriff.
  • LoadBalancer: externer Zugriff. Sie können dies mit spec.serviceOptions.loadBalancerSourceRanges mithilfe von CIDR-Blöcken einschränken.

Authentifizierung und Autorisierung

AlloyDB Omni unterstützt mehrere Methoden zum Überprüfen von Identitäten und zum Steuern des Zugriffs.

Authentifizierungsmethoden

  • Passwortbasiert: Standardmäßige PostgreSQL-Authentifizierung mit Nutzername und Passwort. Das Administratorpasswort wird in der Regel über ein Kubernetes-Secret bereitgestellt, wie im vollständigen DBCluster Beispiel gezeigt.
  • Active Directory und Kerberos: Verwaltet mit der benutzerdefinierten Ressource UserDefinedAuthentication. Dies unterstützt die GSSAPI- und LDAP-Gruppensynchronisierung mit den folgenden Optionen:

    • spec.keytabSecretRef: für Kerberos-Keytabs.
    • spec.ldapConfiguration: für die Gruppenzuordnung und LDAP-Einstellungen.
    • spec.pgHbaEntries: zum Konfigurieren von pg_hba.conf-Regeln, z. B. gss oder ldap.

    Weitere Informationen finden Sie in der UserDefinedAuthentication CRD-Referenz.

  • Zertifikatbasiert (geplant): Die Unterstützung für die passwortlose TLS-Zertifikatsauthentifizierung ist für eine zukünftige Version geplant.

Autorisierung und Zugriffssteuerung

  • Kubernetes-Netzwerkrichtlinien: Definieren Sie Regeln auf Pod-Ebene, um den Traffic zwischen Anwendungen und AlloyDB Omni- oder PgBouncer-Pods zu sichern.
  • CIDR-Bereiche der Quelle: Schränken Sie den Traffic auf LoadBalancer-Ebene ein.
  • PostgreSQL-Rollen: Verwenden Sie Standard-Datenbankrollen und -Berechtigungen, um Nutzerberechtigungen zu verwalten, nachdem die Nutzer authentifiziert wurden.

Nächste Schritte