Freigegebene VPC-Netzwerke verwenden

Diese Seite gilt für Apigee, aber nicht für Apigee Hybrid.

Apigee Edge-Dokumentation aufrufen

In diesem Dokument wird erläutert, wie Sie den Host einer freigegebenen Virtual Private Cloud (VPC) konfigurieren sowie separate Apigee- und Backend-Zieldienstprojekte an diesen anhängen. Mithilfe von freigegebenen VPC-Netzwerken lässt sich eine zentral gesteuerte Netzwerkinfrastruktur mit Google Cloud implementieren. Sie können mit einem einzelnen VPC-Netzwerk in einem Hostprojekt Ressourcen aus mehreren Dienstprojekten verbinden.

Vorteile einer freigegebenen VPC

Die Apigee-Laufzeit, die in einer von Google verwalteten VPC ausgeführt wird, wird mit Ihrer VPC verbunden. In dieser Topologie kann der Endpunkt der Apigee-Laufzeit mit Ihrem VPC-Netzwerk kommunizieren, wie im folgenden Diagramm dargestellt:

Freigegebene VPC mit internen Back-Ends in der VPC eines anderen Projekts

Siehe auch Apigee-Architektur – Übersicht.

In vielen Szenarien ist die oben beschriebene Topologie zu schlicht, da das VPC-Netzwerk Teil eines einzelnen Google Cloud-Projekts ist. Viele Organisationen wollen aber Best Practices für Ressourcenhierarchien beachten und ihre Infrastruktur in verschiedene Projekte aufteilen. Stellen Sie sich eine Netzwerktopologie vor, bei der das Apigee-Mandantenprojekt wie zuvor mit einem VPC-Netzwerk verbunden ist, aber interne Back-Ends in der VPC eines anderen Projekts nutzt. Dieses Diagramm zeigt einen solchen Fall:

Freigegebene VPC mit internen Back-Ends in der VPC eines anderen Projekts

Wenn Sie Ihre Apigee-VPC mit der Backend-VPC verbinden, wie im Diagramm dargestellt, kann das Backend von Ihrem Apigee-VPC-Netzwerk aus erreicht werden und umgekehrt, da das Netzwerk-Peering symmetrisch ist. Das Apigee-Mandantenprojekt hat jedoch nur die Möglichkeit, mit der Apigee-VPC zu kommunizieren, da das Peering wie in der VPC-Peering-Dokumentation beschrieben nicht transitiv ist. Damit dies trotzdem auch mit der Backend-VPC funktioniert, können Sie in Ihrer Apigee-VPC zusätzliche Proxys bereitstellen, um den Traffic über den Peering-Link an die Backend-VPC weiterzuleiten. Dieser Ansatz erhöht aber den Betriebs- und Wartungsaufwand.

Eine freigegebene VPC bietet eine Lösung für das oben beschriebene Problem. Mit einer freigegebenen VPC können Sie eine Verbindung zwischen der Apigee-Laufzeit und Back-Ends in anderen Google Cloud-Projekten in derselben Organisation ohne zusätzliche Netzwerkkomponenten einrichten.

Freigegebene VPC mit Apigee konfigurieren

In diesem Abschnitt wird erläutert, wie Sie ein Apigee-VPC-Serviceprojekt an einen freigegebenen VPC-Host anhängen. Im Hostprojekt definierte Subnetze werden für die Serviceprojekte freigegeben. In einem späteren Abschnitt wird erläutert, wie Sie ein zweites Subnetz für Back-End-Dienste erstellen, die in einem zweiten VPC-Serviceprojekt bereitgestellt werden. Das folgende Diagramm zeigt die resultierende Architektur:

Architektur einer freigegebenen VPC: Übersicht

Apigee bietet ein Bereitstellungsskript, um das Erstellen der erforderlichen Topologie zu vereinfachen. Mit den Schritten in diesem Abschnitt können Sie das Bereitstellungsskript herunterladen und damit Apigee mit einer freigegebenen VPC einrichten.

Vorbereitung

  1. Gehen Sie die in Freigegebenen VPC: Übersicht präsentierten Konzepte nochmal durch. Es ist wichtig, die Konzepte Hostprojekt und Serviceprojekt zu verstehen.
  2. Erstellen Sie ein neues Google Cloud-Projekt, das Sie für eine freigegebene VPC konfigurieren. Dieses Projekt ist das Hostprojekt. Weitere Informationen finden Sie unter Projekte erstellen und verwalten.
  3. Führen Sie die Schritte unter Freigegebene VPC bereitstellen aus, um das Projekt für die freigegebene VPC bereitzustellen. Sie müssen ein Organisationsadministrator sein oder entsprechende IAM-Rollen (Identity and Access Management) haben, um das Hostprojekt für die freigegebene VPC zu aktivieren.
  4. Erstellen Sie ein zweites Google Cloud-Projekt. Dieses Projekt ist ein Serviceprojekt. Sie werden es später an das Hostprojekt anhängen.

Laden Sie das Skript herunter

Apigee bietet ein Bereitstellungsskript, um das Erstellen der erforderlichen Topologie zu vereinfachen. Sie müssen das Skript aus GitHub abrufen:

  1. Klonen Sie das GitHub-Projekt, das das Skript enthält:
    git clone https://github.com/apigee/devrel.git
  2. Wechseln Sie im Projekt zu folgendem Verzeichnis:
    cd devrel/tools/apigee-x-trial-provision
  3. Legen Sie die folgenden Umgebungsvariablen fest:
    export HOST_PROJECT=HOST_PROJECT_ID
    export SERVICE_PROJECT=SERVICE_PROJECT_ID

    Wobei:

    • HOST_PROJECT_ID ist die Projekt-ID des freigegebenen VPC-Hostprojekts, das Sie als Teil der Voraussetzungen erstellt haben.
    • SERVICE_PROJECT_ID ist die Projekt-ID des Google Cloud-Serviceprojekts, das Sie als Teil der Voraussetzungen erstellt haben.

Hostprojekt konfigurieren

  1. Legen Sie die folgenden Umgebungsvariablen fest:
  2. export NETWORK=YOUR_SHARED_VPC
    export SUBNET=YOUR_SHARED_SUBNET
    export PEERING_CIDR=CIDR_BLOCK

    Dabei gilt:

    • YOUR_SHARED_VPC ist der Name Ihres freigegebenen VPC-Netzwerks.
    • YOUR_SHARED_SUBNET ist der Name Ihres freigegebenen VPC-Subnetzes.
    • CIDR_BLOCK ist der CIDR-Block für die Apigee-VPC. Beispiel: 10.111.0.0/23
  3. Führen Sie das Skript mit folgenden Optionen aus, um das VPC-Peering und die Firewall von Apigee zu konfigurieren:
    ./apigee-x-trial-provision.sh \
        -p $HOST_PROJECT --shared-vpc-host-config --peering-cidr $PEERING_CIDR

    Das Skript konfiguriert das Hostprojekt. Ihre Ausgabe wird in etwa so aussehen, wobei NETWORK und SUBNET die vollständig qualifizierten Pfade unter dem Hostprojekt darstellen:

    export NETWORK=projects/$HOST_PROJECT/global/networks/$NETWORK
    export SUBNET=projects/$HOST_PROJECT/regions/us-west1/subnetworks/$SUBNET
  4. Exportieren Sie die Variablen, die in der Ausgabe zurückgegeben wurden.

Serviceprojekt konfigurieren

In diesem Schritt konfigurieren Sie das Serviceprojekt. Sobald das Skript fertig ist, wird ein Beispiel-API-Proxy in Ihrer Apigee-Umgebung erstellt und bereitgestellt, mit dem Sie die Bereitstellung testen können.

  1. Führen Sie das Skript apigee-x-trial-provision.sh ein zweites Mal aus, um dem Serviceprojekt die Einstellungen für das freigegebene Netzwerk zu übergeben:
    ./apigee-x-trial-provision.sh \
        -p $SERVICE_PROJECT

    Mit dem Skript wird ein Beispiel-Proxy in Ihrer Apigee-Umgebung erstellt und ein curl-Befehl an STDOUT ausgegeben, mit dem Sie die Bereitstellung testen können.

  2. Rufen Sie den Test-API-Proxy auf. Beispiel:
    curl -v https://10-111-111-111.nip.io/hello-world

Weiteres Serviceprojekt für Back-End-Dienste konfigurieren

Es hat sich bewährt, die Google Cloud-Infrastruktur in mehrere Projekte zu unterteilen. Siehe Ressourcenhierarchie für Ihre Google Cloud-Landing-Zone festlegen. In diesem Abschnitt wird erläutert, wie Sie einen Backend-Dienst in einem separaten Dienstprojekt bereitstellen und an den Host der freigegebenen VPC anhängen. Apigee kann den Backend-Dienst als API-Proxy-Ziel nutzen, da sowohl das Apigee-Dienstprojekt als auch das Backend-Dienstprojekt an den Host der freigegebenen VPC angehängt sind.

Vorbereitung

Dazu gehen wir davon aus, dass Sie Ihre freigegebene VPC bereits eingerichtet und für das Back-End-Serviceprojekt freigegeben haben, wie unter Freigegebene VPC einrichten beschrieben.

Serviceprojekt konfigurieren

In diesem Abschnitt testen Sie einen Back-End-Dienst in einem anderen freigegebenen VPC-Subnetz, erstellen ein zweites Subnetz im Hostprojekt und verwenden dessen private RFC1918-IP-Adresse als Ziel-URL für Ihre Apigee API-Proxys.

  1. Führen Sie in Ihrem Back-End-Serviceprojekt folgenden Befehl aus, um alle verfügbaren freigegebenen Subnetze anzuzeigen:
    gcloud compute networks subnets list-usable --project $HOST_PROJECT  --format yaml
    

    Beispielausgabe:

    ipCidrRange: 10.0.0.0/20
    network: https://www.googleapis.com/compute/v1/projects/my-svpc-hub/global/networks/hub-vpc
    subnetwork: https://www.googleapis.com/compute/v1/projects/my-svpc-hub/regions/europe-west1/subnetworks/sub1
    
  2. Erstellen Sie folgende Umgebungsvariablen:
    BACKEND_SERVICE_PROJECT=PROJECT_ID
    SHARED_VPC_SUBNET=SUBNET
    

    Wobei:

    • PROJECT_ID der Name des Serviceprojekts ist, das Sie für die Back-End-Dienste erstellt haben.
    • SUBNET eines der Subnetzwerke ist, die vom vorherigen Befehl ausgegeben wurden.
  3. Verwenden Sie folgenden Befehl, um zu Testzwecken einen Back-End-httpbin-Dienst zu erstellen:
    gcloud compute --project=$BACKEND_SERVICE_PROJECT instances create-with-container httpbin \
      --machine-type=e2-small --subnet=$SHARED_VPC_SUBNET \
      --image-project=cos-cloud --image-family=cos-stable --boot-disk-size=10GB \
      --container-image=kennethreitz/httpbin --container-restart-policy=always --tags http-server
    
  4. Erstellen Sie einen Apigee API-Proxy und stellen Sie ihn bereit, indem Sie die Schritte unter API-Proxy erstellen ausführen.
  5. Rufen Sie die interne IP-Adresse der virtuellen Maschine (VM) ab, auf der der Zieldienst ausgeführt wird. Sie verwenden diese IP-Adresse im nächsten Schritt, um den Test-API-Proxy aufzurufen:
    gcloud compute instances list --filter=name=httpbin
  6. Rufen Sie den Proxy auf, um die Konfiguration zu testen. Verwenden Sie dazu die interne IP-Adresse der VM, die Sie im vorherigen Schritt abgerufen haben. Im folgenden Beispiel wird davon ausgegangen, dass Sie den Proxy-Basispfad /myproxy genannt haben. Beispiel:
    curl -v https://INTERNAL_IP/myproxy

    Dieser API-Aufruf gibt Hello, Guest! zurück.