Cloud Spanner com Terraform

Última atualização: 23-07-2020

O que é Cloud Spanner?

O Google Cloud Spanner é um banco de dados compatível com ACID, distribuído globalmente, que lida automaticamente com réplicas, fragmentação e processamento de transações, para que você possa escalar rapidamente para atender a qualquer padrão de uso e garantir o sucesso de seus produtos.

Características principais

  • Banco de dados relacional, construído para escalar: tudo que você esperaria de um banco de dados relacional - esquemas, consultas SQL e transações ACID - testado em batalha e pronto para escalar globalmente.
  • Disponibilidade de 99,999%: o Cloud Spanner oferece disponibilidade de 99,999% líder do setor para instâncias multirregionais - 10 vezes menos tempo de inatividade do que quatro noves - e fornece replicação síncrona e transparente em configurações regionais e multirregionais.
  • Fragmentação automática: o Cloud Spanner otimiza o desempenho fragmentando automaticamente os dados com base na carga da solicitação e no tamanho dos dados. Como resultado, você pode gastar menos tempo se preocupando em como dimensionar seu banco de dados e, em vez disso, se concentrar em dimensionar seus negócios.

Ver todos os recursos

O que você aprenderá

  • Como usar o provedor Google Cloud Terraform .
  • Uso do Terraform para criar instâncias e bancos de dados do Cloud Spanner.
  • Uso do Terraform para modificar recursos do Cloud Spanner.
  • Uso do Terraform para excluir recursos do Cloud Spanner.

Configuração de ambiente individualizada

Se você ainda não tem uma Conta do Google (Gmail ou Google Apps), você deve criar uma . Faça login no console do Google Cloud Platform ( console.cloud.google.com ) e crie um novo projeto:

50983ac3fdbbf8d0.png

ea581205026ca8e3.png

Lembre-se do ID do projeto, um nome exclusivo em todos os projetos do Google Cloud (o nome acima já foi escolhido e não funcionará para você, desculpe!). Ele será referido posteriormente neste codelab como PROJECT_ID .

Em seguida, você precisará habilitar o faturamento no Console do Cloud para usar os recursos do Google Cloud.

Executar este codelab não deve custar mais do que alguns dólares, mas pode custar mais se você decidir usar mais recursos ou se deixá-los em execução (consulte a seção "limpeza" no final deste documento).

Novos usuários do Google Cloud Platform estão qualificados para uma avaliação gratuita de US $ 300 .

Autenticação

Instale a ferramenta de linha de comando gcloud, caso ainda não tenha feito isso. Depois de instalar o gcloud, ative o Application Default Credentials executando o seguinte comando em seu terminal:

$ gcloud auth application-default login

Terraform

Se você não instalou o Terraform antes, instale o Terraform .

O provedor Google Cloud Terraform oferece quatro recursos do Cloud Spanner:

Neste codelab, criaremos e gerenciaremos instâncias e bancos de dados do Cloud Spanner.

Meio Ambiente

Em seu ambiente de desenvolvimento, crie um novo diretório para seus arquivos de configuração do Terraform.

$ mkdir ~/terraform-spanner
$ cd ~/terraform-spanner

Em seguida, crie um arquivo chamado "main.tf" com o seguinte conteúdo e substitua PROJECT_ID por seu próprio ID de projeto do Google Cloud:

$ cat >> main.tf <<'EOF'
provider "google" {
  project = "PROJECT_ID"
}
EOF

No restante deste codelab, iremos modificar este arquivo e aplicar as alterações.

Modifique o main.tf com o seguinte conteúdo para adicionar uma nova instância do Cloud Spanner:

provider "google" {
  project = "PROJECT_ID"
}

resource "google_spanner_instance" "main" {
  config       = "regional-us-central1"
  display_name = "first-terraform-instance"
  num_nodes    = 3
}

Execute o seguinte comando para aplicar as alterações:

$ terraform apply
# ...
Do you want to perform these actions?
  Terraform will perform the actions described above.
  Only 'yes' will be accepted to approve.

  Enter a value: yes
# ...
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

Depois que as alterações forem aplicadas, você poderá ver a instância no Google Cloud Console . Observe que a configuração regional não pode ser modificada após a criação de uma instância.

48b67416982fa152.png

Depois de criar a instância, criaremos um banco de dados nas próximas etapas. Modifique main.tf com o seguinte conteúdo:

provider "google" {
  project = "PROJECT_ID"
}

resource "google_spanner_instance" "main" {
  config       = "regional-us-central1"
  display_name = "first-terraform-instance"
  num_nodes    = 3
}

resource "google_spanner_database" "database" {
  instance = google_spanner_instance.main.name
  name     = "my-first-database"
}

Novamente, use o seguinte comando para aplicar as alterações:

$ terraform apply
# ...
Apply complete! Resources: 0 added, 1 changed, 0 destroyed.

Após o sucesso, meu primeiro banco de dados estará disponível na instância:

9962a71c6b2a3aff.png

Conforme observado na seção anterior, nem todas as propriedades das instâncias são modificáveis. Mas você pode aumentar / diminuir o número de nós para ajustar os recursos usados ​​pela instância. A instância criada tinha 3 nós. Ao modificar o arquivo main.tf, vamos aumentar o número de nós para 5:

provider "google" {
  project = "PROJECT_ID"
}

resource "google_spanner_instance" "main" {
  config       = "regional-us-central1"
  display_name = "first-terraform-instance"
  num_nodes    = 5
}

resource "google_spanner_database" "database" {
  instance = google_spanner_instance.main.name
  name     = "my-first-database"
}

A próxima etapa é aplicar as alterações:

$ terraform apply
# ...
Apply complete! Resources: 0 added, 1 changed, 0 destroyed.

Uma vez bem-sucedida, a instância usará 5 nós.

Você pode excluir um banco de dados permanentemente quando não precisar mais dele. Simplesmente, remova o banco de dados de main.tf e aplique as alterações.

provider "google" {
  project = "PROJECT_ID"
}

resource "google_spanner_instance" "main" {
  config       = "regional-us-central1"
  display_name = "first-terraform-instance"
  num_nodes    = 5
}
$ terraform apply
# ...
Apply complete! Resources: 0 added, 0 changed, 1 destroyed.

Uma vez bem-sucedido, o banco de dados será excluído permanentemente.

Você pode excluir uma instância permanentemente quando não precisar mais dela. Simplesmente, remova a instância de main.tf e aplique as alterações.

provider "google" {
  project = "PROJECT_ID"
}
$ terraform apply
# ...
Apply complete! Resources: 0 added, 0 changed, 1 destroyed.

Uma vez bem-sucedido, a instância será excluída permanentemente.

Você criou, modificou e excluiu recursos do Cloud Spanner usando o Terraform.

O que cobrimos

  • Como usar o provedor Google Cloud Terraform.
  • Uso do Terraform para criar instâncias e bancos de dados do Cloud Spanner.
  • Uso do Terraform para modificar recursos do Cloud Spanner.
  • Uso do Terraform para excluir recursos do Cloud Spanner.

Saber mais