Übersicht über die Verbindung zum Container-Orchestrator

Wählen Sie eine Dokumentationsversion aus:

In dieser Übersicht werden die wichtigen Verbindungs- und Zugriffskonfigurationen für AlloyDB Omni-Datenbanken beschrieben, die in einem Kubernetes-Cluster bereitgestellt werden. Außerdem wird erläutert, wie Sie eine flexible und sichere Verbindung herstellen. Die Verbindung umfasst die folgenden Bereiche:

  • Netzwerk: Hier erfahren Sie, wie Sie AlloyDB Omni-Datenbankcluster für den internen Zugriff mit einem Kubernetes-ClusterIP-Dienst oder für den externen Zugriff mit einem LoadBalancer konfigurieren. Außerdem erfahren Sie, wie Sie externen Traffic mithilfe von CIDR-Quellbereichen (Classless Inter-Domain Routing) 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 der passwortbasierten Authentifizierung und der Integration von Active Directory und Kerberos sowie mit einer detaillierten 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 Netzwerkoptionen für DBCluster finden Sie in der Referenz zur DBCluster-CRD.

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, wodurch normalerweise ein LoadBalancer-Dienst bereitgestellt wird.
  • Detaillierte Steuerung implementieren: Verwenden Sie spec.primarySpec.dbLoadBalancerOptions. Legen Sie beispielsweise aufGoogle Cloudgcp.loadBalancerType: "External" fest, um eine IP-Adresse zu erhalten, die über das öffentliche Internet erreichbar ist.

Zugriff einschränken

Verwenden Sie spec.primarySpec.sourceCidrRanges, um eine Liste der zulässigen 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 stellt eine benutzerdefinierte Ressource (CR) vom Typ PgBouncer bereit, um diesen Vorgang zu vereinfachen.

Ausführliche Informationen zur Konfiguration 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. Zu den wichtigsten Parametern in spec.parameters gehören:

  • 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 zur Überprüfung von Identitäten und zur Steuerung des Zugriffs.

Authentifizierungsmethoden

  • Passwortbasiert: Standardmäßige PostgreSQL-Authentifizierung mit Nutzername und Passwort. Das Administratorpasswort wird normalerweise über ein Kubernetes-Secret bereitgestellt, wie im vollständigen DBCluster-Beispiel gezeigt.
  • Active Directory und Kerberos: Werden mit der UserDefinedAuthentication-CR verwaltet. Dies unterstützt die GSSAPI- und LDAP-Gruppensynchronisierung mit folgenden Elementen:

    • spec.keytabSecretRef: für Kerberos-Schlüsseltabellen.
    • 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 CRD-Referenz zu UserDefinedAuthentication.

  • 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.
  • Quell-CIDR-Bereiche: Schränken Sie den Traffic auf der LoadBalancer-Ebene ein.
  • PostgreSQL-Rollen: Verwenden Sie Standarddatenbankrollen und -berechtigungen, um Nutzerberechtigungen nach der Authentifizierung der Nutzer zu verwalten.

Nächste Schritte