Criar uma implantação no Kubernetes

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 kubectl e 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 = FALSE ao arquivo de configuração .vmx da 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.

  1. Execute o comando a seguir para receber o endereço do serviço:

    kubectl get service spanner -n spanner-ns
    

    O EXTERNAL-IP:PORT é o DEPLOYMENT_ENDPOINT da sua implantação.

  2. Se ainda não tiver feito isso, baixe a CLI do Spanner Omni do bucket do Cloud Storage spanner-omni.

    Acessar o bucket do Spanner Omni

  3. 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_ENDPOINT
    

    PostgreSQL

    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

A seguir