AlloyDB Omni in Kubernetes – Übersicht über Verbindungen

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 flexible und sichere Verbindungen herstellen. Die Verbindung umfasst die folgenden Bereiche:

  • Netzwerk:Hier erfahren Sie, wie Sie AlloyDB Omni-Datenbankcluster für den internen Zugriff über einen Kubernetes-ClusterIP-Dienst oder für den externen Zugriff über eine LoadBalancer konfigurieren. Außerdem wird beschrieben, 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 ein effizientes Verbindungsmanagement und eine geringere Last auf Datenbankinstanzen zu implementieren.
  • Authentifizierung und Autorisierung:Sicherer Zugriff über unterstützte Methoden wie passwortbasierte und Active Directory-/Kerberos-Integration sowie detaillierte Steuerung über Kubernetes-Netzwerkrichtlinien und PostgreSQL-Rollen.

Netzwerk

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

Weitere Informationen zu den Netzwerkoptionen für DBCluster finden Sie in der CRD-Referenz für DBCluster.

Interne Konnektivität

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

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 auf Google Cloudgcp.loadBalancerType: "External" fest, um 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, um diesen Vorgang zu vereinfachen.

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

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: Die maximal zulässige Anzahl an Clientverbindungen.
  • max_db_connections: Maximale Anzahl von Verbindungen, die zur AlloyDB Omni-Instanz geöffnet werden.

PgBouncer freigeben

Mit spec.serviceOptions.type können Sie die Sichtbarkeit 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:werden mit dem UserDefinedAuthentication CR verwaltet. Dies unterstützt die GSSAPI- und LDAP-Gruppensynchronisierung mit den folgenden Methoden:

    • 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 CRD-Referenz für UserDefinedAuthentication.

  • Zertifikatbasiert (geplant): Die Unterstützung der passwortlosen 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:Damit lässt sich der Traffic auf LoadBalancer-Ebene einschränken.
  • PostgreSQL-Rollen:Verwenden Sie Standarddatenbankrollen und -berechtigungen, um Nutzerberechtigungen zu verwalten, nachdem die Nutzer authentifiziert wurden.

Nächste Schritte