AlloyDB Omni ausführen und eine Verbindung herstellen

Auf dieser Seite wird beschrieben, wie Sie AlloyDB Omni ausführen und eine Verbindung dazu herstellen, nachdem Sie es auf Ihrem eigenen Computer installiert oder in Ihrem Kubernetes-Cluster bereitgestellt haben.

Die Kubernetes-spezifischen Anleitungen auf dieser Seite setzen Grundkenntnisse in der Bedienung von Kubernetes voraus.

AlloyDB Omni ausführen

Die Verfahren zum Ausführen von AlloyDB Omni hängen davon ab, ob Sie AlloyDB Omni in einem Container auf einem einzelnen Server oder in einem Kubernetes-Cluster ausführen. Dieser Abschnitt ist in Anleitungen für diese Bereitstellungsstile unterteilt.

AlloyDB Omni starten

Ein Server

Führen Sie den Befehl docker container start aus, um einen angehaltenen AlloyDB Omni-Container zu starten:

docker container start CONTAINER_NAME

Ersetzen Sie CONTAINER_NAME durch den Namen, den Sie dem AlloyDB Omni-Container bei der Installation zugewiesen haben.

Kubernetes

Starten Sie einen angehaltenen Datenbankcluster, indem Sie in der Manifestdefinition isStopped auf false festlegen.

Sie können dies über die Befehlszeile mit kubectl tun:

kubectl patch dbclusters.alloydbomni.dbadmin.goog dbcluster-sample \
-p '{"spec":{"primarySpec":{"isStopped":false}}}' --type=merge

Status von AlloyDB Omni prüfen

Ein Server

Führen Sie den Befehl docker container ls aus, um den Status aller laufenden Container zu prüfen:

docker container ls

Wenn Ihr AlloyDB Omni-Container ausgeführt wird, wird sein Name in der Spalte NAMES der Ausgabetabelle angezeigt. In der entsprechenden Zeile wird der Status des Containers zusammengefasst.

Wenn der Name Ihres Containers nicht in der Spalte NAMES angezeigt wird, wird AlloyDB Omni nicht ausgeführt.

Kubernetes

kubectl get dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME

Ersetzen Sie DB_CLUSTER_NAME durch den Namen Ihres Datenbankclusters.

AlloyDB Omni beenden

Ein Server

Führen Sie den Befehl docker container stop aus, um einen AlloyDB Omni-Container zu beenden:

docker container stop CONTAINER_NAME

Ersetzen Sie CONTAINER_NAME durch den Namen, den Sie dem AlloyDB Omni-Container bei der Installation zugewiesen haben.

Kubernetes

Wenn Sie einen Datenbankcluster beenden möchten, legen Sie in der Manifestdefinition für isStopped den Wert true fest.

Sie können dies über die Befehlszeile mit kubectl tun:

kubectl patch dbclusters.alloydbomni.dbadmin.goog dbcluster-sample -p '{"spec":{"primarySpec":{"isStopped":true}}}' --type=merge

Verbindung zu AlloyDB Omni herstellen, das auf einem einzelnen Server ausgeführt wird

Der AlloyDB Omni-Container enthält eine eigene Kopie von psql, mit der Sie eine interaktive SQL-Shell-Sitzung mit dem Datenbankserver öffnen können.

Sie können auch über die PostgreSQL-kompatible Software Ihrer Wahl eine Verbindung zu AlloyDB Omni herstellen, die sich außerhalb des Containers befindet.

Informationen zum Herstellen einer Verbindung zu einem AlloyDB Omni-Datenbankcluster, der auf einem Kubernetes-Cluster ausgeführt wird, finden Sie unter Verbindung zu AlloyDB Omni herstellen, das auf Kubernetes ausgeführt wird.

Über den containerisierten psql verbinden

Wenn Sie eine Verbindung zum AlloyDB Omni-Datenbankserver über eine eigene containerisierte Kopie von psql herstellen möchten, führen Sie den folgenden Befehl aus:

docker exec -it CONTAINER_NAME psql -U postgres

Ersetzen Sie CONTAINER_NAME durch den Namen, den Sie dem AlloyDB Omni-Container bei der Installation zugewiesen haben.

Mit diesem Befehl stellen Sie eine Verbindung zum Server als Nutzer mit der Rolle postgres her und es wird eine postgres=#-Eingabeaufforderung angezeigt. Sie können jetzt psql-Befehle und SQL-Abfragen ausführen.

Wenn Sie psql beenden möchten, führen Sie den Befehl \q aus.

Verbindung über eigene Anwendungen herstellen

Jede Anwendung, die mit PostgreSQL funktioniert, kann auch mit AlloyDB Omni verwendet werden, ohne dass Änderungen erforderlich sind.

Wenn Sie eine Verbindung zum AlloyDB Omni-Datenbankserver herstellen möchten, müssen Sie das Netzwerk vom AlloyDB Omni-Docker-Container auf Ihrem Hostcomputer freigeben. Fügen Sie dazu beim Starten von AlloyDB Omni --network=host oder -p 5432:5432 zum docker run-Befehl hinzu.

Wenn Sie eine benutzerdefinierte Portnummer auswählen möchten, verwenden Sie -p [HOST_PORT]:5432, wenn Sie AlloyDB Omni starten. Verwenden Sie dann einen beliebigen PostgreSQL-kompatiblen Client oder eine beliebige Codebibliothek, um eine Verbindung zu Port 5432 oder der von Ihnen angegebenen benutzerdefinierten Portnummer herzustellen.

Nachdem Sie eine Verbindung zum Datenbankserver hergestellt haben, können Sie Ihre Datenbanken mithilfe von DML- und SQL-Abfragen mithilfe von Standard-PostgreSQL-Kommunikationsprotokollen definieren, abfragen und ändern.

Da AlloyDB Omni in Ihrer eigenen Umgebung ausgeführt wird, können Sie festlegen, wie Sie eine Verbindung zu AlloyDB Omni herstellen. Dazu gehört auch, den Netzwerkzugriff auf diesen Dienst entsprechend den Anforderungen Ihrer Anwendung zuzulassen oder einzuschränken, genau wie bei einem gewöhnlichen PostgreSQL-Server.

Verbindung zu AlloyDB Omni herstellen, das auf Kubernetes ausgeführt wird

Der AlloyDB Omni Kubernetes-Operator ermöglicht Verbindungen zum Datenbankcluster innerhalb desselben Kubernetes-Clusters, optional mithilfe von Zertifikaten für die Authentifizierung.

Über die vorinstallierte psql eine Verbindung 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 der Name des Datenbankclusters, den Sie beim Erstellen 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 Datenbankclusters als Kubernetes-Secret angegeben haben. Wenn Sie den Datenbankcluster beispielsweise mit dem Secret Q2hhbmdlTWUxMjM= erstellt haben, lautet das Anmeldepasswort hier ChangeMe123.

Der AlloyDB Omni-Bediener stellt eine Verbindung zum Server als Nutzer mit der Rolle postgres her und zeigt eine postgres=#-Eingabeaufforderung an. Sie können jetzt psql-Befehle und SQL-Abfragen ausführen.

Wenn Sie psql beenden möchten, führen Sie den Befehl \q aus.

Verbindung über einen separaten Pod im selben Cluster herstellen

Der Pod, in dem der AlloyDB Omni-Datenbankcluster ausgeführt wird, erlaubt standardmäßig Verbindungen innerhalb desselben Kubernetes-Clusters. Als Best Practice empfehlen wir, alle Verbindungen zum Datenbankcluster mit TLS zu sichern.

Wenn Sie ein eigenes serverseitiges TLS-Zertifikat bereitstellen möchten, geben Sie beim Konfigurieren des Datenbankclusters ein Zertifikatskennwort an. Wenn Sie kein Zertifikatssecret angeben, erstellt der AlloyDB Omni Kubernetes-Operator ein TLS-Zertifikatssecret für Sie, das auf einem Zertifikat basiert, das von einer selbst signierten Zertifizierungsstelle signiert wurde. In beiden Fällen können Sie für Ihren Datenbankclient-Pod die Zertifikatsvalidierung für jede Verbindung verlangen, um die TLS-Sicherheit zu gewährleisten.

So stellen Sie sichere Datenbankverbindungen mit TLS her:

  • Geben Sie im Manifest, das den Pod definiert, über den die Clientverbindungen hergestellt werden, ein TLS-Zertifikatskennwort an. Mögliche Werte:

    • Ein TLS-Zertifikat-Secret, das Sie bereits in Ihrem Kubernetes-Cluster erstellt haben. Weitere Informationen zur Arbeit mit TLS-Zertifikatssecrets 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 vor dem Herstellen der Verbindung definiert werden:

    • Setzen Sie PGSSLMODE auf "verify-ca".

    • Legen Sie PGSSLROOTCERT auf den absoluten Pfad der entsprechenden ca.crt-Datei im Dateisystem des Client-Pods fest.

Das folgende Beispielmanifest zeigt, wie ein Pod konfiguriert wird, 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. Dies ist derselbe Name des Datenbankclusters, den Sie beim Erstellen angegeben haben.

Sie können jetzt mit dem Pod eine sichere Verbindung zu Ihrem Datenbankcluster herstellen. Gehen Sie dazu so vor:

  1. Ermitteln Sie die interne IP-Adresse Ihres Datenbankclusters:

    kubectl get dbclusters.alloydbomni.dbadmin.goog

    Die Ausgabe sollte so aussehen:

    NAME              PRIMARYENDPOINT   PRIMARYPHASE   DBCLUSTERPHASE
    DB_CLUSTER_NAME   IP_ADDRESS        Ready          DBClusterReady
    

    Notieren Sie sich IP_ADDRESS und verwenden Sie diesen Wert im nächsten Schritt.

  2. Verwenden Sie psql, um über den Client-Pod eine Verbindung zu Ihrem Cluster herzustellen, und legen Sie die Umgebungsvariablen fest, die die TLS-Zertifikatprüfung aktivieren und erfordern:

    kubectl exec -it postgres -- bash
    PGSSLMODE="verify-ca" PGSSLROOTCERT=/DB_CLUSTER_NAME-ca-cert/ca.crt psql -h IP_ADDRESS -p 5432 -U postgres -d postgres

    Ersetzen Sie IP_ADDRESS durch die interne IP-Adresse, die Sie im vorherigen Schritt ermittelt haben.

Nächste Schritte