Hub-and-Spoke-Netzwerk mit VPC-Netzwerk-Peering bereitstellen

Last reviewed 2022-01-11 UTC

In dieser Anleitung erfahren Sie, wie Sie ein Hub-and-Spoke-Netzwerk in Google Cloud einrichten, indem Sie die Netzwerk-Peering-Funktion von Virtual Private Cloud (VPC) verwenden. Das VPC-Netzwerk-Peering ermöglicht das Verbinden von VPC-Netzwerken, sodass Arbeitslasten in verschiedenen VPC-Netzwerken intern kommunizieren können. Der Traffic verbleibt im Google-Netzwerk und durchläuft nicht das öffentliche Internet.

Das folgende Diagramm zeigt die Architektur, die Sie bereitstellen. Sie besteht aus zwei Spoke-VPC-Netzwerken, die jeweils mit einem zentralen Hub-VPC-Netzwerk verbunden sind. Ein VPN-Tunnel zwischen einem der Spoke-VPC-Netzwerke und dem Hub-VPC-Netzwerk ermöglicht eine Verbindung zwischen den Spokes.

Hub-and-Spoke-Architektur mit VPC-Netzwerk-Peering

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.
  • Ein Subnetz in jedem der VPC-Netzwerke in einer von Ihnen angegebenen Region.
  • VPC-Netzwerk-Peering-Konfigurationen zwischen jedem Spoke-VPC-Netzwerk und dem Hub-VPC-Netzwerk
  • 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 VPC-Netzwerk.
  • Einen GKE-Testcluster (Google Kubernetes Engine) mit einem einzelnen Knotenpool im Spoke-2-VPC-Netzwerk.
  • Ein Dienstkonto für die Compute Engine-Instanzen.
  • Ein Dienstkonto für die GKE-Knoten.
  • Statische Cloud VPN-Gateways im Hub-VPC-Netzwerk und im Spoke-2-VPC-Netzwerk mit jeweils einem Tunnel.

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)
    • Kubernetes Engine-Administrator roles/container.admin
    • Dienstkontoadministrator (roles/iam.serviceAccountAdmin)
    • Projekt-IAM-Administrator (roles/resourcemanager.projectIamAdmin)
    • Service Usage-Administrator (roles/serviceusage.serviceUsageAdmin)
    • 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, GKE, IAM, Service Usage, and Resource Manager 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-peering
    
  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     = "10.0.0.0/24"
      spoke-1 = "10.0.24.0/24"
      spoke-2 = "10.0.48.0/24"
    }
    
    prefix = "dev"
    
    project_id = "my-project"
    
    region = "us-central1"
    
  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