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 Einzelserver- oder einer regionalen Bereitstellung über mehrere Zonen hinweg 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 dem Deployment 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 Ihre Bereitstellung aus.

Helm-Konfiguration vorbereiten

Helm-Konfiguration erstellen 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-central1-docker.pkg.dev/spanner-omni/helm-charts/spanner-omni --version 0.1.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-central1-docker.pkg.dev/spanner-omni/helm-charts/spanner-omni --version 0.1.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 Stammserver pro Zone muss eine ungerade Zahl zwischen 1 und 9 sein, um das Quorum für die Konsistenz zu gewährleisten. Wenn die Anzahl der Server eine gerade Zahl ist, können Bereitstellungen fehlschlagen. Wenn Sie Ihre Zonen konfigurieren, weisen Sie Server als Stammserver zu. Wir empfehlen, einen 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 gespeichert, 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-central1-docker.pkg.dev/spanner-omni/helm-charts/spanner-omni --version 0.1.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

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

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

    kubectl get service spanner -n spanner-ns
    

    Die 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 erfasst 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