Auf dieser Seite wird beschrieben, wie Sie AlloyDB Omni ausführen und eine Verbindung dazu herstellen, nachdem Sie es in Ihrem Kubernetes-Cluster bereitgestellt haben.
Für die Kubernetes-spezifischen Anleitungen auf dieser Seite werden grundlegende Kenntnisse im Umgang mit Kubernetes vorausgesetzt.
AlloyDB Omni ausführen
Die Verfahren, die Sie zum Ausführen von AlloyDB Omni verwenden, hängen davon ab, ob Sie AlloyDB Omni in einem Kubernetes-Cluster ausführen.
AlloyDB Omni starten
Starten Sie einen beendeten Datenbankcluster, indem Sie in seiner Manifestdefinition isStopped auf false setzen.
Sie können dies in der Befehlszeile mit kubectl tun:
kubectl patch dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME \
-p '{"spec":{"primarySpec":{"isStopped":false}}}' --type=merge -n DB_CLUSTER_NAMESPACEErsetzen Sie Folgendes:
DB_CLUSTER_NAME: Der Name dieses Datenbankclusters, z. B.my-db-cluster.DB_CLUSTER_NAMESPACE(optional): Der Namespace, in dem Sie diesen Datenbankcluster erstellt haben, z. B.my-db-cluster-namespace.
Status von AlloyDB Omni prüfen
kubectl get dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME -n DB_CLUSTER_NAMESPACEErsetzen Sie Folgendes:
DB_CLUSTER_NAME: der Name Ihres Datenbankclusters.DB_CLUSTER_NAMESPACE(optional): Der Namespace, in dem Sie Ihren Datenbankcluster erstellt haben.
Die Ausgabe sieht etwa so aus:
NAME PRIMARYENDPOINT PRIMARYPHASE DBCLUSTERPHASE
DB_CLUSTER_NAME IP_ADDRESS Ready DBClusterReady
AlloyDB Omni beenden
Wenn Sie einen Datenbankcluster beenden möchten, legen Sie in seiner Manifestdefinition isStopped auf true fest.
Sie können dies in der Befehlszeile mit kubectl tun:
kubectl patch dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME -p '{"spec":{"primarySpec":{"isStopped":true}}}' --type=merge -n DB_CLUSTER_NAMESPACEErsetzen Sie Folgendes:
DB_CLUSTER_NAME: Der Name dieses Datenbankclusters, z. B.my-db-cluster.DB_CLUSTER_NAMESPACE(optional): Der Namespace, in dem Sie diesen Datenbankcluster erstellt haben, z. B.my-db-cluster-namespace.
Verbindung 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.
Mit dem vorinstallierten psql verbinden
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 -n DB_CLUSTER_NAMESPACE -o jsonpath='{.items[0].metadata.name}'`kubectl exec -ti $DBPOD -n DB_CLUSTER_NAMESPACE -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.
Sie können das Festlegen von DB_CLUSTER_NAMESPACE überspringen, wenn Sie den Datenbankcluster im Standard-Namespace erstellt haben.
Nachdem Sie den Befehl eingegeben haben, werden Sie vom Datenbankserver zur Eingabe eines Passworts aufgefordert.
Geben Sie das Passwort ein, dessen base64-codierte Version Sie beim Erstellen des Datenbankclusters als Kubernetes-Secret angegeben haben. Wenn Sie den Datenbankcluster beispielsweise mit dem Secret Q2hhbmdlTWUxMjM= erstellt haben, lautet das hier zu verwendende Anmeldepasswort ChangeMe123.
Der AlloyDB Omni-Operator verbindet Sie als Nutzerrolle postgres mit dem Server und zeigt eine postgres=#-Eingabeaufforderung an. Sie können jetzt psql-Befehle und SQL-Abfragen ausführen.
Führen Sie den Befehl \q aus, um psql zu beenden.
Verbindung über einen separaten Pod im selben Cluster herstellen
Der Pod, auf dem der AlloyDB Omni-Datenbankcluster ausgeführt wird, lässt standardmäßig Verbindungen innerhalb desselben Kubernetes-Clusters zu. Als Best Practice empfehlen wir, alle Verbindungen zum Datenbankcluster mit TLS zu sichern.
Wenn Sie ein eigenes Server-TLS-Zertifikat bereitstellen möchten, geben Sie beim Konfigurieren des Datenbankclusters ein Zertifikats-Secret an. Wenn Sie kein Zertifikats-Secret angeben, erstellt der AlloyDB Omni Kubernetes-Operator ein TLS-Zertifikats-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 der Datenbank-Client-Pod bei jeder Verbindung eine Zertifikatsvalidierung erfordert, um die TLS-Sicherheit zu gewährleisten.
Führen Sie die folgenden Aktionen aus, um sichere Datenbankverbindungen über TLS herzustellen:
Geben Sie im Manifest, das den Pod definiert, der die Clientverbindungen herstellt, ein TLS-Zertifikats-Secret an. Diese Rollen stehen zur Verfügung:
Ein TLS-Zertifikats-Secret, das Sie bereits in Ihrem Kubernetes-Cluster erstellt haben. Weitere Informationen zum Arbeiten mit TLS-Zertifikats-Secrets in Kubernetes finden Sie unter TLS-Secrets.
Das Standardzertifikat-Secret, das der AlloyDB Omni Kubernetes-Operator für Sie erstellt, mit dem Namen
DB_CLUSTER_NAME-ca-cert, wenn Sie kein TLS-Secret als Teil des Manifests Ihres Datenbankclusters angeben.
Wenn Ihr Client-Pod eine Verbindung zum Datenbankcluster herstellt, müssen die folgenden Umgebungsvariablen definiert werden, bevor die Verbindung hergestellt wird:
Setzen Sie
PGSSLMODEauf"verify-ca".Legen Sie
PGSSLROOTCERTauf den absoluten Pfad der relevantenca.crt-Datei im Dateisystem des Client-Pods fest.
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
namespace: DB_CLUSTER_NAMESPACE
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 Folgendes:
DB_CLUSTER_NAME: der Name Ihres Datenbankclusters. Das ist derselbe Datenbankclustername, den Sie beim Erstellen des Clusters angegeben haben.DB_CLUSTER_NAMESPACE(optional): Der Namespace, in dem Sie Ihren Datenbankcluster erstellt haben.
Sie können den Pod jetzt verwenden, um mit den folgenden Schritten eine sichere Verbindung zu Ihrem Datenbankcluster herzustellen:
Ermitteln Sie die interne IP-Adresse Ihres Datenbankclusters:
kubectl get dbclusters.alloydbomni.dbadmin.goog -n DB_CLUSTER_NAMESPACEDie Ausgabe sollte so aussehen:
NAME PRIMARYENDPOINT PRIMARYPHASE DBCLUSTERPHASE DB_CLUSTER_NAME IP_ADDRESS Ready DBClusterReadyNotieren Sie sich
IP_ADDRESSund verwenden Sie es im folgenden Schritt.Verwenden Sie
psql, um vom Client-Pod aus eine Verbindung zu Ihrem Cluster herzustellen. Legen Sie dabei die Umgebungsvariablen fest, die die TLS-Zertifikatsprüfung aktivieren und erfordern:kubectl exec -it postgres -n DB_CLUSTER_NAMESPACE -- 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.Optional. Passen Sie den Port an, über den die Datenbank eingehende Verbindungsanfragen akzeptiert. Wenn Sie den Standardport
5432überschreiben möchten, verwenden Sie das Attributport. Die Werte müssen zwischen1024und65535liegen.Das folgende Beispiel zeigt die Konfiguration für eine AlloyDB Omni-DBCluster-Ressource, wenn Sie den Datenbankport anpassen.
apiVersion: v1 kind: Secret metadata: name: db-pw-dbcluster-sample type: Opaque data: dbcluster-sample: "Q2hhbmdlTWUxMjM=" # Password is ChangeMe123 --- apiVersion: alloydbomni.dbadmin.goog/v1 kind: DBCluster metadata: name: dbcluster-sample spec: databaseVersion: "18.4.0" primarySpec: port: 6789 adminUser: passwordRef: name: db-pw-dbcluster-sample resources: memory: 5Gi cpu: 1 disks: - name: DataDisk size: 10Gi
Nächste Schritte