Hub-and-Spoke-Netzwerk mit Cloud VPN bereitstellen

Last reviewed 2022-01-11 UTC

In dieser Anleitung wird gezeigt, wie Sie mithilfe von Cloud VPN ein Hub-and-Spoke-Netzwerk in Google Cloud einrichten.

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.

Hub-and-Spoke-Architektur mit Cloud VPN

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. Neuen Google Cloud-Nutzern steht möglicherweise eine kostenlose Testversion zur Verfügung.

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

  1. Entscheiden Sie, ob Sie die Ressourcen in einem vorhandenen Projekt oder in einem neuen Projekt bereitstellen möchten, das Terraform für Sie erstellt.

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

  3. (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:

    1. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

      Zur Projektauswahl

    2. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

    3. Compute Engine, Cloud DNS, Resource Manager, Service Usage, and IAM APIs aktivieren.

      Aktivieren Sie die APIs

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:

  • Laden Sie die Terraform-Beispielvorlagen in Cloud Shell herunter und öffnen Sie sie.

    In Cloud Shell öffnen

    Cloud Shell wird in einem separaten Browsertab gestartet und die Terraform-Beispielvorlagen werden in das Verzeichnis "$HOME/cloudshell_open" Ihrer Cloud Shell-Umgebung heruntergeladen.

So verwenden Sie Ihren lokalen Host

Gehen Sie folgendermaßen vor:

  1. Installieren Sie Terraform Version 0.13.0 oder höher.

  2. Laden Sie die Terraform-Beispielvorlagen aus Terraform-Beispiele und -Module für Google Cloud herunter.

  3. Richten Sie die Authentifizierung ein:

    1. Erstellen Sie das Dienstkonto:

      gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

      Ersetzen Sie SERVICE_ACCOUNT_NAME mit einem Namen für das Dienstkonto.

    2. 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 Dienstkontos
      • PROJECT_ID: die Projekt-ID, unter der Sie das Dienstkonto erstellt haben
    3. 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üsseldatei
      • SERVICE_ACCOUNT_NAME: der Name des Dienstkontos
      • PROJECT_ID: die Projekt-ID, unter der Sie das Dienstkonto erstellt haben
  4. 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.

  1. 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
    
  2. Öffnen Sie die Datei variables.tf.

    Die Eingabevariablen für die Terraform-Konfiguration werden in dieser Datei deklariert. Einige Variablen haben einen default-Wert.

  3. 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 ihren type.

  4. Erstellen Sie eine Textdatei mit dem Namen terraform.tfvars.

  5. 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"
    }
    
  6. Initialisieren Sie Terraform:

    terraform init
    

    Warten Sie, bis folgende Meldung angezeigt wird:

    Terraform has been successfully initialized!
    
  7. 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.
    
  8. 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 und terraform plan noch einmal aus.

Bereitstellung von Ressourcen

Wenn keine weiteren Änderungen an der Konfiguration erforderlich sind, stellen Sie die Ressourcen bereit:

  1. Führen Sie dazu diesen Befehl aus:

    terraform apply
    

    Terraform zeigt eine Liste der Ressourcen an, die erstellt werden.

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

  1. Führen Sie dazu diesen Befehl aus:

    terraform destroy
    

    Terraform zeigt eine Liste der Ressourcen an, die gelöscht werden.

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