Die Kubernetes-spezifischen Anweisungen auf dieser Seite setzen Grundkenntnisse im Umgang mit Kubernetes voraus.
AlloyDB Omni ausführen
Die Verfahren zum Ausführen von AlloyDB Omni hängen davon ab, ob Sie AlloyDB Omni in einem Kubernetes-Cluster ausführen.
AlloyDB Omni starten
Starten Sie einen angehaltenen Datenbankcluster, indem Sie isStopped in der Manifestdefinition auf false setzen.
Sie können dies über die Befehlszeile mit kubectl ausführen:
kubectl patch dbclusters.alloydbomni.dbadmin.goog dbcluster-sample \
-p '{"spec":{"primarySpec":{"isStopped":false}}}' --type=mergeStatus von AlloyDB Omni prüfen
kubectl get dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAMEErsetzen Sie DB_CLUSTER_NAME durch den Namen Ihres Datenbank
clusters.
AlloyDB Omni beenden
Wenn Sie einen Datenbankcluster beenden möchten, setzen Sie isStopped in der Manifestdefinition auf true.
Sie können dies über die Befehlszeile mit kubectl ausführen:
kubectl patch dbclusters.alloydbomni.dbadmin.goog dbcluster-sample -p '{"spec":{"primarySpec":{"isStopped":true}}}' --type=mergeVerbindung zu AlloyDB Omni herstellen, das in Kubernetes ausgeführt wird
Der AlloyDB Omni Kubernetes-Operator ermöglicht Verbindungen zum Datenbankcluster innerhalb desselben Kubernetes-Clusters, optional mit Zertifikaten zur Authentifizierung.
Verbindung mit dem vorinstallierten psql herstellen
Sie können eine Testverbindung mit einem psql-Client herstellen, der bereits auf dem Pod installiert ist, auf dem die Datenbank ausgeführt wird.
Führen Sie dazu die folgenden Befehle aus:
export DBPOD=`kubectl get pod --selector=alloydbomni.internal.dbadmin.goog/dbcluster=DB_CLUSTER_NAME,alloydbomni.internal.dbadmin.goog/task-type=database -o jsonpath='{.items[0].metadata.name}'`kubectl exec -ti $DBPOD -c database -- psql -h localhost -U postgres
Ersetzen Sie DB_CLUSTER_NAME durch den Namen Ihres Datenbankclusters. Das ist derselbe Datenbankclustername, den Sie beim Erstellen
des Clusters angegeben haben.
Nachdem Sie den Befehl eingegeben haben, werden Sie vom Datenbankserver aufgefordert, ein Passwort einzugeben.
Geben Sie das Passwort ein, dessen base64-codierte Version
Sie beim Erstellen des Datenbank
clustersals Kubernetes-Secret angegeben haben. Wenn Sie den Datenbankcluster beispielsweise mit einem Secret von Q2hhbmdlTWUxMjM= erstellt haben, lautet das Anmeldepasswort hier ChangeMe123.
Der AlloyDB Omni-Operator stellt eine Verbindung zum Server als die postgres
Nutzerrolle her und zeigt eine postgres=# Eingabeaufforderung an. Sie können jetzt run psql
Befehle
und SQL-Abfragen ausführen.
Wenn Sie psql beenden möchten, führen Sie den Befehl \q aus.
Verbindung von einem separaten Pod im selben Cluster herstellen
Der Pod, auf dem der AlloyDB Omni-Datenbankcluster ausgeführt wird, ermöglicht standardmäßig Verbindungen innerhalb desselben Kubernetes-Clusters. Als Best Practice empfehlen wir, alle Verbindungen zum Datenbankcluster mit TLS zu sichern.
Wenn Sie ein eigenes TLS-Serverzertifikat bereitstellen möchten, geben Sie beim Konfigurieren des Datenbankclusters ein Zertifikat-Secret an. Wenn Sie kein Zertifikat-Secret angeben, erstellt der AlloyDB Omni Kubernetes-Operator ein TLS-Zertifikat-Secret für Sie, das auf einem Zertifikat basiert, das von einer selbst signierten Zertifizierungsstelle signiert wurde. In beiden Fällen können Sie festlegen, dass für den Datenbankclient-Pod bei jeder Verbindung eine Zertifikatvalidierung erforderlich ist, um die TLS-Sicherheit zu gewährleisten.
So stellen Sie sichere Datenbankverbindungen mit TLS her:
Geben Sie im Manifest, das den Pod definiert, der die Clientverbindungen herstellt, ein TLS-Zertifikat-Secret an. Diese Rollen stehen zur Verfügung:
Ein TLS-Zertifikat-Secret, das Sie bereits in Ihrem Kubernetes-Cluster erstellt haben. Weitere Informationen zum Arbeiten mit TLS Zertifikat-Secrets in Kubernetes finden Sie unter TLS Secrets.
Das Standardzertifikat-Secret, das der AlloyDB Omni Kubernetes-Operator für Sie erstellt hat und das den Namen
DB_CLUSTER_NAME-ca-certhat, wenn Sie im Manifest Ihres Datenbankclusters kein TLS-Secret angeben.
Wenn Ihr Client-Pod eine Verbindung zum Datenbankcluster herstellt, müssen vor dem Herstellen der Verbindung die folgenden Umgebungsvariablen definiert werden:
Setzen Sie
PGSSLMODEauf"verify-ca".Setzen Sie
PGSSLROOTCERTauf den absoluten Pfad der entsprechendenca.crt-Datei im Dateisystem des Client-Pods.
Das folgende Beispielmanifest zeigt, wie Sie einen Pod konfigurieren, der das offizielle PostgreSQL-Image installiert, das den psql-Befehlszeilenclient enthält. Im
Beispiel wird davon ausgegangen, dass Sie im Manifest, das Ihren Datenbankcluster definiert, keine TLS-Secret-Konfiguration angeben. Daher verwendet der
AlloyDB Omni Kubernetes-Operator das Standard-TLS-Secret mit dem Namen
dbs-al-cert-DB_CLUSTER_NAME.
apiVersion: v1
kind: Pod
metadata:
name: postgres
spec:
containers:
- image: "docker.io/library/postgres:latest"
command:
- "sleep"
- "604800"
imagePullPolicy: IfNotPresent
name: db-client
volumeMounts:
- name: ca-cert
mountPath: "/DB_CLUSTER_NAME-ca-cert"
readOnly: true
volumes:
- name: ca-cert
secret:
secretName: dbs-al-cert-DB_CLUSTER_NAME
restartPolicy: Always
Ersetzen Sie DB_CLUSTER_NAME durch den Namen Ihres Datenbankclusters. Das ist derselbe Datenbankclustername, den Sie beim Erstellen des Clusters angegeben haben.
Mit den folgenden Schritten können Sie jetzt über den Pod eine sichere Verbindung zu Ihrem Datenbankcluster herstellen:
Bestimmen Sie die interne IP-Adresse Ihres Datenbankclusters:
kubectl get dbclusters.alloydbomni.dbadmin.googDie Ausgabe sollte so aussehen:
NAME PRIMARYENDPOINT PRIMARYPHASE DBCLUSTERPHASE DB_CLUSTER_NAME IP_ADDRESS Ready DBClusterReadyNotieren Sie sich
IP_ADDRESSund verwenden Sie sie im nächsten Schritt.Stellen Sie mit
psqleine Verbindung von Ihrem Client-Pod zu Ihrem Cluster her und legen Sie die Umgebungsvariablen fest, die die TLS-Zertifikatprüfung aktivieren und erfordern:kubectl exec -it postgres -- bashPGSSLMODE="verify-ca" PGSSLROOTCERT=/DB_CLUSTER_NAME-ca-cert/ca.crt psql -h IP_ADDRESS -p 5432 -U postgres -d postgresErsetzen Sie
IP_ADDRESSdurch die interne IP-Adresse, die Sie im vorherigen Schritt ermittelt haben.