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 eineLoadBalancerkonfigurieren. 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: truefest. Dadurch wird in der Regel einLoadBalancer-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,transactionoderstatement).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 mitspec.serviceOptions.loadBalancerSourceRangesmithilfe 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
UserDefinedAuthenticationCR 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 vonpg_hba.conf-Regeln, z. B.gssoderldap.
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
- Alle Konfigurationsoptionen finden Sie in der DBCluster CRD-Referenz.
- Informationen zum Bereitstellen von Verbindungspooling finden Sie in der PgBouncer CRD-Referenz.
- Informationen zur Active Directory-Integration finden Sie in der CRD-Referenz für UserDefinedAuthentication.
- Ein vollständiges Beispiel finden Sie unter Vollständiges DBCluster-Beispiel.
- Weitere Informationen finden Sie in der Kubernetes-Dokumentation zu Netzwerkrichtlinien.