Cloud Spanner con Terraform

1. Panoramica

Ultimo aggiornamento: 23/07/2020

Che cos'è Cloud Spanner?

Google Cloud Spanner è un database distribuito a livello globale e conforme ad ACID che gestisce automaticamente le repliche, il partizionamento orizzontale e l'elaborazione delle transazioni, così puoi scalare rapidamente per soddisfare qualsiasi modello di utilizzo e garantire il successo dei tuoi prodotti.

Funzionalità principali

  • Database relazionale, pensato per la scalabilità:tutto quello che ti aspetti da un database relazionale, come schemi, query SQL e transazioni ACID, già testato sul campo e pronto per scalare a livello globale.
  • Disponibilità del 99,999%:Cloud Spanner offre una disponibilità leader di settore del 99,999% per le istanze su più regioni, con tempi di inattività 10 volte inferiori rispetto alla disponibilità "a quattro nove", e fornisce una replica trasparente e sincrona in tutte le configurazioni a una o più regioni.
  • Partizionamento orizzontale automatico: Cloud Spanner ottimizza le prestazioni partizionando orizzontalmente in automatico i dati in base al carico di richieste e alle dimensioni dei dati. Di conseguenza, puoi dedicare meno tempo alla scalabilità del tuo database e concentrarti invece sulla scalabilità del tuo business.

Visualizza tutte le funzionalità

Obiettivi didattici

  • Come utilizzare il provider Terraform di Google Cloud.
  • Utilizzo di Terraform per creare istanze e database Cloud Spanner.
  • Utilizzo di Terraform per modificare le risorse Cloud Spanner.
  • Utilizzo di Terraform per eliminare le risorse Cloud Spanner.

2. Configurazione e requisiti

Configurazione dell'ambiente autonomo

Se non hai ancora un Account Google (Gmail o Google Apps), devi crearne uno. Accedi alla console di Google Cloud ( console.cloud.google.com) e crea un nuovo progetto:

50983ac3fdbbf8d0.png

ea581205026ca8e3.png

Ricorda l'ID progetto, un nome univoco tra tutti i progetti Google Cloud (il nome sopra è già stato utilizzato e non funzionerà per te, mi dispiace). In questo codelab verrà indicato come PROJECT_ID.

Successivamente, dovrai abilitare la fatturazione nella console Cloud per utilizzare le risorse Google Cloud.

L'esecuzione di questo codelab non dovrebbe costarti più di qualche dollaro, ma potrebbe essere più cara se decidi di utilizzare più risorse o se le lasci in esecuzione (vedi la sezione "Pulizia" alla fine di questo documento).

I nuovi utenti di Google Cloud Platform possono beneficiare di una prova senza costi di 300$.

Autenticazione

Se non l'hai ancora fatto, installa lo strumento a riga di comando gcloud. Una volta installato gcloud, attiva le credenziali predefinite dell'applicazione eseguendo questo comando nel terminale:

$ gcloud auth application-default login

Terraform

Se non hai installato Terraform in precedenza, installalo.

3. Provider Google Terraform

Il provider Terraform per Google Cloud fornisce quattro risorse Cloud Spanner:

In questo codelab, creeremo e gestiremo istanze e database Cloud Spanner.

Ambiente

Nel tuo ambiente di sviluppo, crea una nuova directory per i file di configurazione Terraform.

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

Poi, crea un file denominato "main.tf" con il seguente contenuto e sostituisci PROJECT_ID con il tuo ID progetto Google Cloud:

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

Nel resto di questo codelab, modificheremo questo file e applicheremo le modifiche.

4. Creazione di istanze e database

Modifica il file main.tf con i seguenti contenuti per aggiungere una nuova istanza Cloud Spanner:

provider "google" {
  project = "PROJECT_ID"
}

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

Esegui il comando seguente per applicare le modifiche:

$ 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.

Una volta applicate le modifiche, potrai visualizzare l'istanza in Google Cloud Console. Tieni presente che la configurazione regionale non può essere modificata dopo la creazione di un'istanza.

48b67416982fa152.png

Dopo aver creato l'istanza, nei passaggi successivi creeremo un database. Modifica main.tf con i seguenti contenuti:

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"
}

Ancora una volta, utilizza il comando seguente per applicare le modifiche:

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

In caso di esito positivo, my-first-database sarà disponibile nell'istanza:

9962a71c6b2a3aff.png

5. Modifica di un'istanza

Come indicato nella sezione precedente, non tutte le proprietà delle istanze sono modificabili. Tuttavia, puoi aumentare/diminuire il numero di nodi per modificare le risorse utilizzate dall'istanza. L'istanza creata aveva 3 nodi. Modificando il file main.tf, aumenteremo il numero di nodi a 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"
}

Il passaggio successivo consiste nell'applicare le modifiche:

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

Una volta completata l'operazione, l'istanza utilizzerà 5 nodi.

6. Eliminazione di un database

Puoi eliminare un database in modo definitivo quando non ti serve più. Rimuovi semplicemente il database da main.tf e applica le modifiche.

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.

Se l'operazione va a buon fine, il database viene eliminato definitivamente.

7. Eliminare un'istanza

Puoi eliminare un'istanza in modo permanente quando non ti serve più. Rimuovi l'istanza da main.tf e applica le modifiche.

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

Una volta eseguita l'operazione, l'istanza verrà eliminata definitivamente.

8. Complimenti!

Hai creato, modificato ed eliminato risorse Cloud Spanner utilizzando Terraform.

Argomenti trattati

  • Come utilizzare il provider Terraform di Google Cloud.
  • Utilizzo di Terraform per creare istanze e database Cloud Spanner.
  • Utilizzo di Terraform per modificare le risorse Cloud Spanner.
  • Utilizzo di Terraform per eliminare le risorse Cloud Spanner.

Scopri di più