Deployment in Kubernetes erstellen

In diesem Dokument wird beschrieben, wie Sie ein Spanner Omni-Deployment in Kubernetes erstellen. Dieses Deployment 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 eines Deployments ohne Verschlüsselung der schnellste Weg, um loszulegen, 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 einem einzelnen Server oder einem regionalen Deployment über mehrere Zonen hinweg wählen.

Die Vorschau version von Spanner Omni unterstützt keine TLS-Verschlüsselung. Wenn Sie die Funktionen zum Erstellen von Deployments mit TLS-Verschlüsselung nutzen möchten, wenden Sie sich an Google, um einen frühen Zugriff auf die Vollversion von Spanner Omni anzufordern.

Hinweis

Bevor Sie Spanner Omni bereitstellen, prüfen Sie, ob Ihre Umgebung die folgenden Anforderungen erfüllt:

  • Erstellen Sie einen Kubernetes-Cluster. Die Konfiguration unterstützt Google Kubernetes Engine (GKE) und Amazon Elastic Kubernetes Service (Amazon EKS). Möglicherweise müssen Sie die Konfiguration an andere Umgebungen anpassen.

  • Prüfen Sie, ob der Kubernetes-Cluster auf das Artifact Registry-Artefakt zugreifen kann, das den Spanner Omni-Container hostet.

  • 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 der .vmx-Konfigurationsdatei der virtuellen Maschine monitor_control.virtual_rdtsc = FALSE hinzufügen. So funktioniert TrueTime korrekt.

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

  • Wählen Sie eine Topologie für Ihr Deployment 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 entsprechenden Überschreibungen. Im Folgenden finden Sie Beispielbefehle für die häufigsten Deployments:

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

Beispiel 3: Hochverfügbares regionales Deployment

Bei diesem Deployment werden drei Kopien der Daten gespeichert, sodass Spanner Omni auch dann weiter funktioniert, wenn es zu einem Ausfall in einer Zone kommt. Führen Sie den folgenden Befehl aus, um dieses Deployment 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

Nachdem die Pods ausgeführt wurden, können Sie eine Verbindung zu Ihrem Deployment herstellen und mit ihm über die Spanner Omni-Befehlszeile interagieren.

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

    kubectl get service spanner -n spanner-ns
    

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

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

    Zum Spanner Omni-Bucket

  3. Verwenden Sie die Spanner Omni-Befehlszeile, um eine GoogleSQL- oder PostgreSQL-Datenbank zu erstellen und mit ihr zu 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.
    

Deployment 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 Ihrem Deployment analysieren und beheben. Weitere Informationen:

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