AlloyDB Omni ausführen und eine Verbindung herstellen

Wählen Sie eine Dokumentationsversion aus:

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 voraus, dass Sie mit der Bedienung von Kubernetes vertraut sind.

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 Container auf einem einzelnen Server oder in einem Kubernetes-Cluster ausführen. Die Anleitung in diesem Abschnitt ist nach diesen Bereitstellungsarten unterteilt.

AlloyDB Omni starten

Einzelserver

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

Docker

docker container start CONTAINER_NAME

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

Podman

podman 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 beendeten 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 DB_CLUSTER_NAME \
-p '{"spec":{"primarySpec":{"isStopped":false}}}' --type=merge  -n DB_CLUSTER_NAMESPACE

Ersetzen 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

Einzelserver

Führen Sie den Befehl docker container ls oder den Befehl podman container ls aus, um den Status aller ausgeführten Container zu prüfen:

Docker

docker container ls

Podman

podman 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 Ihre AlloyDB Omni-Instanz nicht ausgeführt.

Kubernetes

kubectl get dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME  -n DB_CLUSTER_NAMESPACE

Ersetzen Sie Folgendes:

AlloyDB Omni beenden

Einzelserver

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

Docker

 docker container stop CONTAINER_NAME

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

Podman

 podman 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 isStopped auf true fest.

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

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

Ersetzen 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 auf einem einzelnen Server herstellen

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 von außerhalb des Containers eine Verbindung zu AlloyDB Omni herstellen und dazu die PostgreSQL-kompatible Software Ihrer Wahl verwenden.

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

Verbindung über den containerisierten psql herstellen

Führen Sie den folgenden Befehl aus, um über die eigene containerisierte Kopie von psql eine Verbindung zum AlloyDB Omni-Datenbankserver herzustellen:

Docker

  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.

Podman

  podman 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 wird eine Verbindung zum Server als Nutzerrolle postgres hergestellt und eine postgres=#-Eingabeaufforderung angezeigt. Sie können jetzt psql-Befehle und SQL-Abfragen ausführen.

Um psql zu beenden, 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. Es sind keine Änderungen erforderlich.

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

Wenn Sie eine benutzerdefinierte Portnummer auswählen möchten, verwenden Sie -p [HOST_PORT]:5432 beim Starten von AlloyDB Omni. Verwenden Sie dann einen beliebigen PostgreSQL-kompatiblen Client oder eine beliebige Codebibliothek, um eine Verbindung zum Port 5432 oder zur benutzerdefinierten Portnummer herzustellen, die Sie angegeben haben.

Nachdem Sie eine Verbindung zum Datenbankserver hergestellt haben, können Sie Ihre Datenbanken mit DML- und SQL-Abfragen definieren, abfragen und ändern. Dazu verwenden Sie die standardmäßigen PostgreSQL-Kommunikationsprotokolle.

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

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

Der AlloyDB Omni Kubernetes-Operator ermöglicht Verbindungen zum Datenbankcluster aus demselben Kubernetes-Cluster, optional mit Zertifikaten für die Authentifizierung.

Verbindung über das vorinstallierte 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 -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 Standardnamespace 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 einem Secret von Q2hhbmdlTWUxMjM= erstellt haben, ist das hier zu verwendende Anmeldepasswort ChangeMe123.

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

Um psql zu beenden, 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, 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 Ihr eigenes TLS-Zertifikat für den Server bereitstellen möchten, geben Sie beim Konfigurieren Ihres Datenbankclusters ein Zertifikatgeheimnis an. Wenn Sie kein Zertifikatssecret angeben, erstellt der AlloyDB Omni Kubernetes-Operator ein TLS-Zertifikatssecret für Sie, das auf einem von einer selbstsignierten Zertifizierungsstelle signierten Zertifikat basiert. In beiden Fällen können Sie festlegen, dass für den Datenbankclient-Pod bei jeder Verbindung eine Zertifikatsvalidierung erforderlich ist, um 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-Zertifikatgeheimnis an. Mögliche Werte:

    • Ein TLS-Zertifikatssecret, 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 standardmäßige Zertifikatssecret, das der AlloyDB Omni Kubernetes-Operator für Sie erstellt, heißt DB_CLUSTER_NAME-ca-cert, wenn Sie kein TLS-Secret im Manifest 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 PGSSLMODE auf "verify-ca".

    • Legen Sie PGSSLROOTCERT auf den absoluten Pfad der relevanten ca.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 standardmäßige 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 den Datenbankcluster erstellt haben.

Sie können den Pod jetzt verwenden, um sicher eine Verbindung zu Ihrem Datenbankcluster herzustellen. Gehen Sie dazu so vor:

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

    kubectl get dbclusters.alloydbomni.dbadmin.goog -n DB_CLUSTER_NAMESPACE

    Die Ausgabe sollte so aussehen:

    NAME              PRIMARYENDPOINT   PRIMARYPHASE   DBCLUSTERPHASE
    DB_CLUSTER_NAME   IP_ADDRESS        Ready          DBClusterReady
    

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

  2. 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 -- 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