Cloud Spanner mit Terraform

1. Übersicht

Zuletzt aktualisiert: 23.07.2020

Was ist Cloud Spanner?

Google Cloud Spanner ist eine weltweit verteilte, ACID-konforme Datenbank, die Replikate, Fragmentierung und Transaktionsverarbeitung automatisch verarbeitet. Dadurch können Sie schneller skalieren und so jedem Nutzungsmuster gerecht werden und den Erfolg Ihrer Produkte gewährleisten.

Wichtige Funktionen

  • Relationale Datenbank, für Skalierung entwickelt: Alles, was Sie von einer relationalen Datenbank erwarten: Schemas, SQL-Abfragen und ACID-Transaktionen – unter schwierigen Bedingungen bewährt und global skalierbar.
  • Verfügbarkeit von 99,999 %:Cloud Spanner bietet branchenführende 99,999 % Verfügbarkeit für multiregionale Instanzen – dies bedeutet gegenüber 99,99 % zehnmal weniger Ausfallzeit. Außerdem bietet die Lösung eine transparente, synchrone Replikation über regionale und multiregionale Konfigurationen hinweg.
  • Automatische Fragmentierung:Cloud Spanner optimiert die Leistung durch automatische Fragmentierung der Daten auf der Grundlage von Anfragelast und Datengröße. Dadurch brauchen Sie sich weniger Gedanken über die Skalierung Ihrer Datenbank zu machen und können sich stattdessen auf das Wachstum Ihres Unternehmens konzentrieren.

Alle Funktionen ansehen

Lerninhalte

  • Verwendung des Terraform-Providers für Google Cloud
  • Cloud Spanner-Instanzen und ‑Datenbanken mit Terraform erstellen
  • Cloud Spanner-Ressourcen mit Terraform ändern.
  • Cloud Spanner-Ressourcen mit Terraform löschen

2. Einrichtung und Anforderungen

Umgebung zum selbstbestimmten 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 später in diesem Codelab als PROJECT_ID bezeichnet.

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

Dieses Codelab sollte Sie nicht mehr als ein paar Dollar kosten, aber es könnte mehr sein, wenn Sie sich für mehr Ressourcen entscheiden oder wenn Sie sie laufen lassen (siehe Abschnitt „Bereinigen“ am Ende dieses Dokuments).

Neuen Nutzern der Google Cloud Platform steht eine kostenlose Testversion mit einem Guthaben von 300$ zur Verfügung.

Authentifizierung

Falls noch nicht geschehen, installieren Sie das gcloud-Befehlszeilentool. Nach der Installation von gcloud aktivieren Sie die Standardanmeldedaten für Anwendungen, indem Sie den folgenden Befehl in Ihrem Terminal ausführen:

$ gcloud auth application-default login

Terraform

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

3. Google Cloud Terraform Provider

Der Google Cloud Terraform Provider bietet vier Cloud Spanner-Ressourcen:

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“ und dem 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 weiteren Verlauf dieses Codelabs werden wir diese Datei ändern und die Änderungen anwenden.

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 anzuwenden:

$ 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, können Sie die Instanz in der Google Cloud Console sehen. Beachten Sie, dass die regionale Konfiguration nach der Erstellung einer Instanz nicht mehr geändert werden kann.

48b67416982fa152.png

Nachdem Sie die Instanz erstellt haben, erstellen Sie im nächsten Schritt eine Datenbank. Ändern Sie „main.tf“ mit dem folgenden 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"
}

Wenden Sie die Änderungen wieder mit dem folgenden Befehl an:

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

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

9962a71c6b2a3aff.png

5. Instanz bearbeiten

Wie bereits erwähnt, können nicht alle Attribute der Instanzen geändert werden. Sie können die Anzahl der Knoten jedoch erhöhen oder verringern, um die von der Instanz verwendeten Ressourcen anzupassen. Die erstellte Instanz hatte drei Knoten. Wir ändern die Datei „main.tf“, um die Anzahl der Knoten auf 5 zu erhöhen:

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 werden die Änderungen angewendet:

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

Nach erfolgreicher Ausführung verwendet die Instanz fünf Knoten.

6. Datenbank löschen

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

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.

Nach erfolgreichem Abschluss wird die Datenbank dauerhaft gelöscht.

7. Instanz löschen

Sie können eine Instanz dauerhaft löschen, wenn Sie sie nicht mehr benötigen. Entfernen Sie die Instanz einfach aus main.tf und wenden Sie die Änderungen an.

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 mit Terraform erstellt, geändert und gelöscht.

Behandelte Themen

  • Verwendung des Google Cloud Terraform-Anbieters
  • Cloud Spanner-Instanzen und ‑Datenbanken mit Terraform erstellen
  • Cloud Spanner-Ressourcen mit Terraform ändern.
  • Cloud Spanner-Ressourcen mit Terraform löschen

Weitere Informationen