Southbound-Netzwerkmuster

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

Apigee Edge-Dokumentation aufrufen

In diesem Dokument wird erläutert, wie Sie mit Private Service Connect (PSC) eine private Verbindung zwischen Apigee und Backend-Zieldiensten herstellen. Standardmäßig können Sie global auf Zielendpunkte zugreifen. Beachten Sie, dass API-Proxy-Traffic zwischen Apigee und einem Backend-Zieldienst als "Southbound"-Traffic bezeichnet wird.

Die in diesem Dokument beschriebenen Southbound-Netzwerkkonfigurationsschritte gelten sowohl für VPC-Peering-Instanzen als auch für Nicht-VPC-Peering-Instanzen. Beachten Sie jedoch, dass das private DNS-Peering nur für VPC-Peering-Apigee-Instanzen unterstützt wird.

Private Verbindung von Apigee zu Backend-Zielen herstellen

Um Apigee privat mit einem Backend-Ziel zu verbinden, müssen Sie zwei Entitäten erstellen: einen Dienstanhang in dem VPC-Netzwerk, in dem das Ziel bereitgestellt wird, und einen Endpunktanhang in der Apigee-VPC. Mit diesen beiden Entitäten kann Apigee eine Verbindung zum Zieldienst herstellen.

Abbildung 1 zeigt die Apigee-Netzwerkarchitektur, die den globalen Zugriff für Southbound-Verbindungen in mehreren Regionen unterstützt:

Abbildung 1: Apigee-Southbound-Netzwerkarchitektur.

Beschränkungen

In einer Apigee-Organisation ist für einen Dienstanhang immer ein Endpunktanhang zulässig. Angenommen, Sie haben zehn Dienstanhänge, die Zieldienste verfügbar machen. Sie können dann in Ihrer Apigee-Organisation zehn Endpunktanhänge erstellen, also einen für jeden Dienstanhang.

Beispiel: Zieldienst für Apigee verfügbar machen

In diesem Beispiel wird gezeigt, wie Apigee mithilfe von PSC mit einem Zieldienst kommuniziert, der in einem VPC-Netzwerk ausgeführt wird, das nicht per Peering direkt mit Apigee verbunden ist. In den Schritten dieses Beispiels werden gcloud- und Apigee API-Aufrufe verwendet, um einen Dienstanhang im VPC-Netzwerk, in dem das Ziel bereitgestellt wird, und einen Endpunktanhang in der Apigee-VPC einzurichten und zu konfigurieren.

Beispielszenario

In diesem Beispiel wird ein Apache-Webserver in einer verwalteten Instanzgruppe (MIG) bereitgestellt, die in Ihrer VPC ausgeführt wird. Damit wir in diesem Kontext mit Apigee kommunizieren können, stellen wir die Dienste über ein Ingress-Gateway bereit.

Load-Balancer einrichten

Richten Sie in Ihrer VPC einen Load-Balancer ein, in dem sich die von Ihnen bereitgestellten Mikrodienste befinden:

  1. Erstellen Sie folgende Umgebungsvariablen:
    export PROJECT_ID=YOUR_PROJECT_ID
    export IMAGE_PROJECT=debian-cloud
    export IMAGE_FAMILY=debian-12
    export BACKEND=foo
    export REGION=us-west1
    export ZONE=us-west1-a
    export NETWORK=default
    export SUBNET_NAME=default
  2. Erstellen Sie eine Instanzvorlage:
    gcloud compute instance-templates create "$BACKEND" \
        --tags=psc-demo,http-server,https-server \
        --image-family "$IMAGE_FAMILY" --image-project "$IMAGE_PROJECT" \
        --network "$NETWORK" --subnet "$SUBNET_NAME" --region "$REGION" \
        --project "$PROJECT_ID" \
        --metadata startup-script="#! /bin/bash
        sudo apt-get update
        sudo apt-get install apache2 -y
        sudo service apache2 restart
        echo '<!doctype html><html><body><h1>foo[/]: '\`/bin/hostname\`'</h1></body></html>' | sudo tee /var/www/html/index.html
        sudo mkdir /var/www/html/foo
        echo '<!doctype html><html><body><h1>foo[/foo]: '\`/bin/hostname\`'</h1></body></html>' | sudo tee /var/www/html/foo/index.html"
  3. Erstellen Sie eine verwaltete Instanzgruppe:
    gcloud compute instance-groups managed create $BACKEND \
        --project $PROJECT_ID --base-instance-name $BACKEND \
        --size 1 --template $BACKEND --region $REGION
  4. Erstellen Sie eine Systemdiagnose:
    gcloud compute instance-groups managed set-named-ports $BACKEND \
        --project $PROJECT_ID --region $REGION --named-ports http:80
    gcloud compute health-checks create tcp hc-tcp-$BACKEND \
      --region=$REGION \
      --description="health check for psc backend" \
      --port-name=http --project=$PROJECT_ID
  5. Load-Balancer erstellen:
    1. Erstellen Sie einen Backend-Dienst:
      gcloud compute backend-services create be-ilb \
          --load-balancing-scheme=internal \
          --protocol=tcp \
          --region=$REGION \
          --network=$NETWORK \
          --health-checks=hc-tcp-$BACKEND \
          --health-checks-region=$REGION \
          --project=$PROJECT_ID
    2. Fügen Sie dem Back-End-Dienst die verwaltete Instanzgruppe hinzu.
      gcloud compute backend-services add-backend be-ilb \
          --region=$REGION \
          --instance-group=$BACKEND \
          --instance-group-zone=$ZONE \
          --project=$PROJECT_ID
      
    3. Erstellen Sie eine Weiterleitungsregel:
      gcloud compute forwarding-rules create fr-ilb \
          --region=$REGION \
          --load-balancing-scheme=internal \
          --network=$NETWORK \
          --subnet=$SUBNET_NAME \
          --ip-protocol=TCP \
          --ports=80 \
          --backend-service=be-ilb \
          --backend-service-region=$REGION \
          --project=$PROJECT_ID

Dienstanhang erstellen

Erstellen Sie einen PSC-Dienstanhang im VPC-Netzwerk, in dem die Zieldienste bereitgestellt werden.

  1. Zum Ausführen dieser Aufgabe benötigen Sie die Berechtigung compute.subnetworks.create oder die IAM-Rolle Compute-Netzwerkadministrator (roles/compute.networkAdmin).
  2. Erstellen Sie ein PSC-Subnetz mit dem Wert PRIVATE_SERVICE_CONNECT für den Parameter purpose.
    gcloud compute networks subnets create PSC_SUBNET_NAME \
      --network NETWORK --region=REGION --purpose=PRIVATE_SERVICE_CONNECT --range=RANGE
    gcloud compute --project=$PROJECT_ID firewall-rules create allow-psc-nat-80 \
      --direction=INGRESS --priority=1000 --network NETWORK --action=ALLOW --rules=tcp:80
      --source-ranges=RANGE --target-tags=psc-demo

    Eine detaillierte Beschreibung der Befehlsparameter finden Sie in der Referenz zu Google Cloud CLI. Sie können diesen Schritt auch in der Cloud Console oder mit einer API ausführen.

    Beispiel:

    gcloud compute networks subnets create psc-subnet --network default \
    --region=us-west1 --purpose=PRIVATE_SERVICE_CONNECT --range=10.100.0.0/28
  3. Erstellen Sie einen Dienstanhang in Ihrem VPC-Netzwerk.
    1. Rufen Sie die Weiterleitungsregel des internen Load-Balancers ab. Sie verwenden diese Regel in einem späteren Schritt:
      gcloud compute forwarding-rules list --project=PROJECT_ID

      Dabei ist PROJECT_ID eine Google Cloud-Projekt-ID. Beispiel:

      gcloud compute forwarding-rules list --project=my-project
      NAME                                                  REGION    IP_ADDRESS    IP_PROTOCOL  TARGET
      k8s2-tcp-e61tta3j-apps-istio-ingressgateway-0kl92frk  us-west1  10.138.0.53   TCP
      
    2. Erstellen Sie den Dienstanhang:
      gcloud compute service-attachments create PSC_NAME \
          --region=REGION --producer-forwarding-rule=PRODUCER_FORWARDING_RULE \
          --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=PSC_SUBNET_NAME --project=PROJECT_ID

      Der Parameter NAME muss ein String mit 1 bis 63 Zeichen sein, der nur aus Kleinbuchstaben, Zahlen und Bindestrichen besteht. Sie darf keine führenden Zahlen und Bindestriche enthalten. Außerdem darf am Ende kein Bindestrich stehen. Eine detaillierte Beschreibung der Parameter für diesen Befehl finden Sie in der Referenz zur Google Cloud CLI.

      Beispiel:

      gcloud compute service-attachments create gkebackend \
          --region=us-west1 --producer-forwarding-rule=k8s2-tcp-e62tta1j-apps-istio-ingressgateway-0kl92frk \
          --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=psc-subnet --project=my-project

      Sie können diesen Schritt auch in der Cloud Console-UI ausführen. Weitere Informationen finden Sie beispielsweise unter Dienst mit automatischer Projektgenehmigung veröffentlichen.

Endpunktanhang erstellen

Erstellen Sie einen Endpunktanhang in der Apigee-Organisation. Sie können diesen Schritt über die Befehlszeile oder die Benutzeroberfläche des Apigee-Endpunkt-Anhangs ausführen.

Voraussetzung: Bevor Sie einen Endpunktanhang erstellen, müssen Sie die Dienste, die Sie für Private Service Connect (PSC) verfügbar machen möchten, wie weiter oben in diesem Beispiel erläutert durch Erstellen eines Load-Balancers und eines Dienstanhangs veröffentlichen. Weitere Informationen zum Freigeben von Diensten mit PSC finden Sie unter Verwaltete Dienste mit Private Service Connect veröffentlichen. Der Dienstanhang muss so konfiguriert sein, dass neue Verbindungen akzeptiert werden.

Befehlszeile

Erstellen Sie über die Befehlszeile einen Endpunktanhang in der Apigee-VPC:

  1. Rufen Sie die Ressource für den Dienstanhang ab:
    gcloud compute service-attachments list

    Der Befehl gibt Informationen zum Dienstanhang zurück. Sie benötigen diese Informationen im nächsten Schritt. Beispiel:

    NAME       REGION   TARGET_SERVICE                                       CONNECTION_PREFERENCE
    gkebackend us-west1 k8s2-tcp-tgysilgj-apps-istio-ingressgateway-fzdhwstg ACCEPT_AUTOMATIC
  2. Rufen Sie das Authentifizierungstoken für die Apigee API ab:
    TOKEN="$(gcloud auth print-access-token)"
  3. Verwenden Sie diese Apigee API zum Erstellen des Endpunktanhangs. Nutzen Sie die Werte, die vom Befehl gcloud compute service-attachments list im Text der Anfrage zurückgegeben werden:
    curl -X POST -H "Authorization: Bearer $TOKEN" -H "Content-Type:application/json" \
    "https://apigee.googleapis.com/v1/organizations/ORGANIZATION/endpointAttachments?endpointAttachmentId=EA_NAME" \
    -d '{
        "location": "REGION",
        "serviceAttachment": "projects/PROJECT_ID/regions/REGION/serviceAttachments/SA_NAME"
    }'

    Dabei gilt:

    • REGION ist die Region des Dienstanhangs. Beispiel: us-west1
    • ORGANIZATION ist der Name Ihrer Apigee-Organisation.
    • PROJECT_ID ist das Google Cloud-Projekt, in dem der Dienstanhang erstellt wurde.
    • EA_NAME ist der Name des Endpunktanhangs. Der Name muss eindeutig sein. Es können keine anderen Endpunktanhänge mit demselben Namen vorhanden sein und Sie können den Namen später nicht mehr ändern. Der Name muss mit einem Kleinbuchstaben beginnen, gefolgt von bis zu 31 Kleinbuchstaben, Zahlen oder Bindestrichen, darf aber nicht mit einem Bindestrich enden. Die Mindestlänge beträgt 2 Zeichen.
    • SA_NAME ist der Name des Dienstanhangs.

    Apigee startet einen Vorgang mit langer Ausführungszeit. Wenn der Vorgang abgeschlossen ist, wird eine Antwort vergleichbar der folgenden angezeigt:

    {
      "name": "organizations/my-organization/operations/6e249895-e78e-48f0-a28f-7140e15e1676",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.apigee.v1.OperationMetadata",
        "operationType": "INSERT",
        "targetResourceName": "organizations/my-organization/endpointAttachments/gkebackend",
        "state": "FINISHED"
      },
      "done": true,
      "response": {
        "@type": "type.googleapis.com/google.cloud.apigee.v1.EndpointAttachment",
        "name": "organizations/my-organization/endpointAttachments/gkebackend",
        "location": "us-west1",
        "host": "7.0.3.4",
        "serviceAttachment": "projects/my-project/regions/us-west1/serviceAttachments/gkebackend"
      }
    }

    Sie können jetzt mit der in der Antwort zurückgegebenen IP-Adresse 7.0.3.4 eine Verbindung zu den Diensten hinter dem Dienstanhang herstellen, wie im nächsten Schritt gezeigt. Beachten Sie, dass 7.0.3.4 eine privat genutzte öffentliche IP-Adresse (PUPI) ist, die Apigee dem Ingress-Gateway zuweist. Sie wird nicht im Internet beworben. Auch gibt es keine Google-Dienste, die intern IP-Adressen in diesem Bereich nutzen.

  4. Verwenden Sie die Host-IP-Adresse des Dienstanhangs als Ziel eines API-Proxys. For example:
    <TargetEndpoint name="default">
        <HTTPTargetConnection>
            <URL>http://7.0.3.4/orders</URL>
        </HTTPTargetConnection>
    </TargetEndpoint>

Apigee-Benutzeroberfläche

Erstellen Sie einen Endpunktanhang in der Apigee-Organisation in der Apigee-UI:

  1. Wechseln Sie in der Apigee-UI zu Admin > Endpunktanhänge.
  2. Klicken Sie auf + Endpunktanhang. Das Dialogfeld "Endpunktanhang" wird angezeigt.
  3. Geben Sie einen Namen für den Endpunktnamen ein. Der Name muss eindeutig sein. Es können keine anderen Endpunktanhänge mit demselben Namen vorhanden sein und Sie können den Namen später nicht mehr ändern. Der Name muss mit einem Kleinbuchstaben beginnen, gefolgt von bis zu 31 Kleinbuchstaben, Zahlen oder Bindestrichen, darf aber nicht mit einem Bindestrich enden. Die Mindestlänge beträgt 2 Zeichen.
  4. Klicken Sie auf Weiter.
  5. Wählen Sie in der Drop-down-Liste Dienstanhang den Dienstanhang aus, zu dem eine Verbindung hergestellt werden soll.

    Das Verhalten der UI hängt von Ihren Berechtigungen ab. Wenn Sie die Berechtigung zum Auflisten von Regionen und Dienstanhängen haben, können Sie Ihren Dienstanhang einfach aus der Drop-down-Liste auswählen. Wenn Sie keine Berechtigung zum Auflisten von Regionen haben, wird eine statische Liste von Regionen angezeigt und Sie können eine Liste aus der Liste auswählen. Wenn Sie keine Berechtigung zum Auflisten von Dienstanhängen haben, müssen Sie den Namen manuell eingeben. und den Namen des Dienstanhangs. Wenn Sie keine Berechtigung zum Auflisten von Regionen haben, wird eine statische Liste der Regionen zur Auswahl angezeigt.

    Speicherort der Apigee-Projekt-ID, die für die Konfiguration des Dienstanhangs erforderlich ist.

  6. Prüfen Sie, ob der Dienstendpunkt Verbindungen akzeptieren kann. Die Schritte finden Sie unter Anhang-Konnektivität prüfen und verwalten.
  7. Klicken Sie auf Weiter.
  8. Klicken Sie auf Erstellen. Der Vorgang dauert in der Regel ein oder zwei Minuten.
  9. Klicken Sie auf der Listenseite auf Aktualisieren, um den aktuellen Erstellungsstatus zu prüfen.
  10. Verwenden Sie die Host-IP-Adresse des Dienstanhangs als Ziel eines API-Proxys. Die Host-IP-Adresse wird in der Benutzeroberfläche für Endpunktanhänge angezeigt, wenn der Erstellungsvorgang abgeschlossen ist, wie im folgenden Screenshot dargestellt:

    Die Host-IP-Adresse des Dienstanhangs wird in der Benutzeroberfläche für Endpunktanhänge angezeigt

    Beispiel:
    <TargetEndpoint name="default">
        <HTTPTargetConnection>
            <URL>http://7.0.5.2/orders</URL>
        </HTTPTargetConnection>
    </TargetEndpoint>

Verbindung von Anhängen prüfen und verwalten

In diesem Abschnitt wird erläutert, wie Sie prüfen können, ob ein Dienstanhang auf einen Endpunktanhang in Ihrem Apigee-Projekt zugreifen kann, und wie Sie die Verbindungseinstellungen ändern, wenn Sie sie ändern möchten.

  1. Führen Sie die Schritte unter Veröffentlichte Dienste auflisten aus, um die Liste der Dienstanhänge in Ihrem Projekt aufzurufen.
  2. Wählen Sie wie unter Details für einen veröffentlichten Dienst ansehen beschrieben den Dienstanhang aus, zu dem Sie eine Verbindung herstellen möchten.
  3. Wählen Sie eine Verbindungseinstellung für Ihren veröffentlichten Dienstanhang aus. Private Service Connect bietet zwei Optionen, die unten beschrieben werden. Führen Sie die Schritte unter Verbindungseinstellungen für einen veröffentlichten Dienst ändern aus, wenn Sie die aktuelle Verbindungseinstellungen ändern möchten.
    • Alle Verbindungen automatisch akzeptieren: Der Dienstanhang akzeptiert Endpunktanhänge aus einem beliebigen Projekt. Wenn Sie diese Option auswählen, kann der Dienstanhang eine Verbindung von einem Endpunktanhang im Apigee-Projekt akzeptieren. Es ist keine weitere Konfiguration notwendig.
    • Verbindungen von ausgewählten Projekten akzeptieren: Sie geben die Projekte an, von denen der Dienstanhang Verbindungen akzeptiert. Wenn Sie diese Option auswählen, müssen Sie die Projekt-ID des Apigee-Projekts zum Dienstanhang hinzufügen. Sie finden die Apigee-Projekt-ID wie in diesem Screenshot dargestellt in der UI des Endpunktanhangs im Schritt Projektverbindung prüfen.

      Speicherort der Apigee-Projekt-ID, die für die Konfiguration des Dienstanhangs erforderlich ist.

      Sie können die Apigee-Projekt-ID auch mit der Apigee Organizations API abrufen, die die ID in einem Feld mit dem Namen apigeeProjectId zurückgibt.

  4. Speichern Sie die Veränderungen, wenn Sie welche an den Verbindungseinstellungen vorgenommen haben.
  5. Wechseln Sie in der Apigee-UI zu Admin > Endpunktanhänge. Sie können die Endpunktanhänge auch mit der Apigee Endpoints API auflisten.
  6. Prüfen Sie in der Liste der Anhänge, ob der PSC-Verbindungsstatus jetzt ACCEPTED lautet. Wenn das Feld einen anderen Status als ACCEPTED anzeigt, lesen Sie die Informationen unter Fehlerbehebung bei Problemen mit dem PSC-Verbindungsstatus.

Endpunktanhänge verwalten

Die Apigee endpointAttachments API bietet Methoden zum Erstellen, Löschen, Abrufen und Auflisten von Endpunktanhängen.

Endpunktanhänge auflisten

Sie können eine Liste der Endpunktanhänge in der Benutzeroberfläche des Apigee-Endpunktanhangs oder durch Aufrufen der Apigee Endpoints-API anzeigen.

So listen Sie Endpunktanhänge in der Apigee-UI auf:

  1. Wechseln Sie in der Apigee-UI zu Admin > Endpunktanhänge.
  2. Rufen Sie die Liste der Endpunktanhänge auf.

Endpunktanhang erstellen

Informationen zum Erstellen eines Endpunktanhangs in der UI oder mit der Apigee Endpoints API finden Sie unter Endpunktanhang erstellen.

Endpunktanhang löschen

So löschen Sie einen Endpunkt über die Apigee-UI:

  1. Wechseln Sie in der Apigee-UI zu Admin > Endpunktanhänge.
  2. Wählen Sie den zu löschenden Endpunkt aus.
  3. Klicken Sie auf Endpunktanhang löschen.

Sie können auch die Apigee Endpoints API verwenden, um Endpunktanhänge aufzulisten, zu erstellen und zu löschen.

Privates DNS-Peering

Wenn in dem Cloud-Projekt, das mit Apigee verbunden ist, eine private Cloud DNS-Zone gehostet wird, können Sie DNS-Peering so konfigurieren, dass Apigee Namen in Ihrer privaten Zone auflösen kann. Standardmäßig sind private Zonen in dem VPC-Netzwerk privat, in dem sie gehostet werden. Schritte zum Konfigurieren des DNS-Peerings zwischen einer privaten DNS-Zone und Apigee (dem Dienstersteller) finden Sie unter Private DNS-Zonen für Dienstersteller freigeben.

Fehlerbehebung

Probleme mit dem PSC-Verbindungsstatus

In diesem Abschnitt werden mögliche Lösungen beschrieben, wenn ein Endpunktanhang bereitgestellt wurde und der Status Aktiv ist, der Verbindungsstatus jedoch nicht Akzeptiert ist. Einige mögliche Verbindungsstatus sind in Abbildung 2 dargestellt.

Abbildung 2: Details zum Status des Endpunktanhangs

Der angegebene Status kann auf die wahrscheinliche Ursache verweisen, wie in der folgenden Tabelle beschrieben:

Verbindungsstatus Mögliche Ursache Empfohlene Lösung
Angenommen Der Dienstanhang hat die Verbindung vom Verbindungsendpunkt akzeptiert.
PENDING Die Apigee-Projekt-ID ist weder in der Liste der vom Nutzer akzeptierten Projekte noch in der Liste der abgelehnten Projekte enthalten. Fügen Sie die Apigee-Projekt-ID der Nutzerakzeptanzliste im Dienstanhang hinzu. Siehe Verbindungseinstellung für einen veröffentlichten Dienst ändern.
REJECTED Die Apigee-Projekt-ID ist in der Ablehnungsliste des Nutzers enthalten. Entfernen Sie die Apigee-Projekt-ID aus der Ablehnungsliste des Nutzers und fügen Sie sie der Liste der Nutzerannahmen im Dienstanhang hinzu. Siehe Anfragen für den Zugriff auf einen veröffentlichten Dienst verwalten.
FROZEN Der Dienstanhang für diesen Endpunktanhang wurde aufgehoben oder deaktiviert. Beschreiben Sie die Details des Dienstanhangs. Siehe Details für einen veröffentlichten Dienst ansehen.
GESCHLOSSEN Der Dienstanhang für diesen Endpunktanhang wurde gelöscht. Erstellen Sie den Dienstanhang und den Endpunktanhang neu.
NEEDS_ATTENTION Der Endpunktanhang wurde vom Dienstanhang akzeptiert, es gibt jedoch ein Problem mit dem Dienstanhang. Beschreiben Sie weitere Details des Dienstanhangs. Siehe Details für einen veröffentlichten Dienst ansehen.
UNAVAILABLE Der Verbindungsstatus ist nicht verfügbar, was während der Bereitstellung auftreten kann. Warten Sie einige Minuten, um zu sehen, ob sich der Status ändert.

PSC-Konfiguration mit Apigee

Weitere Informationen finden Sie in der <ph type="x-smartling-placeholder"></ph> Playbook zu Apigee-Konnektivitätsproblemen mit Southbound-PSC-Zielen.