Cloud Spanner mit Terraform

1. Übersicht

Zuletzt aktualisiert:23. Juli 2020

Was ist Cloud Spanner?

Google Cloud Spanner ist eine weltweit verteilte, ACID-konforme Datenbank, die Replikate, Fragmentierung und Transaktionsverarbeitung automatisch verarbeitet. So können Sie schnell skalieren, um jedem Nutzungsmuster gerecht zu werden und den Erfolg Ihrer Produkte sicherzustellen.

Wichtige Funktionen

  • Relationale Datenbank, entwickelt für Skalierung: Alles, was Sie von einer relationalen Datenbank erwarten – Schemas, SQL-Abfragen und ACID-Transaktionen – unter schwierigen Bedingungen getestet und global skalierbar.
  • Verfügbarkeit von 99,999%:Cloud Spanner bietet eine branchenführende Verfügbarkeit von 99,999% für multiregionale Instanzen – das ist zehnmal weniger Ausfallzeiten als bei einer Neunenzeit – und bietet eine transparente, synchrone Replikation über regionale und multiregionale Konfigurationen hinweg.
  • Automatische Fragmentierung: Cloud Spanner optimiert die Leistung, indem die Daten automatisch basierend auf der Anfragelast und der Größe der Daten fragmentiert werden. Dadurch müssen Sie sich weniger Gedanken über die Skalierung Ihrer Datenbank machen und können sich stattdessen auf die Skalierung Ihres Unternehmens konzentrieren.

Alle Funktionen ansehen

Lerninhalte

  • Terraform-Anbieter von Google Cloud verwenden
  • Mit Terraform Cloud Spanner-Instanzen und -Datenbanken erstellen
  • Cloud Spanner-Ressourcen mit Terraform ändern
  • Cloud Spanner-Ressourcen mit Terraform löschen

2. Einrichtung und Anforderungen

Umgebung für das selbstbestimmte Lernen einrichten

Wenn Sie noch kein Google-Konto (Gmail oder Google Apps) haben, müssen Sie eines erstellen. Melden Sie sich in der Google Cloud Platform Console ( console.cloud.google.com) an und erstellen Sie ein neues Projekt:

50983ac3fdbbf8d0.png

ea581205026ca8e3.png

Notieren Sie sich die Projekt-ID, also den projektübergreifend nur einmal vorkommenden Namen eines Google Cloud-Projekts. Der oben angegebene Name ist bereits vergeben und kann leider nicht mehr verwendet werden. Sie wird in diesem Codelab später als PROJECT_ID bezeichnet.

Als Nächstes müssen Sie in der Cloud Console die Abrechnung aktivieren, um Google Cloud-Ressourcen nutzen zu können.

Dieses Codelab sollte nicht mehr als ein paar Euro kosten. Wenn Sie sich jedoch dazu entschließen, mehr Ressourcen zu verwenden oder diese weiter auszuführen (siehe Abschnitt „Bereinigen“ am Ende dieses Dokuments),

Neue Nutzer der Google Cloud Platform haben Anspruch auf eine kostenlose Testversion mit 300$Guthaben.

Authentifizierung

Installieren Sie das gcloud-Befehlszeilentool, falls noch nicht geschehen. Nach der Installation von gcloud aktivieren Sie die Standardanmeldedaten für Anwendungen. Führen Sie dazu den folgenden Befehl in Ihrem Terminal aus:

$ gcloud auth application-default login

Terraform

Wenn Sie Terraform noch nicht installiert haben, installieren Sie Terraform.

3. Google Cloud Terraform-Anbieter

Der Google Cloud Terraform-Anbieter stellt vier Cloud Spanner-Ressourcen zur Verfügung:

In diesem Codelab erstellen und verwalten wir Cloud Spanner-Instanzen und -Datenbanken.

Umgebung

Erstellen Sie in Ihrer Entwicklungsumgebung ein neues Verzeichnis für Ihre Terraform-Konfigurationsdateien.

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

Erstellen Sie dann eine Datei mit dem Namen „main.tf“ durch den folgenden Inhalt und ersetzen Sie PROJECT_ID durch Ihre eigene Google Cloud-Projekt-ID:

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

Im restlichen Codelab ändern wir die Datei und wenden die Änderungen an.

4. Instanzen und Datenbanken erstellen

Ändern Sie die Datei "main.tf" mit dem folgenden Inhalt, um eine neue Cloud Spanner-Instanz hinzuzufügen:

provider "google" {
  project = "PROJECT_ID"
}

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

Führen Sie den folgenden Befehl aus, um die Änderungen zu übernehmen:

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

Nachdem die Änderungen angewendet wurden, wird die Instanz in der Google Cloud Console angezeigt. Beachten Sie, dass die regionale Konfiguration nach dem Erstellen einer Instanz nicht mehr geändert werden kann.

48b67416982fa152.png

Nachdem Sie die Instanz erstellt haben, erstellen wir in den nächsten Schritten eine Datenbank. Ändern Sie "main.tf" mit folgendem Inhalt:

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

Verwenden Sie wieder den folgenden Befehl, um die Änderungen zu übernehmen:

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

Bei Erfolg ist „my-first-database“ unter der folgenden Instanz verfügbar:

9962a71c6b2a3aff.png

5. Instanz bearbeiten

Wie im vorherigen Abschnitt erwähnt, können nicht alle Eigenschaften der Instanzen geändert werden. Sie können jedoch die Anzahl der Knoten erhöhen oder verringern, um die von der Instanz verwendeten Ressourcen anzupassen. Die erstellte Instanz hatte 3 Knoten. Durch Ändern der Datei "main.tf" erhöhen wir die Anzahl der Knoten auf 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"
}

Im nächsten Schritt übernehmen Sie die Änderungen:

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

Wenn der Vorgang erfolgreich war, verwendet die Instanz 5 Knoten.

6. Datenbank löschen

Sie können eine Datenbank endgültig löschen, wenn Sie sie nicht mehr benötigen. Entfernen Sie einfach die Datenbank aus "main.tf" und übernehmen Sie die Änderungen.

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.

Im Anschluss wird die Datenbank endgültig gelöscht.

7. Instanz löschen

Sie können eine Instanz endgültig löschen, wenn Sie sie nicht mehr benötigen. Entfernen Sie die Instanz einfach aus "main.tf" und übernehmen Sie die Änderungen.

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

Nach erfolgreicher Ausführung wird die Instanz endgültig gelöscht.

8. Glückwunsch!

Sie haben Cloud Spanner-Ressourcen mithilfe von Terraform erstellt, geändert und gelöscht.

Behandelte Themen

  • Google Cloud Terraform-Anbieter verwenden
  • Mit Terraform Cloud Spanner-Instanzen und -Datenbanken erstellen
  • Cloud Spanner-Ressourcen mit Terraform ändern
  • Cloud Spanner-Ressourcen mit Terraform löschen

Weitere Informationen