Este documento explica como criar uma implantação do Spanner Omni no Kubernetes. Essa implantação não é 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.
A versão prévia do Spanner Omni não é compatível com a criptografia TLS e para de gravar dados 90 dias após a criação de uma implantação. Para acesso antecipado à edição com todos os recursos, entre em contato com o Google.
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-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
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-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
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 de dados, permitindo que o Spanner Omni continue funcionando mesmo que uma zona sofra uma interrupção. Para criar essa implantação, execute o seguinte 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
Verifique 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 do 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 e 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