Deployment in Kubernetes erstellen

In diesem Dokument wird beschrieben, wie Sie eine Spanner Omni-Bereitstellung in Kubernetes erstellen. Diese Bereitstellung ist nicht verschlüsselt. Wenn Sie schnell eine Test- oder Proof-of-Concept-Umgebung einrichten möchten, um Spanner Omni zu testen, ist das Erstellen einer Bereitstellung ohne Verschlüsselung der schnellste Weg, da Sie keine mTLS- oder andere Sicherheitsmaßnahmen konfigurieren müssen. Aufgrund von Sicherheitsrisiken wie unverschlüsseltem Netzwerkverkehr und offenem Zugriff wird diese Konfiguration jedoch nicht für Produktionsumgebungen empfohlen. Sie können zwischen einer Bereitstellung auf einem einzelnen Server oder einer regionalen Bereitstellung in mehreren Zonen wählen.

Die Vorschauversion von Spanner Omni unterstützt keine TLS-Verschlüsselung und schreibt 90 Tage nach der Erstellung einer Bereitstellung keine Daten mehr. Wenn Sie Vorabzugriff auf die Version mit allen Funktionen erhalten möchten, wenden Sie sich an Google.

Hinweis

Prüfen Sie vor der Bereitstellung von Spanner Omni, ob Ihre Umgebung die folgenden Anforderungen erfüllt:

  • Kubernetes-Cluster erstellen Die Konfiguration unterstützt Google Kubernetes Engine (GKE) und Amazon Elastic Kubernetes Service (Amazon EKS). Möglicherweise müssen Sie die Konfiguration anpassen, damit sie in anderen Umgebungen funktioniert.

  • Achten Sie darauf, dass der Kubernetes-Cluster auf das Artifact Registry-Artefakt zugreifen kann, in dem der Spanner Omni-Container gehostet wird.

  • Installieren und konfigurieren Sie das kubectl-Befehlszeilentool und Helm.

  • Wenn Sie die Kubernetes-Umgebung auf Maschinen der vSphere-Virtualisierungsplattform einrichten, deaktivieren Sie die TSC-Virtualisierung (Time Stamp Counter), indem Sie monitor_control.virtual_rdtsc = FALSE in die Konfigurationsdatei .vmx der virtuellen Maschine einfügen. So kann TrueTime richtig funktionieren.

  • Prüfen Sie, ob Ihre Umgebung die Systemanforderungen für Spanner Omni erfüllt.

  • Wählen Sie eine Topologie für die Bereitstellung aus.

Helm-Konfiguration vorbereiten

Erstellen Sie eine Helm-Konfiguration. Weitere Informationen finden Sie unter Helm-Konfiguration erstellen.

Bereitstellung erstellen

Installieren Sie das Helm-Diagramm mit den spezifischen Überschreibungen. Im Folgenden finden Sie Beispielbefehle für die häufigsten Bereitstellungen:

Beispiel 1: Spanner Omni auf einem einzelnen Server in GKE mit dem Monitoring-Stack ausführen

Führen Sie den folgenden Befehl aus, um Spanner Omni auf einem einzelnen Server in GKE mit dem Monitoring-Stack auszuführen:

  kubectl create ns monitoring
  helm upgrade --install spanner-omni oci://us-docker.pkg.dev/spanner-omni/charts/spanner-omni --version 0.4.0 \
    --set global.platform=gke \
    --set deployment.singleServer=true \
    --set monitoring.enabled=true \
    --namespace spanner-ns \
    --create-namespace

Beispiel 2: Spanner Omni auf mehreren Servern in GKE ausführen

Führen Sie den folgenden Befehl aus, um Spanner Omni auf mehreren Servern in einer einzelnen Zone (us-central1-a) in GKE auszuführen:

  kubectl create ns monitoring
  helm upgrade --install spanner-omni oci://us-docker.pkg.dev/spanner-omni/charts/spanner-omni --version 0.4.0 \
    --set global.platform=gke \
    --set deployment.replicasPerZone=5 \
    --set deployment.rootServersPerZone=3 \
    --set-json 'locations=[{"name":"us-central1","zones":[{"name":"us-central1-a","shortName":"a"}]}]' \
    --set monitoring.enabled=true \
    --namespace spanner-ns \
    --create-namespace

Die Anzahl der Root-Server pro Zone muss eine ungerade Zahl zwischen 1 und 9 (einschließlich) sein, um die Konsistenz zu gewährleisten. Wenn die Anzahl der Server eine gerade Zahl ist, können Bereitstellungen fehlschlagen. Weisen Sie beim Konfigurieren Ihrer Zonen Server als Stammserver zu. Wir empfehlen, eine für die Entwicklung oder das Testen und drei für hochverfügbare Produktionszonen zu verwenden.

Beispiel 3: Hochverfügbare regionale Bereitstellung

Bei dieser Bereitstellung werden drei Kopien der Daten erstellt, sodass Spanner Omni auch dann weiter funktioniert, wenn eine Zone ausfällt. Führen Sie den folgenden Befehl aus, um diese Bereitstellung zu erstellen:

  kubectl create ns monitoring
  helm upgrade --install spanner-omni oci://us-docker.pkg.dev/spanner-omni/charts/spanner-omni --version 0.4.0 \
    --set global.platform=gke \
    --set-json 'locations=[{"name":"us-central1","zones":[{"name":"us-central1-a","shortName":"a"},{"name":"us-central1-c","shortName":"b"},{"name":"us-central1-d","shortName":"c"}]}]' \
    --set monitoring.enabled=true \
    --namespace spanner-ns \
    --create-namespace

Status der Pods prüfen

Führen Sie den folgenden Befehl aus, um den Status der Pods zu prüfen:

  kubectl get pods --watch --namespace spanner-ns

Beispielausgabe:

  NAME          READY   STATUS    RESTARTS   AGE
  spanner-a-0   1/1     Running   0          4m
  spanner-a-1   1/1     Running   0          4m
  spanner-a-2   1/1     Running   0          4m
  spanner-a-3   1/1     Running   0          4m
  spanner-a-4   1/1     Running   0          4m
  spanner-b-0   1/1     Running   0          4m
  spanner-b-1   1/1     Running   0          4m
  spanner-b-2   1/1     Running   0          4m
  spanner-b-3   1/1     Running   0          4m
  spanner-b-4   1/1     Running   0          4m
  spanner-c-0   1/1     Running   0          4m
  spanner-c-1   1/1     Running   0          4m
  spanner-c-2   1/1     Running   0          4m
  spanner-c-3   1/1     Running   0          4m
  spanner-c-4   1/1     Running   0          4m

Mit Spanner Omni interagieren

Nachdem die Pods ausgeführt werden, können Sie mit der Spanner Omni CLI eine Verbindung zu Ihrer Bereitstellung herstellen und mit ihr interagieren.

  1. Führen Sie den folgenden Befehl aus, um die Dienstadresse abzurufen:

    kubectl get service spanner -n spanner-ns
    

    EXTERNAL-IP:PORT ist die DEPLOYMENT_ENDPOINT für Ihr Deployment.

  2. Laden Sie die Spanner Omni CLI aus dem Cloud Storage-Bucket spanner-omni herunter, falls noch nicht geschehen.

    Spanner Omni-Bucket aufrufen

  3. Mit der Spanner Omni CLI können Sie eine GoogleSQL- oder PostgreSQL-Datenbank erstellen und mit ihr interagieren.

    GoogleSQL

    Führen Sie Folgendes aus, um eine GoogleSQL-Datenbank zu erstellen und mit ihr zu interagieren:

    spanner databases create DATABASE_NAME --deployment-endpoint DEPLOYMENT_ENDPOINT
    spanner sql --database=DATABASE_NAME --deployment-endpoint DEPLOYMENT_ENDPOINT
    

    PostgreSQL

    Führen Sie Folgendes aus, um eine PostgreSQL-Datenbank zu erstellen und mit ihr zu interagieren:

     spanner databases create POSTGRESQL_DATABASE_NAME --database_dialect POSTGRESQL --deployment-endpoint DEPLOYMENT_ENDPOINT
     spanner sql --database=POSTGRESQL_DATABASE_NAME --deployment-endpoint DEPLOYMENT_ENDPOINT
     ```
    
    You can also interact with a PostgreSQL database by following
    the instructions in [Connect using PGAdapter](/spanner-omni/pgadapter)
    to configure PGAdapter and use PostgreSQL tools, such as
    `psql`, with your PostgreSQL-dialect databases.
    

Bereitstellung beobachten (optional)

Sie können Spanner Omni mit monitoring.enabled=true einrichten, um Prometheus so zu konfigurieren, dass Messwerte aufgenommen werden, die von Spanner Omni exportiert werden. So können Sie Probleme mit Ihrer Bereitstellung analysieren und beheben. Weitere Informationen finden Sie unter:

Führen Sie die folgenden Befehle aus, um die Dienstdetails abzurufen:

  # Prometheus service details. Default port is 9090.
  kubectl get service prometheus-service -n monitoring

  # Grafana service details. Default port is 3000.
  kubectl get service grafana -n monitoring

Nächste Schritte