Crea un deployment su Kubernetes

Questo documento spiega come creare un deployment di 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 dei 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.

La versione di anteprima di Spanner Omni non supporta la crittografia TLS. Per ottenere le funzionalità che consentono di creare deployment con crittografia TLS, contatta Google per richiedere l'accesso anticipato alla versione completa di Spanner Omni.

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 farla funzionare in altri ambienti.

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

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

  • Se configuri l'ambiente Kubernetes sulle macchine della piattaforma di virtualizzazione vSphere, disattiva la virtualizzazione del contatore di 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 il deployment.

Prepara la configurazione di Helm

Crea una configurazione di Helm. Per ulteriori informazioni, vedi Creare una configurazione di Helm.

Crea il deployment

Installa il grafico Helm con le sostituzioni specifiche. Di seguito sono riportati comandi di esempio per i deployment 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 il seguente comando:

  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

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 il seguente comando:

  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

Esempio 3: deployment regionale ad alta disponibilità

Questo deployment conserva tre copie dei dati, consentendo a Spanner Omni di continuare a funzionare anche in caso di interruzione di una zona. Per creare questo deployment, esegui il seguente comando:

  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

Controlla lo stato dei pod

Per controllare lo stato dei pod, esegui il seguente 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

Interagisci con Spanner Omni

Una volta che i pod sono in esecuzione, puoi connetterti al deployment e interagire con esso utilizzando la CLI di Spanner Omni.

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

    kubectl get service spanner -n spanner-ns
    

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

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

    Vai al bucket di Spanner Omni

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

    GoogleSQL

    Per creare un database GoogleSQL e interagire con esso, esegui i seguenti comandi:

    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 i seguenti comandi:

     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 ulteriori informazioni, vedi:

Per ottenere i dettagli del servizio, esegui i seguenti 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