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
kubectle 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 = FALSEal file di configurazione.vmxdella 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.
Esegui questo comando per ottenere l'indirizzo di emergenza:
kubectl get service spanner -n spanner-nsEXTERNAL-IP:PORTè DEPLOYMENT_ENDPOINT per il tuo deployment.Se non l'hai ancora fatto, scarica Spanner Omni CLI dal bucket Cloud Storage
spanner-omni.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_ENDPOINTPostgreSQL
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