Este documento explica como criar uma implantação do Spanner Omni no Kubernetes. Esta implantação não está criptografada. Se você quiser configurar rapidamente um ambiente de teste ou prova de conceito para avaliar o Spanner Omni, criar uma implantação sem criptografia é a maneira mais rápida de começar porque não exige que você configure o mTLS ou outras medidas de segurança. No entanto, devido a riscos de segurança, como tráfego de rede não criptografado e acesso aberto, essa configuração não é recomendada para ambientes de produção. Você pode escolher entre uma implantação de servidor único ou regional em várias zonas.
Antes de começar
Antes de implantar o Spanner Omni, verifique se o ambiente atende aos seguintes requisitos:
Criar um cluster do Kubernetes A configuração é compatível com o Google Kubernetes Engine (GKE) e o Amazon Elastic Kubernetes Service (Amazon EKS). Talvez seja necessário personalizar a configuração para que ela funcione em outros ambientes.
Verifique se o cluster do Kubernetes pode acessar o artefato do Artifact Registry que hospeda o contêiner do Spanner Omni.
Instale e configure a ferramenta de linha de comando
kubectle o Helm.Se você configurar o ambiente do Kubernetes em máquinas da plataforma de virtualização vSphere, desative a virtualização do contador de carimbos de data/hora (TSC) adicionando
monitor_control.virtual_rdtsc = FALSEao arquivo de configuração.vmxda máquina virtual. Isso ajuda o TrueTime a funcionar corretamente.Verifique se o ambiente atende aos requisitos do sistema do Spanner Omni.
Escolha uma topologia para sua implantação.
Preparar a configuração do Helm
Crie uma configuração do Helm. Para mais informações, consulte Criar uma configuração do Helm.
Criar a implantação
Instale o gráfico do Helm com as substituições específicas. Confira a seguir exemplos de comandos para as implantações mais comuns:
Exemplo 1: executar o Spanner Omni em um único servidor no GKE com a pilha de monitoramento
Para executar o Spanner Omni em um único servidor no GKE com a pilha de monitoramento, execute o seguinte 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
Exemplo 2: executar o Spanner Omni em vários servidores no GKE
Para executar o Spanner Omni em vários servidores em uma única zona
(us-central1-a) no GKE, execute o seguinte 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
O número de servidores raiz por zona precisa ser um número ímpar entre 1 e 9, inclusive, para garantir o quorum de consistência. Se o número de servidores for par, as implantações poderão falhar. Ao configurar as zonas, designe servidores como servidores raiz. Recomendamos que você use um para desenvolvimento ou teste e três para zonas de produção de alta disponibilidade.
Exemplo 3: implantação regional altamente disponível
Essa implantação mantém três cópias dos dados, permitindo que o Spanner Omni continue funcionando mesmo que uma zona sofra uma interrupção. Para criar esse implantação, execute o seguinte 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
Verificar o status dos pods
Para verificar o status dos pods, execute o seguinte comando:
kubectl get pods --watch --namespace spanner-ns
Exemplo de saída:
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
Interagir com o Spanner Omni
Depois que os pods estiverem em execução, você poderá se conectar à implantação e interagir com ela usando a CLI do Spanner Omni.
Execute o comando a seguir para receber o endereço do serviço:
kubectl get service spanner -n spanner-nsO
EXTERNAL-IP:PORTé o DEPLOYMENT_ENDPOINT da sua implantação.Se ainda não tiver feito isso, baixe a CLI do Spanner Omni do bucket do Cloud Storage
spanner-omni.Use a CLI do Spanner Omni para criar um banco de dados GoogleSQL ou PostgreSQL e interagir com ele.
GoogleSQL
Para criar e interagir com um banco de dados do GoogleSQL, execute o seguinte:
spanner databases create DATABASE_NAME --deployment-endpoint DEPLOYMENT_ENDPOINT spanner sql --database=DATABASE_NAME --deployment-endpoint DEPLOYMENT_ENDPOINTPostgreSQL
Para criar e interagir com um banco de dados PostgreSQL, execute o seguinte:
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.
Observar a implantação (opcional)
É possível configurar o Spanner Omni com monitoring.enabled=true para
configurar o Prometheus para ingerir métricas exportadas pelo Spanner Omni.
Isso ajuda a analisar e depurar problemas com sua implantação. Para mais informações, consulte:
Para receber os detalhes do serviço, execute os seguintes comandos:
# 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