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
kubectlstrumento 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 = 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 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.
Esegui il seguente comando per ottenere l'indirizzo di emergenza:
kubectl get service spanner -n spanner-nsIl
EXTERNAL-IP:PORTè il DEPLOYMENT_ENDPOINT per il tuo deployment.Se non l'hai già fatto, scarica la CLI di Spanner Omni dal bucket Cloud Storage
spanner-omni.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_ENDPOINTPostgreSQL
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