Crea un deployment su Kubernetes

Questo documento spiega come creare un deployment Spanner Omni su Kubernetes. Questo deployment non è criptato. Se vuoi configurare rapidamente un ambiente di test o proof of concept per valutare Spanner Omni, la creazione di un deployment senza crittografia è il modo più rapido per iniziare perché non richiede la configurazione di mTLS o altre misure di sicurezza. Tuttavia, a causa di rischi per la sicurezza, come il traffico di rete non criptato e l'accesso aperto, questa configurazione non è consigliata per gli ambienti di produzione. Puoi scegliere tra un deployment a server singolo o regionale in più zone.

Prima di iniziare

Prima di eseguire il deployment di Spanner Omni, assicurati che il tuo ambiente soddisfi i seguenti requisiti:

  • Crea un cluster Kubernetes. La configurazione supporta Google Kubernetes Engine (GKE) e Amazon Elastic Kubernetes Service (Amazon EKS). Potresti dover personalizzare la configurazione per utilizzarla in altri ambienti.

  • Assicurati che il cluster Kubernetes possa accedere all'artefatto Artifact Registry che ospita il container Spanner Omni.

  • Installa e configura lo strumento a riga di comando kubectl e Helm.

  • Se configuri l'ambiente Kubernetes sulle macchine della piattaforma di virtualizzazione vSphere, disattiva la virtualizzazione del contatore del timestamp (TSC) aggiungendo monitor_control.virtual_rdtsc = FALSE al file di configurazione .vmx della macchina virtuale. In questo modo, TrueTime funziona correttamente.

  • Verifica che il tuo ambiente soddisfi i requisiti di sistema di Spanner Omni.

  • Scegli una topologia per l'implementazione.

Prepara la configurazione di Helm

Crea una configurazione Helm. Per saperne di più, consulta Creare una configurazione Helm.

Crea il deployment

Installa il grafico Helm con gli override specifici. Di seguito sono riportati comandi di esempio per le implementazioni più comuni:

Esempio 1: esegui Spanner Omni su un singolo server su GKE con lo stack di monitoraggio

Per eseguire Spanner Omni su un singolo server su GKE con lo stack di monitoraggio, esegui questo comando:

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

Esempio 2: esegui Spanner Omni su più server in GKE

Per eseguire Spanner Omni su più server in una singola zona (us-central1-a) in GKE, esegui questo comando:

  kubectl create ns monitoring
  helm upgrade --install spanner-omni oci://us-docker.pkg.dev/spanner-omni/charts/spanner-omni --version 1.0.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

Il numero di server radice per zona deve essere un numero dispari compreso tra 1 e 9, inclusi, per garantire il quorum per la coerenza. Se il numero di server è pari, i deployment potrebbero non riuscire. Quando configuri le zone, designa i server come server radice. Ti consigliamo di utilizzarne una per lo sviluppo o il test e tre per le zone di produzione ad alta disponibilità.

Esempio 3: deployment regionale ad alta affidabilità

Questo deployment mantiene tre copie dei dati, consentendo a Spanner Omni di continuare a funzionare anche se una zona subisce un'interruzione. Per creare questo deployment, esegui questo comando:

  kubectl create ns monitoring
  helm upgrade --install spanner-omni oci://us-docker.pkg.dev/spanner-omni/charts/spanner-omni --version 1.0.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

Controllare lo stato dei pod

Per controllare lo stato dei pod, esegui questo comando:

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

Output di esempio:

  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

Interagire con Spanner Omni

Una volta in esecuzione, puoi connetterti al deployment e interagire con esso utilizzando la CLI Spanner Omni.

  1. Esegui questo comando per ottenere l'indirizzo di emergenza:

    kubectl get service spanner -n spanner-ns
    

    EXTERNAL-IP:PORT è DEPLOYMENT_ENDPOINT per il tuo deployment.

  2. Se non l'hai ancora fatto, scarica Spanner Omni CLI dal bucket Cloud Storage spanner-omni.

    Vai al bucket Spanner Omni

  3. Utilizza la CLI Spanner Omni per creare un database GoogleSQL o PostgreSQL e interagisci con esso.

    GoogleSQL

    Per creare un database GoogleSQL e interagire con esso, esegui quanto segue:

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

    PostgreSQL

    Per creare un database PostgreSQL e interagire con esso, esegui quanto segue:

     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.
    

Osserva il deployment (facoltativo)

Puoi configurare Spanner Omni con monitoring.enabled=true per configurare Prometheus in modo da importare le metriche esportate da Spanner Omni. In questo modo puoi analizzare ed eseguire il debug dei problemi relativi al deployment. Per saperne di più, consulta:

Per ottenere i dettagli del servizio, esegui questi comandi:

  # 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

Passaggi successivi