Das folgende Diagramm zeigt die Architektur, die Sie bereitstellen. Es besteht aus zwei Spoke-VPC-Netzwerken, die jeweils über einen IPSec-VPN-Tunnel mit einem zentralen Hub-VPC-Netzwerk verbunden sind.
Weitere Informationen zu dieser Architektur und anderen Designalternativen finden Sie unter Hub-and-Spoke-Netzwerkarchitektur.
Ziele
Stellen Sie die folgenden Ressourcen in Google Cloud mithilfe einer von Google bereitgestellten Terraform-Vorlage bereit:- Drei VPC-Netzwerke, eines als Hub und die anderen zwei als Spokes.
- Zwei Subnetze in jedem der VPC-Netzwerke, eines in jeder der beiden von Ihnen angegebenen Regionen.
- Eine Reihe von Firewallregeln für jedes VPC-Netzwerk.
- Ein Cloud NAT-Gateway für jedes Spoke-VPC-Netzwerk.
- Eine Compute Engine-Testinstanz für jedes Spoke-VPC-Netzwerk.
- Ein Dienstkonto für die Compute Engine-Instanzen.
- Ein dynamisches Cloud VPN-Gateway in jedem der Spoke-VPC-Netzwerke mit jeweils einem einzelnen Tunnel.
- Zwei dynamische Cloud VPN-Gateways und -Tunnel im Hub-VPC-Netzwerk, eines bzw. einen für jeden Spoke.
- Eine private Cloud DNS-Zone im Hub-VPC-Netzwerk, die per Peering mit einer privaten Cloud DNS-Zone in jedem Spoke-VPC-Netzwerk verbunden ist.
Kosten
In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:
Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen.
Nach Abschluss der in diesem Dokument beschriebenen Aufgaben können Sie weitere Kosten vermeiden, indem Sie die erstellten Ressourcen löschen. Weitere Informationen finden Sie unter Bereinigen.
Hinweis
Entscheiden Sie, ob Sie die Ressourcen in einem vorhandenen Projekt oder in einem neuen Projekt bereitstellen möchten, das Terraform für Sie erstellt.
Lassen Sie sich die erforderlichen Berechtigungen anzeigen.
Zum Erstellen und Verwalten von Ressourcen mithilfe der bereitgestellten Terraform-Vorlagen benötigt das Google-Konto oder Dienstkonto die folgenden IAM-Rollen (Identity and Access Management):
- Compute-Administrator (
roles/compute.admin
) - Dienstkontoadministrator (
roles/iam.serviceAccountAdmin
) - Projekt-IAM-Administrator (
roles/resourcemanager.projectIamAdmin
) - Service Usage-Administrator (
roles/serviceusage.serviceUsageAdmin
) - DNS-Administrator (
roles/dns.admin
) - Projektersteller (
roles/resourcemanager.projectCreator
) (um die Ressourcen in einem neuen Projekt bereitzustellen)
Wenn Sie keine erforderliche Berechtigung haben oder sich nicht sicher sind, wenden Sie sich an den Administrator Ihrer Organisation.
- Compute-Administrator (
(Optional) Überspringen Sie diesen Schritt, wenn Sie die Ressourcen in einem neuen Projekt bereitstellen möchten, das von Terraform erstellt wird.
So verwenden Sie ein vorhandenes Projekt oder ein von Ihnen erstelltes Projekt:
-
Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.
-
Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.
-
Compute Engine, Cloud DNS, Resource Manager, Service Usage, and IAM APIs aktivieren.
-
Umgebung vorbereiten
Sie können diese Anleitung mit Cloud Shell oder Ihrem lokalen Host abschließen. Cloud Shell ist in Terraform vorinstalliert und für die Authentifizierung bei Google Cloud eingerichtet.
So verwenden Sie Cloud Shell:
So verwenden Sie Ihren lokalen Host
Gehen Sie folgendermaßen vor:
-
Installieren Sie Terraform Version 0.13.0 oder höher.
-
Laden Sie die Terraform-Beispielvorlagen aus Terraform-Beispiele und -Module für Google Cloud herunter.
-
Richten Sie die Authentifizierung ein:
-
Erstellen Sie das Dienstkonto:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Ersetzen Sie
SERVICE_ACCOUNT_NAME
mit einem Namen für das Dienstkonto. -
Weisen Sie dem Dienstkonto die IAM-Rolle
roles/owner
zu.gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=roles/owner
Dabei gilt:
SERVICE_ACCOUNT_NAME
: der Name des DienstkontosPROJECT_ID
: die Projekt-ID, unter der Sie das Dienstkonto erstellt haben
-
Erstellen Sie die Schlüsseldatei:
gcloud iam service-accounts keys create FILE_NAME.json --iam-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Dabei gilt:
FILE_NAME
: ein Name für die SchlüsseldateiSERVICE_ACCOUNT_NAME
: der Name des DienstkontosPROJECT_ID
: die Projekt-ID, unter der Sie das Dienstkonto erstellt haben
-
-
Geben Sie die Anmeldedaten zur Authentifizierung für Ihren Anwendungscode durch Festlegung der Umgebungsvariable
GOOGLE_APPLICATION_CREDENTIALS
an. Diese Variable gilt nur für Ihre aktuelle Shellsitzung. Wenn Sie möchten, dass die Variable für zukünftige Shell-Sitzungen gilt, legen Sie die Variable in Ihrer Shell-Startdatei fest, z. B. in der Datei~/.bashrc
oder~/.profile
.Linux oder macOS
export GOOGLE_APPLICATION_CREDENTIALS="
KEY_PATH
"Geben Sie für
KEY_PATH
den Dateipfad der JSON-Datei an, die Ihre Anmeldedaten enthält.Beispiel:
export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account-file.json"
Windows
Für PowerShell:
$env:GOOGLE_APPLICATION_CREDENTIALS="
KEY_PATH
"Geben Sie für
KEY_PATH
den Dateipfad der JSON-Datei an, die Ihre Anmeldedaten enthält.Beispiel:
$env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\service-account-file.json"
Für Eingabeaufforderung:
set GOOGLE_APPLICATION_CREDENTIALS=
KEY_PATH
Geben Sie für
KEY_PATH
den Dateipfad der JSON-Datei an, die Ihre Anmeldedaten enthält.
Terraform-Variablen konfigurieren
Der heruntergeladene Terraform-Code enthält Variablen, mit denen Sie die Bereitstellung entsprechend Ihren Anforderungen anpassen können. Beispielsweise können Sie die Subnetz-CIDR-Bereiche anpassen und das Projekt angeben, in dem die Ressourcen bereitgestellt werden sollen.
Wechseln Sie im Code, den Sie heruntergeladen haben (auf Ihrem lokalen Host oder in Cloud Shell), zum Unterverzeichnis
blueprints/networking/hub-and-spoke-peering
.cd blueprints/networking/hub-and-spoke-vpn
Öffnen Sie die Datei
variables.tf
.Die Eingabevariablen für die Terraform-Konfiguration werden in dieser Datei deklariert. Einige Variablen haben einen
default
-Wert.Bestimmen Sie die Variablen, denen Sie Werte zuweisen möchten:
- Variablen ohne Standardwert (z. B.
project_id
) Variablen mit einem Standardwert, den Sie möglicherweise ändern müssen.
Beispiel: In
ip_ranges
gibt es standardmäßige CIDR-Bereiche. Sie müssen jedoch unter Umständen verschiedene Bereiche für Ihre Bereitstellung verwenden.
Lesen Sie für jede identifizierte Variable deren
description
und notieren Sie sich ihrentype
.- Variablen ohne Standardwert (z. B.
Erstellen Sie eine Textdatei mit dem Namen
terraform.tfvars
.Weisen Sie in der Datei
terraform.tfvars
den zuvor identifizierten Variablen entsprechende Werte zu.Beispiel:
ip_ranges = { hub-a = "10.0.0.0/24" hub-b = "10.0.8.0/24" spoke-1-a = "10.0.16.0/24" spoke-1-b = "10.0.24.0/24" spoke-2-a = "10.0.32.0/24" spoke-2-b = "10.0.40.0/24" } project_id = "my-project" regions = { a = "us-central1" b = "us-west1" }
Initialisieren Sie Terraform:
terraform init
Warten Sie, bis folgende Meldung angezeigt wird:
Terraform has been successfully initialized!
Prüfen Sie, ob die Konfiguration Fehler enthält:
terraform validate
Wenn der Befehl einen Fehler zurückgibt, nehmen Sie die erforderlichen Korrekturen in der Konfiguration vor und führen Sie
terraform validate
noch einmal aus.Wiederholen Sie diesen Schritt, bis der Befehl die folgende Meldung zurückgibt:
Success! The configuration is valid.
Sehen Sie sich die in der Konfiguration definierten Ressourcen an:
terraform plan
In der Ausgabe werden die Ressourcen aufgeführt, die Terraform beim Anwenden der Konfiguration bereitstellt.
Wenn Sie Änderungen vornehmen möchten, bearbeiten Sie die Konfiguration und führen Sie dann
terraform validate
undterraform plan
noch einmal aus.
Bereitstellung von Ressourcen
Wenn keine weiteren Änderungen an der Konfiguration erforderlich sind, stellen Sie die Ressourcen bereit:
Führen Sie dazu diesen Befehl aus:
terraform apply
Terraform zeigt eine Liste der Ressourcen an, die erstellt werden.
Wenn Sie aufgefordert werden, die Aktionen auszuführen, geben Sie
yes
ein.Wenn Terraform eine Fehlermeldung anzeigt, dass eine oder mehrere APIs nicht aktiviert sind, verwenden Sie jeden in der Meldung angezeigten Link, um die erforderlichen APIs zu aktivieren.
In Terraform werden Nachrichten angezeigt, die den Fortschritt der Bereitstellung anzeigen. Nachdem alle Ressourcen erstellt wurden, zeigt Terraform die folgende Nachricht an:
Apply complete!
Sie haben jetzt ein Hub-and-Spoke-Netzwerk in Google Cloud bereitgestellt.
Ressourcen hinzufügen, ändern oder entfernen
Zum Hinzufügen, Ändern oder Entfernen von Ressourcen bearbeiten Sie die Terraform-Konfiguration und führen dann die Befehle terraform validate
, terraform plan
und terraform apply
in dieser Reihenfolge aus.
Bereinigen
Damit Ihrem Google Cloud-Konto die in dieser Anleitung erstellten Ressourcen nicht in Rechnung gestellt werden, löschen Sie alle Ressourcen, die Sie nicht benötigen.Führen Sie dazu diesen Befehl aus:
terraform destroy
Terraform zeigt eine Liste der Ressourcen an, die gelöscht werden.
Wenn Sie aufgefordert werden, die Aktionen auszuführen, geben Sie
yes
ein.Terraform zeigt Nachrichten mit dem Fortschritt an. Nachdem alle Ressourcen gelöscht wurden, zeigt Terraform die folgende Meldung an:
Destroy complete!
Nächste Schritte
- Hub-and-Spoke-Netzwerk entwerfen.
- Eine sichere, End-to-End-Cloud Foundation aufbauen.
- Referenzarchitekturen, Diagramme und Best Practices zu Google Cloud kennenlernen. Weitere Informationen zu Cloud Architecture Center