Kostenpflichtige Organisation mit VPC-Peering bereitstellen

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

Apigee Edge-Dokumentation aufrufen

In diesem Dokument wird beschrieben, wie Sie Apigee über die Befehlszeile mit VPC-Peering installieren und konfigurieren. Diese Schritte gelten sowohl für Abo- als auch für „Pay as you go“-Preismodelle für bezahlte Organisationen mit oder ohne aktiviertem Datenstandort.

Zusammenfassung der Schritte

Dazu sind folgende Schritte erforderlich:

Schritt 1: Umgebungsvariablen definieren

Richten Sie gcloud ein und definieren Sie Umgebungsvariablen zur Verwendung in späteren Schritten:

  1. Prüfen Sie, ob die unter Vorbereitung aufgeführten Einrichtungsanforderungen erfüllt sind.
  2. Das Cloud SDK muss installiert sein. Weitere Informationen zur Installation finden Sie unter Cloud SDK installieren.
  3. Initialisieren Sie das Cloud SDK, wie unter gcloud CLI initialisieren beschrieben, oder achten Sie darauf, dass das unter Voraussetzungen erstellte Google Cloud-Projekt das Standardprojekt für gcloud ist.
  4. Definieren Sie in Ihrem Befehlsterminal die folgenden Umgebungsvariablen: Wählen Sie den Tab aus, der dem Typ der benötigten Organisation entspricht: Kein Datenstandort oder Datenstandort

    Kein Datenstandort

    AUTH="$(gcloud auth print-access-token)"
    PROJECT_ID="YOUR_PROJECT_ID"
    PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")
    RUNTIME_LOCATION="YOUR_RUNTIME_LOCATION"
    ANALYTICS_REGION="YOUR_ANALYTICS_REGION"
    BILLING_TYPE="YOUR_BILLING_TYPE"

    Wobei:

    • AUTH definiert den Header Authentication mit einem Inhabertoken. Dieser Header wird beim Aufrufen von Apigee APIs verwendet. Beachten Sie, dass das Token nach einer gewissen Zeit abläuft. Wenn dies der Fall ist, können Sie es einfach mit demselben Befehl neu generieren. Weitere Informationen finden Sie auf der Referenzseite für den Befehl print-access-token.
    • PROJECT_ID ist die Cloud-Projekt-ID, die Sie als eine der Voraussetzungen erstellt haben.
    • PROJECT_NUMBER ist die Cloud-Projektnummer, die Sie unter Voraussetzungen erstellt haben.
    • RUNTIME_LOCATION ist der physische Standort, an dem sich die Apigee-Instanz befindet, die Sie später erstellen. Eine Liste der verfügbaren Laufzeitstandorte finden Sie unter Apigee-Standorte.

    • ANALYTICS_REGION ist der physische Standort, an dem Apigee-Analysedaten gespeichert werden. Eine Liste der verfügbaren Apigee API Analytics-Regionen finden Sie unter Apigee-Standorte.

      RUNTIME_LOCATION und ANALYTICS_REGION können sich zwar auf dieselbe Region beziehen, müssen aber nicht identisch sein.

    • BILLING_TYPE ist der Abrechnungstyp für die von Ihnen erstellte Organisation. Gültige Werte sind:

    Datenstandort

    AUTH="$(gcloud auth print-access-token)"
    PROJECT_ID="YOUR_PROJECT_ID"
    PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")
    RUNTIME_LOCATION="YOUR_RUNTIME_LOCATION"
    CONTROL_PLANE_LOCATION="YOUR_CONTROL_PLANE_LOCATION"
    CONSUMER_DATA_REGION="YOUR_CONSUMER_DATA_REGION"
    BILLING_TYPE="YOUR_BILLING_TYPE"

    Wobei:

    • AUTH definiert den Header Authentication mit einem Inhabertoken. Dieser Header wird beim Aufrufen von Apigee APIs verwendet. Beachten Sie, dass das Token nach einer gewissen Zeit abläuft. Wenn dies der Fall ist, können Sie es einfach mit demselben Befehl neu generieren. Weitere Informationen finden Sie auf der Referenzseite für den Befehl print-access-token.
    • PROJECT_ID ist die Cloud-Projekt-ID, die Sie als eine der Voraussetzungen erstellt haben.
    • PROJECT_NUMBER ist die Cloud-Projektnummer, die Sie unter Voraussetzungen erstellt haben.
    • RUNTIME_LOCATION ist der physische Standort, an dem sich die Apigee-Instanz befindet, die Sie später erstellen. Eine Liste der verfügbaren Laufzeitstandorte finden Sie unter Apigee-Standorte.

      Der Laufzeitstandort muss sich innerhalb des Speicherorts der Steuerungsebene befinden.
    • CONTROL_PLANE_LOCATION ist der physische Standort, an dem die Daten der Apigee-Steuerungsebene gespeichert werden. Eine Liste der verfügbaren Standorte der Steuerungsebene finden Sie unter Apigee-Standorte.
    • CONSUMER_DATA_REGION ist eine Unterregion der Region der Steuerungsebene. Sie müssen sowohl die CONTROL_PLANE_LOCATION als auch die CONSUMER_DATA_REGION angeben. Eine Liste der verfügbaren Regionen für Nutzerdaten finden Sie unter Apigee-Standorte.
    • BILLING_TYPE ist der Abrechnungstyp für die von Ihnen erstellte Organisation. Gültige Werte sind:

  5. (Optional) Um Ihre Arbeit zu testen, rufen Sie die soeben festgelegten Werte ab. Wenn Sie in Ihren Befehlen eine Variable verwenden möchten, stellen Sie dem Variablennamen ein Dollarzeichen ($) voran.

    Kein Datenstandort

    echo $AUTH
    echo $PROJECT_ID
    echo $PROJECT_NUMBER
    echo $RUNTIME_LOCATION
    echo $ANALYTICS_REGION
    echo $BILLING_TYPE
    

    Die Antworten auf Ihre echo-Befehle sollten etwa so aussehen:

    YOUR_TOKEN
    my-cloud-project
    1234567890
    us-west1
    us-west1
    SUBSCRIPTION
    

    Datenstandort

    echo $AUTH
    echo $PROJECT_ID
    echo $PROJECT_NUMBER
    echo $RUNTIME_LOCATION
    echo $CONTROL_PLANE_LOCATION
    echo $CONSUMER_DATA_REGION
    echo $BILLING_TYPE
    

    Die Antworten auf Ihre echo-Befehle sollten etwa so aussehen:

    YOUR_TOKEN
    my-cloud-project
    1234567890
    us-west1
    us
    us-west1
    SUBSCRIPTION
    

Schritt 2: APIs aktivieren

  1. Für Apigee müssen Sie mehrere Google Cloud APIs aktivieren. Aktivieren Sie diese mit dem folgenden Befehl services enable:

    gcloud services enable apigee.googleapis.com \
        servicenetworking.googleapis.com \
        compute.googleapis.com \
        cloudkms.googleapis.com --project=$PROJECT_ID
  2. (Optional) Rufen Sie zum Prüfen Ihrer Arbeit mit dem Befehl services list alle aktivierten APIs auf:

    gcloud services list

    In der Antwort werden alle aktivierten Dienste angezeigt, einschließlich der APIs, die Sie gerade aktiviert haben.

Schritt 3: Apigee-Dienstidentität erstellen

  1. Erstellen Sie die Apigee-Dienstidentität:

    gcloud beta services identity create --service=apigee.googleapis.com \
      --project=$PROJECT_ID
  2. Überprüfen Sie, ob der Agent erfolgreich erstellt wurde. Die Antwort sollte den Namen des Agents im folgenden Format enthalten: service-PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com. Beispiel:

    Service identity created: service-1234567890@gcp-sa-apigee.iam.gserviceaccount.com

Schritt 3: Dienstnetzwerk konfigurieren

In diesem Schritt weisen Sie Apigee ein Paar IP-Adressbereiche (einen CIDR-Bereich von /22 und /28) zu und führen das VPC-Peering zwischen Ihrem Netzwerk und dem Apigee-Netzwerk aus. Jede Apigee-Instanz erfordert einen nicht überlappenden CIDR-Bereich von /22 und /28. Der Apigee-Laufzeitebene werden IP-Adressen aus diesem CIDR-Bereich zugewiesen. Daher ist es wichtig, dass der Bereich für Apigee reserviert ist und nicht von anderen Anwendungen des VPC-Netzwerks genutzt wird. Weitere Informationen und wichtige Überlegungen finden Sie unter Informationen zu Peering-Bereichen.

Beachten Sie, dass Sie genügend Netzwerk-IP-Bereiche für eine Apigee-Instanz erstellen. Wenn Sie planen, zusätzliche Apigee-Instanzen zu erstellen, müssen Sie diesen Schritt für jede einzelne wiederholen. Die Bereiche können nicht von Instanzen gemeinsam genutzt werden. Weitere Informationen finden Sie auch unter Apigee auf mehrere Regionen erweitern.

  1. Erstellen Sie folgende Umgebungsvariablen:
    RANGE_NAME=YOUR_RANGE_NAME
    NETWORK_NAME=YOUR_NETWORK_NAME
    

    Wobei:

    • RANGE_NAME ist der Name des IP-Adressbereichs, den Sie erstellen. Sie können dem Bereich jeden beliebigen Namen geben. Beispiel: google-svcs
    • NETWORK_NAME ist der Name der Netzwerkressource, in der die Adressen reserviert werden sollen.

      Google erstellt für jedes neue Projekt ein Standardnetzwerk namens default, das Sie verwenden können. Google empfiehlt jedoch, das Standardnetzwerk ausschließlich für Tests zu verwenden.

  2. Erstellen Sie einen Netzwerk-IP-Bereich mit einer CIDR-Länge von /22:
    gcloud compute addresses create $RANGE_NAME \
      --global \
      --prefix-length=22 \
      --description="Peering range for Apigee services" \
      --network=$NETWORK_NAME \
      --purpose=VPC_PEERING \
      --addresses=OPTIONAL_ADDRESSES \
      --project=$PROJECT_ID

    Mit --addresses können Sie optional einen Adressbereich angeben. Wenn Sie beispielsweise den CIDR-Block 192.168.0.0/22 zuordnen möchten, geben Sie 192.168.0.0 für die Adresse und 22 für die Präfixlänge an. Weitere Informationen finden Sie unter IP-Zuordnung erstellen.

    Wenn Sie den Parameter --addresses nicht angeben, wählt gcloud einen verfügbaren Adressbereich für Sie aus.

    Bei Erfolg gibt gcloud Folgendes zurück:

    Created [https://www.googleapis.com/compute/v1/projects/PROJECT_NAME/global/addresses/google-svcs].

    Wenn Sie einen Bereich von IP-Adressen erstellt haben, sind die Adressen mit dem Projekt verknüpft, bis Sie sie wieder freigeben.

  3. Prüfen Sie, ob der Netzwerk-IP-Bereich mit einer CIDR-Länge von /22 erstellt wurde:
    gcloud compute addresses list --global --project=$PROJECT_ID
    gcloud compute addresses describe $RANGE_NAME --global --project=$PROJECT_ID
  4. Erstellen Sie einen Netzwerk-IP-Bereich mit einer CIDR-Länge von /28. Dieser Bereich ist erforderlich und wird von Apigee zur Fehlerbehebung verwendet. Er kann nicht angepasst oder geändert werden.
    gcloud compute addresses create google-managed-services-support-1 \
      --global \
      --prefix-length=28 \
      --description="Peering range for supporting Apigee services" \
      --network=$NETWORK_NAME \
      --purpose=VPC_PEERING \
      --addresses=OPTIONAL_ADDRESSES \
      --project=$PROJECT_ID

    Mit --addresses können Sie optional einen Adressbereich angeben. Wenn Sie beispielsweise den CIDR-Block 192.168.0.0/28 zuordnen möchten, geben Sie 192.168.0.0 für die Adresse und 28 für die Präfixlänge an. Weitere Informationen finden Sie unter IP-Zuordnung erstellen.

    Wenn Sie den Parameter --addresses nicht angeben, wählt gcloud einen verfügbaren Adressbereich für Sie aus.

  5. Prüfen Sie, ob der Netzwerk-IP-Bereich mit einer CIDR-Länge von /28 erstellt wurde:
    gcloud compute addresses list --global --project=$PROJECT_ID
    gcloud compute addresses describe google-managed-services-support-1 --global \
      --project=$PROJECT_ID
  6. Nutzen Sie den folgenden Befehl, um Ihre Dienste mit dem Netzwerk zu verbinden:
    gcloud services vpc-peerings connect \
      --service=servicenetworking.googleapis.com \
      --network=$NETWORK_NAME \
      --ranges=$RANGE_NAME,google-managed-services-support-1 \
      --project=$PROJECT_ID

    Dieser Vorgang kann einige Minuten dauern. Bei Erfolg gibt gcloud Folgendes zurück, wobei OPERATION_ID die UUID des LRO (Vorgang mit langer Ausführungszeit) ist.

    Operation "operations/OPERATION_ID" finished successfully.
  7. Apigee stellt eine Verbindung zwischen Ihrem Netzwerk und den Google-Diensten her. Insbesondere verbindet Apigee Ihr Projekt über VPC-Peering mit der Service Networking API. Apigee verknüpft außerdem IP-Adressen mit Ihrem Projekt.

  8. Prüfen Sie nach einigen Minuten, ob das VPC-Peering erfolgreich war:
    gcloud services vpc-peerings list \
      --network=$NETWORK_NAME \
      --service=servicenetworking.googleapis.com \
      --project=$PROJECT_ID

Schritt 5: Organisation erstellen

Für das Erstellen einer Organisation müssen Sie einen Schlüsselbund und einen Schlüssel für die Verschlüsselung der Laufzeitdatenbank anlegen (siehe Schritt 1) und, wenn Sie Datenstandort verwenden, Schlüsselbunde und Schlüssel für die Verschlüsselung der Steuerungsebene (siehe Schritt 2) Diese Cloud KMS-Schlüssel verschlüsseln Daten, die an Laufzeit- und Steuerungsebenenstandorten gespeichert und repliziert werden. Apigee verwendet diese Entitäten zum Verschlüsseln von Anwendungsdaten wie KVMs, Cache- und Clientschlüssel, die dann in der Datenbank gespeichert werden. Weitere Informationen finden Sie unter Apigee-Verschlüsselungsschlüssel.

  1. Erstellen Sie einen Schlüsselbund und Schlüssel für die Verschlüsselung der Laufzeitdatenbank:

    1. Definieren Sie für den Speicherort von Schlüsselbund und Schlüssel zur Verschlüsselung Ihrer Laufzeitdatenbank eine Umgebungsvariable. Dies sorgt für Konsistenz bei der Erstellung und hilft Ihnen beim Befolgen der Dokumentation.

      Der Wert ist der physische Standort, an dem der Schlüsselbund und der Schlüssel der Laufzeitdatenbank gespeichert sind.

      Einzelne Region

      Konfigurationen für eine einzelne Region (in denen Sie nur eine Instanz in einer Region haben): Wählen Sie einen der unterstützten regionalen KMS-Standorte aus.

      Beispiel:

      RUNTIMEDBKEY_LOCATION="us-west1"

      Der Wert kann mit Ihrer $RUNTIME_LOCATION (auch eine Region) identisch sein, muss es aber nicht. Unter Umständen verbessert die Übereinstimmung aber die Leistung.

      Mehrere Regionen

      Multiregionale Konfigurationen: Wählen Sie einen unterstützten multiregionalen Standort (z. B. usoder europe) oder einen dual-regionalen Standort aus.

      Beispiel:

      RUNTIMEDBKEY_LOCATION="us"

      Wenn Sie eine Konfiguration mit mehreren Regionen in den USA haben, empfehlen wir die Verwendung von us für Ihren Standort, sofern möglich. Verwenden Sie andernfalls nam4.

    2. Definieren Sie Umgebungsvariablen für den Schlüsselbund und den Schlüsselnamen der Datenbank.

      Der Name des Schlüsselbunds muss für Ihre Organisation eindeutig sein. Wenn Sie eine zweite oder nachfolgende Region erstellen, darf der Name nicht mit den Namen anderer Schlüsselbunde übereinstimmen.

      RUNTIMEDB_KEY_RING_NAME=YOUR_DB_KEY_RING_NAME
      RUNTIMEDB_KEY_NAME=YOUR_DB_KEY_NAME
    3. (Optional) Um Ihre Arbeit zu testen, rufen Sie die soeben festgelegten Werte ab. Wenn Sie in Ihren Befehlen eine Variable verwenden möchten, stellen Sie dem Variablennamen ein Dollarzeichen ($) voran.
      echo $RUNTIMEDBKEY_LOCATION
      echo $RUNTIMEDB_KEY_RING_NAME
      echo $RUNTIMEDB_KEY_NAME
    4. Erstellen Sie einen neuen Schlüsselbund:
      gcloud kms keyrings create $RUNTIMEDB_KEY_RING_NAME \
        --location $RUNTIMEDBKEY_LOCATION --project $PROJECT_ID

      Der Speicherort des Verschlüsselungsschlüssels für die Apigee-Laufzeitdatenbank unterstützt alle Cloud KMS-Standorte, die Cloud HSM und Cloud EKM unterstützen.

    5. Schlüssel erstellen:

      gcloud kms keys create $RUNTIMEDB_KEY_NAME \
        --keyring $RUNTIMEDB_KEY_RING_NAME \
        --location $RUNTIMEDBKEY_LOCATION \
        --purpose "encryption" \
        --project $PROJECT_ID

      Dieser Befehl erstellt den Schlüssel und fügt ihn dem Schlüsselbund hinzu.

      Rufen Sie die Schlüssel-ID ab:

      gcloud kms keys list \
        --location=$RUNTIMEDBKEY_LOCATION \
        --keyring=$RUNTIMEDB_KEY_RING_NAME \
        --project=$PROJECT_ID

      Die Schlüssel-ID hat die folgende Syntax (ähnlich einem Dateipfad):

      projects/PROJECT_ID/locations/RUNTIMEDBKEY_LOCATION/keyRings/RUNTIMEDB_KEY_RING_NAME/cryptoKeys/RUNTIMEDB_KEY_NAME
    6. Fügen Sie die Schlüssel-ID in eine Umgebungsvariable ein. Sie verwenden diese Variable in einem späteren Befehl:

      RUNTIMEDB_KEY_ID=YOUR_RUNTIMEDB_KEY_ID
    7. Gewähren Sie dem Apigee-Dienst-Agent Zugriff auf den neuen Schlüssel:

      gcloud kms keys add-iam-policy-binding $RUNTIMEDB_KEY_NAME \
        --location $RUNTIMEDBKEY_LOCATION \
        --keyring $RUNTIMEDB_KEY_RING_NAME \
        --member serviceAccount:service-$PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com \
        --role roles/cloudkms.cryptoKeyEncrypterDecrypter \
        --project $PROJECT_ID

      Mit diesem Befehl wird der Schlüssel an den Apigee-Dienst-Agent gebunden.

      Nach dem erfolgreichen Abschluss dieser Anfrage gibt gcloud etwa folgende Antwort zurück:

      Updated IAM policy for key [runtime].
      bindings:
      - members:
        - serviceAccount:service-1234567890@gcp-sa-apigee.iam.gserviceaccount.com
        role: roles/cloudkms.cryptoKeyEncrypterDecrypter
      etag: BwWqgEuCuwk=
      version: 1

      Wenn Sie einen Fehler wie folgenden erhalten:

      INVALID_ARGUMENT: Role roles/cloudkms.cryptokms.cryptoKeyEncrypterDecrypter is not supported for this resource.

      Achten Sie darauf, dass Sie die Projektnummer und nicht den Projektnamen in der E-Mail-Adresse des Dienstkontos verwendet haben.

  2. Wenn Sie den Datenstandort verwenden, erstellen Sie einen Schlüsselbund und Schlüssel zur Verschlüsselung der Steuerungsebene. Wenn Sie keinen Datenstandort verwenden, fahren Sie mit Schritt 3 fort.
  3. Führen Sie die folgenden Schritte aus, um einen Schlüsselbund und einen Schlüssel der Steuerungsebene zu erstellen.

    1. Definieren Sie eine Umgebungsvariable für den Speicherort des Schlüsselbunds und Schlüssels für die Verschlüsselung der Steuerungsebene.
      CONTROL_PLANE_LOCATION=YOUR_CONTROL_PLANE_LOCATION
      CONSUMER_DATA_REGION=YOUR_CONSUMER_DATA_REGION

      Wobei:

      • CONTROL_PLANE_LOCATION ist der physische Standort, an dem die Daten der Apigee-Steuerungsebene gespeichert werden. Eine Liste der verfügbaren Standorte der Steuerungsebene finden Sie unter Apigee-Standorte.
      • CONSUMER_DATA_REGION ist eine Unterregion der Region der Steuerungsebene. Sie müssen sowohl die CONTROL_PLANE_LOCATION als auch die CONSUMER_DATA_REGION angeben. Eine Liste der verfügbaren Regionen für Nutzerdaten finden Sie unter Apigee-Standorte.
    2. Definieren Sie Umgebungsvariablen für den Schlüsselbund und den Schlüsselnamen der Datenbank der Steuerungsebene.

      Der Name des Schlüsselbunds muss für Ihre Organisation eindeutig sein.

      CONTROL_PLANE_KEY_RING_NAME=YOUR_CONTROL_PLANE_KEY_RING_NAME
      CONTROL_PLANE_KEY_NAME=YOUR_CONTROL_PLANE_KEY_NAME
      CONSUMER_DATA_KEY_RING_NAME=YOUR_CONSUMER_DATA_KEY_RING_NAME
      CONSUMER_DATA_KEY_NAME=YOUR_CONSUMER_DATA_REGION_KEY_NAME

      Wobei:

      • CONTROL_PLANE_KEY_RING_NAME ist der Name des Schlüsselbunds, mit dem Sie den Schlüsselbund der Verschlüsselung Ihrer Steuerungsebene identifizieren.
      • CONTROL_PLANE_KEY_NAME ist der Name des Schlüssels, mit dem Sie den Verschlüsselungsschlüssel Ihrer Steuerungsebene identifizieren.
      • CONSUMER_DATA_KEY_RING_NAME ist der Name des Schlüsselbunds, mit dem Sie Ihren Verschlüsselungs-Schlüsselbund des Speicherorts für Nutzerdaten identifizieren.
      • CONSUMER_DATA_KEY_NAME ist der Name des Schlüssels, mit dem Sie Ihren Verschlüsselungsschlüssel des Speicherorts für Nutzerdaten identifizieren.
    3. Erstellen Sie einen neuen Schlüsselbund:
      gcloud kms keyrings create $CONTROL_PLANE_KEY_RING_NAME \
        --location $CONTROL_PLANE_LOCATION \
        --project $PROJECT_ID
      gcloud kms keyrings create $CONSUMER_DATA_KEY_RING_NAME \
        --location $CONSUMER_DATA_REGION \
        --project $PROJECT_ID
    4. Schlüssel erstellen:
      gcloud kms keys create $CONTROL_PLANE_KEY_NAME \
        --keyring $CONTROL_PLANE_KEY_RING_NAME \
        --location $CONTROL_PLANE_LOCATION \
        --purpose "encryption" \
        --project $PROJECT_ID
      gcloud kms keys create $CONSUMER_DATA_KEY_NAME \
        --keyring $CONSUMER_DATA_KEY_RING_NAME \
        --location $CONSUMER_DATA_REGION \
        --purpose "encryption" \
        --project $PROJECT_ID

      Dieser Befehl erstellt den Schlüssel und fügt ihn dem Schlüsselbund hinzu.

      Rufen Sie die Schlüssel-ID ab:

      gcloud kms keys list \
      --location=$CONTROL_PLANE_LOCATION \
      --keyring=$CONTROL_PLANE_KEY_RING_NAME \
      --project=$PROJECT_ID
      gcloud kms keys list \
      --location=$CONSUMER_DATA_REGION \
      --keyring=$CONSUMER_DATA_KEY_RING_NAME \
      --project=$PROJECT_ID

      Die Schlüssel-ID hat die folgende Syntax (ähnlich einem Dateipfad):

      projects/PROJECT_ID/locations/CONTROL_PLANE_LOCATION/keyRings/CONTROL_PLANE_KEY_RING_NAME/cryptoKeys/CONTROL_PLANE_KEY_NAME
      projects/PROJECT_ID/locations/CONSUMER_DATA_REGION/keyRings/CONSUMER_DATA_KEY_RING_NAME/cryptoKeys/CONSUMER_DATA_KEY_NAME
    5. Fügen Sie die Schlüssel-ID in eine Umgebungsvariable ein. Sie verwenden diese Variable in einem späteren Befehl:
      CONTROL_PLANE_KEY_ID=YOUR_CONTROL_PLANE_KEY_ID
      
      CONSUMER_DATA_KEY_ID=YOUR_CONSUMER_DATA_KEY_ID
    6. Gewähren Sie dem Apigee-Dienst-Agent Zugriff auf den neuen Schlüssel:
      gcloud kms keys add-iam-policy-binding $CONTROL_PLANE_KEY_NAME \
        --location $CONTROL_PLANE_LOCATION \
        --keyring $CONTROL_PLANE_KEY_RING_NAME \
        --member "serviceAccount:service-$PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com" \
        --role roles/cloudkms.cryptoKeyEncrypterDecrypter \
        --project $PROJECT_ID
      
      gcloud kms keys add-iam-policy-binding $CONSUMER_DATA_KEY_NAME \
       --location $CONSUMER_DATA_REGION \
       --keyring $CONSUMER_DATA_KEY_RING_NAME \
       --member "serviceAccount:service-$PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com" \
       --role roles/cloudkms.cryptoKeyEncrypterDecrypter \
       --project $PROJECT_ID
      

      Mit diesem Befehl wird der Schlüssel an den Apigee-Dienst-Agent gebunden. Nach dem erfolgreichen Abschluss dieser Anfrage gibt gcloud etwa folgende Antwort zurück:

      Updated IAM policy for key [runtime].
      bindings:
      - members:
        - serviceAccount:service-1234567890@gcp-sa-apigee.iam.gserviceaccount.com
        role: roles/cloudkms.cryptoKeyEncrypterDecrypter
      etag: BwWqgEuCuwk=
      version: 1
      

      Wenn Sie einen Fehler wie folgenden erhalten:

      INVALID_ARGUMENT: Role roles/cloudkms.cryptokms.cryptoKeyEncrypterDecrypter is not supported for this resource.
      

      Achten Sie darauf, dass Sie die Projektnummer und nicht den Projektnamen in der E-Mail-Adresse des Dienstkontos verwendet haben.

    Weitere Informationen finden Sie unter CMEK-Fehlerbehebung.

  4. Erstellen Sie die Organisation, indem Sie die folgende Anfrage an die Apigee Organizations API senden:

    Kein Datenstandort

    curl "https://apigee.googleapis.com/v1/organizations?parent=projects/$PROJECT_ID"  \
      -H "Authorization: Bearer $AUTH" \
      -X POST \
      -H "Content-Type:application/json" \
      -d '{
        "name":"'"$PROJECT_ID"'",
        "analyticsRegion":"'"$ANALYTICS_REGION"'",
        "runtimeType":"CLOUD",
        "billingType":"'"$BILLING_TYPE"'",
        "authorizedNetwork":"'"$NETWORK_NAME"'",
        "runtimeDatabaseEncryptionKeyName":"'"$RUNTIMEDB_KEY_ID"'"
      }'

    Wobei:

    • -d definiert die Datennutzlast für die Anfrage. Diese Nutzlast muss Folgendes enthalten:
      • name gibt Ihre neue Organisation an. Der Wert muss mit Ihrer Projekt-ID identisch sein.

      • analyticsRegion gibt den physischen Speicherort an, an dem Ihre Analysedaten gespeichert werden.

      • runtimeType: Setzen Sie diesen Wert auf CLOUD.
      • billingType: Gibt den Abrechnungstyp der erstellten Organisation an.
      • authorizedNetwork: Identifiziert das Peering-Netzwerk, das Sie unter Dienstnetzwerk konfigurieren angegeben haben.
      • runtimeDatabaseEncryptionKeyName: Die ID des Verschlüsselungsschlüssels der Anwendung, den Sie im vorherigen Schritt erstellt haben. Denken Sie daran, dass die ID wie ein Dateipfad strukturiert ist. Beispiel:
        projects/my-project/locations/us-west1/keyRings/my-key-ring/cryptoKeys/my-key

    Datenstandort

    Erstellen Sie eine Organisation mit der API:

    curl "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations?parent=projects/$PROJECT_ID"  \
      -H "Authorization: Bearer $AUTH" \
      -X POST \
      -H "Content-Type:application/json" \
      -d '{
        "name":"'"$PROJECT_ID"'",
        "runtimeType":"CLOUD",
        "billingType":"'"$BILLING_TYPE"'",
        "controlPlaneEncryptionKeyName":"'"$CONTROL_PLANE_KEY_ID"'",
        "apiConsumerDataLocation":"'"$CONSUMER_DATA_REGION"'",
        "apiConsumerDataEncryptionKeyName":"'"$CONSUMER_DATA_KEY_ID"'",
        "authorizedNetwork":"'"$NETWORK_NAME"'",
        "runtimeDatabaseEncryptionKeyName":"'"$RUNTIMEDB_KEY_ID"'"
      }'

    Wobei:

    -d definiert die Datennutzlast für die Anfrage. Diese Nutzlast muss Folgendes enthalten:

    • name gibt Ihre neue Organisation an. Der Wert muss mit Ihrer Projekt-ID identisch sein.
    • runtimeType: Setzen Sie diesen Wert auf CLOUD.
    • billingType: Gibt den Abrechnungstyp der erstellten Organisation an.
    • controlPlaneEncryptionKeyName: ist die Schlüssel-ID der Steuerungsebene.
    • apiConsumerDataLocation: Sie müssen auch eine Unterregion für die Verwendung durch interne Ressourcen angeben. Unterstützte Werte finden Sie unter Datenstandortregionen.
    • apiConsumerDataEncryptionKeyName: Ist die Schlüssel-ID des Speicherorts für Nutzerdaten.
    • authorizedNetwork: Identifiziert das Peering-Netzwerk, das Sie unter Dienstnetzwerk konfigurieren angegeben haben.
    • runtimeDatabaseEncryptionKeyName: Die ID des Verschlüsselungsschlüssels der Anwendung, den Sie im vorherigen Schritt erstellt haben. Denken Sie daran, dass die ID wie ein Dateipfad strukturiert ist. Beispiel:
      projects/my-project/locations/us-west1/keyRings/my-key-ring/cryptoKeys/my-key

    Nach Ausführung dieses Befehls startet Apigee einen Vorgang mit langer Ausführungszeit, der ein paar Minuten dauern kann.

    Wenn ein Fehler zurückgegeben wird, prüfen Sie, ob die Variablenwerte in der Datennutzlast in Anführungszeichen eingeschlossen wurden. Achten Sie darauf, dass die Variable $PROJECT_ID zwischen doppelten Anführungszeichen steht, wie im Folgenden dargestellt:

    "'"$PROJECT_ID"'"

    Wenn Sie einfache Strings (keine Umgebungsvariablen) für Abfragewerte verwenden, können Sie diese in doppelte Anführungszeichen innerhalb des in einfachen Anführungszeichen stehenden Nutzlaststrings setzen, wie das folgende Beispiel zeigt:

    '{ "name":"my-gcp-project", ... }'
  5. Warten Sie ein paar Minuten.
  6. Um den Status Ihrer Erstellungsanfrage zu prüfen, können Sie eine GET-Anfrage an die Apigee List Organizations API wie im folgendem Beispiel senden:

    Kein Datenstandort

    curl -H "Authorization: Bearer $AUTH" "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID"

    Datenstandort

    curl -H "Authorization: Bearer $AUTH" "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$PROJECT_ID"

    Wenn diese Antwort angezeigt wird, ist die Erstellung der Organisation noch nicht abgeschlossen:

    {
      "error": {
        "code": 403,
        "message": "Permission denied on resource \"organizations/apigee-docs-m\" (or it may not exist)",
        "status": "PERMISSION_DENIED"
      }
    }

    Wenn Apigee eine neue Organisation erstellt hat, erhalten Sie eine Antwort ähnlich der folgenden:

    Kein Datenstandort

    {
      "name": "my-cloud-project",
      "createdAt": "1592586495539",
      "lastModifiedAt": "1592586495539",
      "environments": [],
      "properties": {
        "property": [
          {
            "name": "features.hybrid.enabled",
            "value": "true"
          },
          {
            "name": "features.mart.connect.enabled",
            "value": "true"
          }
        ]
      },
      "analyticsRegion": "us-west1",
      "runtimeType": "CLOUD",
      "subscriptionType": "PAID",
      "caCertificate": "YOUR_CERTIFICATE",
      "authorizedNetwork": "my-network",
      "projectId": "my-cloud-project"
    }

    Datenstandort

      {
        "name": "my-cloud-project",
        "createdAt": "1681412783749",
        "lastModifiedAt": "1681412783749",
        "environments": [
          "test-env"
        ],
        "properties": {
          "property": [
            {
              "name": "features.mart.connect.enabled",
              "value": "true"
            },
            {
              "name": "features.hybrid.enabled",
              "value": "true"
            }
          ]
        },
        "authorizedNetwork": "default",
        "runtimeType": "CLOUD",
        "subscriptionType": "PAID",
        "caCertificate": "YOUR_CERTIFICATE",
        "runtimeDatabaseEncryptionKeyName": "projects/my-cloud-project/locations/us/keyRings/my-key-ring/cryptoKeys/my-key-name",
        "projectId": "my-cloud-project",
        "state": "ACTIVE",
        "billingType": "PAYG",
        "addonsConfig": {
          "advancedApiOpsConfig": {},
          "integrationConfig": {},
          "monetizationConfig": {},
          "connectorsPlatformConfig": {}
        },
        "apiConsumerDataEncryptionKeyName": "projects/my-cloud-project/locations/us-central1/keyRings/my-key-ring/cryptoKeys/my-key-name",
        "controlPlaneEncryptionKeyName": "projects/my-cloud-project/locations/us/keyRings/my-key-ring/cryptoKeys/my-key-name",
        "apiConsumerDataLocation": "us-central1",
        "apigeeProjectId": "i0c2a37e80f9850ab-tp"
      }
    
    

    Wenn Apigee eine HTTP-Fehlerantwort zurückgibt, lesen Sie Apigee-Organisation erstellen.

Schritt 6: Laufzeitinstanz erstellen

Eine Laufzeitinstanz, in der Ihr Apigee-Projekt und die zugehörigen Dienste gespeichert sind. Sie stellt den nutzerseitigen Endpunkt für Ihre Dienste bereit. So erstellen Sie eine neue Laufzeitinstanz:

  1. Prüfen Sie, ob Apigee das Erstellen Ihrer Organisation abgeschlossen hat. Sie haben in Apigee-Organisation erstellen eine Anfrage zum Erstellen einer neuen Organisation gesendet, müssen diese jedoch prüfen, bevor Sie fortfahren.

    Senden Sie dazu die folgende Anfrage an die Organizations API:

    Kein Datenstandort

    curl -i -H "Authorization: Bearer $AUTH" \
        "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID"

    Datenstandort

    curl -i -H "Authorization: Bearer $AUTH" \
        "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$PROJECT_ID"

    Wenn die Organisation vorhanden ist und Sie die entsprechenden Berechtigungen zu deren Anzeige haben, gibt Apigee Details dazu zurück. Wenn Apigee mit einem Fehler antwortet, warten Sie einige Minuten und senden Sie die Anfrage noch einmal.

  2. Ähnlich wie in der vorherigen Aufgabe, in der Sie einen Verschlüsselungsschlüssel für die Datenbank erstellt haben, müssen Sie jetzt einen Cloud KMS-Schlüssel erstellen, mit dem Daten auf der Serverseite verschlüsselt werden. Definieren Sie zuerst die folgenden Umgebungsvariablen:
    INSTANCE_NAME=YOUR_INSTANCE_NAME
    RUNTIME_LOCATION=YOUR_RUNTIME_LOCATION
    DISK_KEY_RING_NAME=YOUR_DISK_KEY_RING_NAME
    DISK_KEY_NAME=YOUR_DISK_KEY_NAME
  3. Wobei:

    • INSTANCE_NAME: Der Name Ihrer neuen Instanz. Beispiel: my-runtime-instance. Dieser Name muss mit einem Kleinbuchstaben beginnen und kann bis zu 32 Zeichen lang sein. Er darf nur Kleinbuchstaben, Ziffern und Bindestriche enthalten. Er kann nicht mit einem Bindestrich beginnen oder enden und muss aus mindestens 2 Zeichen bestehen.
    • RUNTIME_LOCATION ist der physische Standort, an dem der Cluster gehostet wird. Gültige Werte sind alle Standorte, die von Compute Engine zugelassen werden. Weitere Informationen finden Sie unter Verfügbare Regionen und Zonen. In diesem Beispiel wird us-west1 verwendet.
    • DISK_KEY_RING_NAME ist der Name des Laufwerksschlüsselbunds.
    • DISK_KEY_NAME ist der Name des Laufwerksverschlüsselungsschlüssels.
  4. Laufwerkverschlüsselungsschlüssel erstellen:
    1. Erstellen Sie einen neuen Laufwerkschlüsselbund:
      gcloud kms keyrings create $DISK_KEY_RING_NAME \
        --location $RUNTIME_LOCATION \
        --project $PROJECT_ID

      Der Schlüsselbund des Laufwerks muss auf den gleichen Standort wie die Instanz eingestellt werden. Jede Instanz und jeder Schlüsselbund müssen einen eigenen Standort haben.

    2. Erstellen Sie einen neuen Laufwerksschlüssel:
      gcloud kms keys create $DISK_KEY_NAME \
        --keyring $DISK_KEY_RING_NAME \
        --location $RUNTIME_LOCATION \
        --purpose "encryption" \
        --project $PROJECT_ID

      Auf den Schlüssel kann über seinen Schlüsselpfad verwiesen werden. Der Schlüsselpfad lässt sich mit folgendem Befehl abrufen:

      gcloud kms keys list \
        --location=$RUNTIME_LOCATION \
        --keyring=$DISK_KEY_RING_NAME \
        --project=$PROJECT_ID

      Der Schlüsselpfad sieht in etwa so aus:

      projects/PROJECT_ID/locations/RUNTIME_LOCATION/keyRings/my-disk-key-ring/cryptoKeys/my-disk-key
    3. Fügen Sie den Schlüsselpfad in eine Umgebungsvariable ein. Sie verwenden diese Variable in einem späteren Befehl:

      DISK_KEY_ID=YOUR_DISK_KEY_ID

      Beispiel: DISK_KEY_ID=projects/my-project/locations/us-west1/keyRings/my-key-ring/cryptoKeys/my-key

    4. Gewähren Sie dem Apigee-Dienst-Agent Zugriff auf den neuen Schlüssel:

      gcloud kms keys add-iam-policy-binding $DISK_KEY_NAME \
        --location $RUNTIME_LOCATION \
        --keyring $DISK_KEY_RING_NAME \
        --member serviceAccount:service-$PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com \
        --role roles/cloudkms.cryptoKeyEncrypterDecrypter \
        --project $PROJECT_ID

      Mit diesem Befehl wird der Schlüssel an den Apigee-Dienst-Agent gebunden.

    Weitere Informationen finden Sie unter Apigee-Verschlüsselungsschlüssel.

  5. Reservieren Sie einen IP-Bereich, der für die Erstellung der Apigee-Instanz verwendet wird.
  6. Erstellen Sie eine neue Laufzeitinstanz für Ihr Projekt. Senden Sie dazu eine POST-Anfrage an die Instances API von Apigee:

    Kein Datenstandort

    curl "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances" \
      -X POST -H "Authorization: Bearer $AUTH" \
      -H "Content-Type:application/json" \
      -d '{
        "name":"'"$INSTANCE_NAME"'",
        "location":"'"$RUNTIME_LOCATION"'",
        "diskEncryptionKeyName":"'"$DISK_KEY_ID"'",
        "consumerAcceptList":["'"$PROJECT_ID"'"]
      }'

    Datenstandort

    curl "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances" \
      -X POST -H "Authorization: Bearer $AUTH" \
      -H "Content-Type:application/json" \
      -d '{
        "name":"'"$INSTANCE_NAME"'",
        "location":"'"$RUNTIME_LOCATION"'",
        "diskEncryptionKeyName":"'"$DISK_KEY_ID"'",
        "consumerAcceptList":["'"$PROJECT_ID"'"]
      }'

    Wobei:

    • consumerAcceptList(Optional) Gibt eine Liste von Google Cloud-Projekt-IDs an, die eine private Verbindung zum Dienstanhang der Apigee-VPC herstellen können. Der Dienstanhang ist eine Entität, die mit Google Cloud Private Service Connect verwendet wird, um es Diensterstellern (in diesem Fall Apigee) zu ermöglichen, Dienste für Nutzer verfügbar zu machen (in diesem Fall ein oder mehrere Cloud-Projekte, die Ihnen gehören). Standardmäßig verwenden wir das Cloud-Projekt, das bereits Ihrer Apigee-Organisation zugeordnet ist. Beispiel: "consumerAcceptList": ["project1", "project2", "project3"]

      Beachten Sie, dass Sie auch die Liste der akzeptierten Projekte in der Instanz-UI festlegen und ändern können. Weitere Informationen finden Sie unter Instanzen verwalten.

    Diese Anfrage kann bis zu 20 Minuten dauern, da Apigee einen neuen Kubernetes-Cluster erstellen und starten, die Apigee-Ressourcen in diesem Cluster installieren und den Lastenausgleich einrichten muss.

    Wenn Apigee einen Fehler zurückgibt, finden Sie weitere Informationen unter Neue Instanz erstellen.

  7. Führen Sie den folgenden Befehl aus, um den Status Ihrer Anfrage zur Erstellung einer Laufzeitinstanz zu prüfen. Wenn der Status ACTIVE lautet, können Sie mit dem nächsten Schritt fortfahren.

    Kein Datenstandort

    curl -i -X GET -H "Authorization: Bearer $AUTH" \
        "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances/$INSTANCE_NAME"

    Datenstandort

    curl -i -X GET -H "Authorization: Bearer $AUTH" \
        "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances/$INSTANCE_NAME"

Schritt 7: Umgebung erstellen

So erstellen Sie eine Umgebung und hängen sie der Laufzeit über die Befehlszeile an:

  1. Definieren Sie Umgebungsvariablen für diesen Abschnitt. Welche Umgebungsvariablen Sie erstellen, hängt davon ab, ob Sie eine Umgebung für eine Abo- oder eine Pay as you go-Organisation erstellen.

    Abo

    Erstellen Sie für eine Abo-Umgebung die folgenden Variablen:

    ENVIRONMENT_NAME="YOUR_ENV_NAME"
    ENV_GROUP_NAME="YOUR_ENV_GROUP_NAME"
    ENV_GROUP_HOSTNAME="YOUR_ENV_GROUP_HOSTNAME"

    Wobei:

    • ENVIRONMENT_NAME ist ein Stringname. Beispiel: test
    • ENV_GROUP_NAME ist ein Stringname. Beispiel: test-group
    • ENV_GROUP_HOSTNAME ist ein gültiger Domain-Hostname. Beispiel: foo.example.com

    Pay as you go

    Erstellen Sie für eine „Pay as you go“-Umgebung die folgenden Variablen:

    ENVIRONMENT_NAME="YOUR_ENV_NAME"
    ENVIRONMENT_TYPE="YOUR_ENV_TYPE"
    ENV_GROUP_NAME="YOUR_ENV_GROUP_NAME"
    ENV_GROUP_HOSTNAME="YOUR_ENV_GROUP_HOSTNAME"

    Wobei:

    • ENVIRONMENT_NAME ist ein Stringname. Beispiel: test
    • ENVIRONMENT_TYPE ist der Umgebungstyp für diese Umgebung und gilt nur für „Pay as you go“-Nutzer. Diese müssen einen der folgenden Werte angeben: BASE, INTERMEDIATE oder COMPREHENSIVE. Andere Nutzer sollten den Umgebungstyp weglassen.
    • ENV_GROUP_NAME ist ein Stringname. Beispiel: test-group
    • ENV_GROUP_HOSTNAME ist ein gültiger Domain-Hostname. Beispiel: foo.example.com
  2. Neue Umgebung mit der Environments API erstellen Welche Befehle Sie verwenden, hängt davon ab, ob Sie eine Umgebung für eine Abo- oder eine Pay as you go-Organisation erstellen.

    Abo

    Verwenden Sie für eine neue Abo-Umgebung den folgenden Befehl:

    Kein Datenstandort

    curl "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/environments" \
        -H "Authorization: Bearer $AUTH" \
        -X POST \
        -H "Content-Type:application/json" \
        -d '{
          "name":"'"$ENVIRONMENT_NAME"'"
      }'

    Datenstandort

    curl "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$PROJECT_ID/environments" \
        -H "Authorization: Bearer $AUTH" \
        -X POST \
        -H "Content-Type:application/json" \
        -d '{
          "name":"'"$ENVIRONMENT_NAME"'"
      }'

    Apigee erstellt eine neue Umgebung.

    Pay as you go

    Verwenden Sie für eine neue „Pay as you go“-Umgebung den folgenden Befehl:

    Kein Datenstandort

    curl "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/environments" \
        -H "Authorization: Bearer $AUTH" \
        -X POST \
        -H "Content-Type:application/json" \
        -d '{
          "name":"'"$ENVIRONMENT_NAME"'",
          "type":"'"$ENVIRONMENT_TYPE"'"
      }'

    Datenstandort

    curl "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$PROJECT_ID/environments" \
        -H "Authorization: Bearer $AUTH" \
        -X POST \
        -H "Content-Type:application/json" \
        -d '{
          "name":"'"$ENVIRONMENT_NAME"'",
          "type":"'"$ENVIRONMENT_TYPE"'"
      }'

    Apigee erstellt eine neue Umgebung.

  3. Bevor Sie fortfahren, prüfen Sie, ob Apigee die neue Umgebung erstellt hat. Rufen Sie dazu die Environments API auf:

    Kein Datenstandort

    curl -i -H "Authorization: Bearer $AUTH" \
        "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/environments"

    Datenstandort

    curl -i -H "Authorization: Bearer $AUTH" \
        "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$PROJECT_ID/environments"

    Apigee antwortet mit einer Liste der verfügbaren Umgebungen. Wenn Ihr Umgebungsname beispielsweise test lautet, antwortet Apigee mit Folgendem:

    [
      "test"
    ]
  4. Hängen Sie die neue Umgebung an die Laufzeitinstanz an:

    Kein Datenstandort

    curl "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances/$INSTANCE_NAME/attachments" \
        -X POST -H "Authorization: Bearer $AUTH" \
        -H "content-type:application/json" \
        -d '{
          "environment":"'"$ENVIRONMENT_NAME"'"
        }'

    Datenstandort

    curl "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances/$INSTANCE_NAME/attachments" \
        -X POST -H "Authorization: Bearer $AUTH" \
        -H "content-type:application/json" \
        -d '{
          "environment":"'"$ENVIRONMENT_NAME"'"
        }'

    Dieser Vorgang kann einige Minuten dauern. Führen Sie folgenden Befehl aus, um zu prüfen, ob der Anhang abgeschlossen ist:

    Kein Datenstandort

    curl -i -H "Authorization: Bearer $AUTH" \
      "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances/$INSTANCE_NAME/attachments"

    Datenstandort

    curl -i -H "Authorization: Bearer $AUTH" \
      "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances/$INSTANCE_NAME/attachments"

    Wenn die Ausgabe so aussieht, können Sie mit dem nächsten Schritt fortfahren:

    {
      "attachments": [
        {
          "name": "ed628782-c893-4095-b71c-f4731805290a",
          "environment": "test",
          "createdAt": "1641604447542"
        }
      ]
    }
  5. Erstellen Sie mit dem folgenden Befehl eine neue Umgebungsgruppe. Weitere Informationen finden Sie unter Umgebungen und Umgebungsgruppen.

    Kein Datenstandort

    curl "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/envgroups" \
        -H "Authorization: Bearer $AUTH" \
        -X POST \
        -H "Content-Type:application/json" \
        -d '{
          "name": "'"$ENV_GROUP_NAME"'",
          "hostnames":["'"$ENV_GROUP_HOSTNAME"'"]
      }'

    Datenstandort

    curl "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$PROJECT_ID/envgroups" \
        -H "Authorization: Bearer $AUTH" \
        -X POST \
        -H "Content-Type:application/json" \
        -d '{
          "name": "'"$ENV_GROUP_NAME"'",
          "hostnames":["'"$ENV_GROUP_HOSTNAME"'"]
      }'
  6. Warten Sie, bis der Vorgang abgeschlossen ist. Sie können dann den Status der neuen Gruppe mithilfe einer Anfrage wie der folgenden prüfen:

    Kein Datenstandort

    curl -i -H "Authorization: Bearer $AUTH" \
        "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/envgroups/$ENV_GROUP_NAME"

    Datenstandort

    curl -i -H "Authorization: Bearer $AUTH" \
        "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$PROJECT_ID/envgroups/$ENV_GROUP_NAME"
  7. Hängen Sie die neue Umgebung mit dem folgenden Befehl an die neue Umgebungsgruppe an:

    Kein Datenstandort

    curl "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/envgroups/$ENV_GROUP_NAME/attachments" \
        -X POST \
        -H "Authorization: Bearer $AUTH" \
        -H "content-type:application/json" \
        -d '{
          "environment":"'"$ENVIRONMENT_NAME"'"
      }'

    Datenstandort

    curl "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$PROJECT_ID/envgroups/$ENV_GROUP_NAME/attachments" \
        -X POST \
        -H "Authorization: Bearer $AUTH" \
        -H "content-type:application/json" \
        -d '{
          "environment":"'"$ENVIRONMENT_NAME"'"
      }'
  8. Rufen Sie diese API auf, um den Status des Vorgangs zu überprüfen:

    Kein Datenstandort

    curl -H "Authorization: Bearer $AUTH" \
        "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/envgroups/$ENV_GROUP_NAME/attachments"

    Datenstandort

    curl -H "Authorization: Bearer $AUTH" \
        "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$PROJECT_ID/envgroups/$ENV_GROUP_NAME/attachments"

Schritt 8: Routing konfigurieren

In diesem Schritt konfigurieren Sie, wie Clientanwendungen mit Apigee kommunizieren. Client-zu-Apigee-Traffic wird auch als Northbound-Traffic bezeichnet. Zu den Konfigurationsoptionen für den Northbound-Traffic gehören die folgenden. Rufen Sie die Konfigurationsoption auf, die Sie verwenden möchten, und führen Sie die Schritte für diese Option aus:

Zugriffstyp Beschreibung des Konfigurations- und Bereitstellungsprozesses
Intern mit VPC-Peering

Nur internen Zugriff auf Ihre API-Proxys erlauben.

Sie müssen eine neue VM im Netzwerk erstellen und eine Verbindung zu ihr herstellen. Von der neuen VM aus können Sie eine Anfrage an einen Apigee API-Proxy senden.

Extern mit MIG

Erlaubt den externen Zugriff auf API-Proxys.

Verwenden Sie eine verwaltete Instanzgruppe (Managed Instance Group, MIG), um API-Traffic vom Backend-Dienst eines globalen Load-Balancers an Apigee zu senden. Mit dieser Konfiguration kann Apigee nur eine Verbindung zur Peering-VPC herstellen. Mit dieser Konfiguration können Sie Apigee API-Proxy-Anfragen von jeder netzwerkfähigen Maschine aus senden.

Intern mit PSC (neu)

Erlauben Sie mit Private Service Connect (PSC) nur internen Zugriff auf die API-Proxys Ihrer Google Cloud-Projekte.

PSC ermöglicht eine private Verbindung zwischen einem Dienstersteller (Apigee) und einem Dienstnutzer (dem Peering-VPC-Projekt und/oder einem oder mehreren anderen Cloud-Projekten, über die Sie die Kontrolle haben). Bei dieser Methode werden Anfragen entweder über einen Dienst-Endpunkt oder einen regionalen internen Load Balancer an einen einzigen Anhangspunkt geleitet, der als Dienstanhang bezeichnet wird. Mit dieser Konfiguration können Ihre internen Clients Apigee API-Proxyanfragen von einem beliebigen netzwerkfähigen Computer senden.

Extern mit PSC (neu)

Erlaubt den externen Zugriff auf API-Proxys mithilfe von Private Service Connect (PSC).

Verwenden Sie Private Service Connect (PSC), um eine private Verbindung zwischen einem Dienstersteller (Apigee) und einem Dienstnutzer (dem Peering-VPC-Projekt und/oder einem oder mehreren anderen Cloud-Projekten zu ermöglichen, über die Sie die Kontrolle haben). Bei dieser Methode werden Anfragen entweder über einen globalen externen Load Balancer oder einen regionalen externen Load Balancer an einen einzelnen Zugriffspunkt namens Dienstanhang weitergeleitet. Mit dieser Konfiguration können Sie Apigee API-Proxy-Anfragen von jeder netzwerkfähigen Maschine aus senden.

Jeder dieser Routing-Ansätze wird in der folgenden Anleitung beschrieben.

Internes Routing (VPC)

Beim Routing von Traffic von internen Clients zu Apigee können Sie die TLS-Beendigung verwenden oder weglassen:

  • TLS-Optionen: Sie haben zwei Möglichkeiten, um API-Proxyaufrufe von internen Clients mit aktiviertem TLS auszuführen:
    • (Option 1) Konfigurieren Sie einen internen Load-Balancer (ILB):
      1. Erstellen Sie in Ihrem Projekt eine verwaltete Instanzgruppe (MIG). Erstellen Sie die MIG gemäß den Schritten 8a ,8b und 8c im Tab Externes Routing (MIG).
      2. Erstellen und konfigurieren Sie einen internen HTTPS(S)-Load-Balancer (ILB) und hängen Sie die von Ihnen erstellte MIG an den Backend-Dienst des internen Load-Balancers an, wie unter Internes HTTP(S)-Load-Balancing mit VM-Instanzgruppen-Backends einrichten beschrieben. Mit der ILB-Konfiguration haben Sie die vollständige Kontrolle über die mit dem ILB verwendeten CA-Zertifikate.
      3. Wechseln Sie zu API-Proxy mit ausschließlich internem Zugriff aufrufen, um die Einrichtung zu testen.
    • (Option 2) Verwenden Sie den internen, standardmäßigen vollständig qualifizierten Domainnamen und die interne Load-Balancer-IP der Apigee-Instanz. Dieser Fall wird nur zu Testzwecken empfohlen und nicht für eine Produktionsumgebung. In diesem Fall werden von Apigee erstellte selbst signierte Zertifikate mit dem internen Load-Balancer von Apigee verwendet und Sie können sie nicht ändern. Weitere Informationen finden Sie unter API-Proxy mit ausschließlich internem Zugriff aufrufen.
  • Nicht-TLS-Option: Wenn Sie die TLS-Beendigung nicht benötigen, können Sie API-Proxys aufrufen, bei denen der Client TLS deaktiviert. Wenn Sie beispielsweise die Option -k mit cURL verwenden, können Sie TLS deaktivieren. Weitere Informationen finden Sie unter API-Proxy mit ausschließlich internem Zugriff aufrufen.

Externes Routing (MIG)

In diesem Abschnitt wird beschrieben, wie Sie das Routing konfigurieren, um externen Zugriff auf API-Proxys mithilfe einer verwalteten Instanzgruppe (Managed Instance Group, MIG) zu ermöglichen, um API-Traffic vom Backend-Dienst eines globalen Load-Balancers an Apigee zu senden. Dies ist erforderlich, bevor eine Anfrage von einem externen Client an Ihre Apigee-Laufzeitinstanz gesendet werden kann.

Das Verfahren läuft in der Regel so ab:

Schritt 8a: Privaten Google-Zugriff für ein Subnetz Ihres VPC-Netzwerks aktivieren
Schritt 8b: Umgebungsvariablen einrichten
Schritt 8c: Verwaltete Instanzgruppe erstellen
Schritt 8d: SSL-Zertifikat und Schlüssel für den Load-Balancer erstellen
Schritt 8e: Globalen Load-Balancer erstellen
Schritt 8f: Reservierte IP-Adresse abrufen und Firewallregeln erstellen

Jeder dieser Schritte wird in den folgenden Abschnitten beschrieben.

Schritt 8a: Privaten Google-Zugriff für ein Subnetz Ihres VPC-Netzwerks aktivieren

Führen Sie die Schritte unter Privaten Google-Zugriff aktivieren aus, um den privaten Google-Zugriff für ein Subnetz Ihres VPC-Netzwerks zu aktivieren.

Schritt 8b: Umgebungsvariablen einrichten

In der Anleitung in diesem Abschnitt werden Umgebungsvariablen verwendet, um auf wiederholt verwendete Strings zu verweisen. Wir empfehlen, diese festzulegen, bevor Sie fortfahren:

MIG_NAME=apigee-mig-MIG_NAME   # You can choose a different name if you like
VPC_NAME=default       # If you are using a shared VPC, use the shared VPC name
VPC_SUBNET=default     # Private Google Access must be enabled for this subnet
REGION=RUNTIME_REGION        # The same region as your Apigee runtime instance
APIGEE_ENDPOINT=APIGEE_INSTANCE_IP     # See the tip below for details on getting this IP address value

Diese Variablen werden Sie in den nachfolgenden Vorgängen mehrmals verwenden. Wenn Sie mehrere Regionen konfigurieren möchten, erstellen Sie Variablen mit für jede Region spezifischen Werten.

Schritt 8c: Verwaltete Instanzgruppe erstellen

In diesem Schritt erstellen und konfigurieren Sie eine verwaltete Instanzgruppe (MIG). In einem späteren Schritt fügen Sie die MIG einem Back-End-Dienst hinzu, der mit einem globalen Load-Balancer verbunden ist. Eine MIG ist erforderlich, um API-Traffic vom Back-End-Dienst des globalen Load-Balancers an Apigee zu senden.

So erstellen Sie eine MIG:

  1. Erstellen Sie mit dem folgenden Befehl eine Instanzvorlage.
    gcloud compute instance-templates create $MIG_NAME \
    --project $PROJECT_ID \
    --region $REGION \
    --network $VPC_NAME \
    --subnet $VPC_SUBNET \
    --tags=https-server,apigee-mig-proxy,gke-apigee-proxy \
    --machine-type e2-medium --image-family debian-10 \
    --image-project debian-cloud --boot-disk-size 20GB \
    --no-address \
    --metadata ENDPOINT=$APIGEE_ENDPOINT,startup-script-url=gs://apigee-5g-saas/apigee-envoy-proxy-release/latest/conf/startup-script.sh

    Wie Sie anhand dieses Befehls sehen können, sind Maschinen vom Typ e2-medium. Sie führen Debian 10 aus und haben 20 GB Speicherplatz. Das Skript startup-script.sh konfiguriert die MIG so, dass eingehender Traffic vom Load-Balancer an die Apigee-Instanz weitergeleitet wird.

  2. Erstellen Sie mit folgendem Befehl eine verwaltete Instanzgruppe:
    gcloud compute instance-groups managed create $MIG_NAME \
    --project $PROJECT_ID --base-instance-name apigee-mig \
    --size 2 --template $MIG_NAME --region $REGION
  3. Konfigurieren Sie das Autoscaling für die Gruppe mit folgendem Befehl:
    gcloud compute instance-groups managed set-autoscaling $MIG_NAME \
    --project $PROJECT_ID --region $REGION --max-num-replicas 3 \
    --target-cpu-utilization 0.75 --cool-down-period 90
  4. Definieren Sie mit folgendem Befehl einen benannten Port:
    gcloud compute instance-groups managed set-named-ports $MIG_NAME \
    --project $PROJECT_ID --region $REGION --named-ports https:443

Schritt 8d: SSL-Zertifikat und Schlüssel für den Load-Balancer erstellen

Die Anmeldedaten müssen nur einmal erstellt werden, unabhängig davon, ob Sie in einer oder mehreren Regionen installieren. Später verknüpfen Sie diese Anmeldedaten mit dem Ziel-HTTPS-Proxy des Load-Balancers.

Sie können die Anmeldedaten mit folgendem Befehl erstellen:

Weitere Informationen zum Erstellen und Verwenden von SSL-Zertifikaten für den Google Cloud-Load-Balancer finden Sie unter SSL-Zertifikate und Übersicht über SSL-Zertifikate.

Im folgenden Beispiel erstellen wir ein von Google verwaltetes SSL-Zertifikat:

  1. Erstellen Sie folgende Umgebungsvariablen:
    CERTIFICATE_NAME=YOUR_CERT_NAME
    DOMAIN_HOSTNAME=YOUR_DOMAIN_HOSTNAME 

    Setzen Sie DOMAIN_HOSTNAME auf einen gültigen Domainnamen, den Sie registriert haben. In einem späteren Schritt erhalten Sie die IP-Adresse des Load-Balancers und aktualisieren den Domain-A-Eintrag so, dass er auf diese Adresse verweist. Ein Domainhostname könnte beispielsweise so aussehen: foo.example.com.

  2. Führen Sie den Befehl gcloud compute ssl-certificates create aus:
    gcloud compute ssl-certificates create $CERTIFICATE_NAME \
      --domains=$DOMAIN_HOSTNAME \
      --project $PROJECT_ID \
      --global

    Es kann bis zu einer Stunde dauern, bis das Zertifikat bereitgestellt wird. Führen Sie folgenden Befehl aus, um den Status der Bereitstellung zu überprüfen:

    gcloud compute ssl-certificates describe $CERTIFICATE_NAME \
     --global \
     --format="get(name,managed.status, managed.Status)"

Schritt 8e: Globalen Load-Balancer erstellen

  1. Systemdiagnose erstellen:
    gcloud compute health-checks create https HEALTH_CHECK_NAME \
    --project $PROJECT_ID --port 443 --global \
    --request-path /healthz/ingress

    Anhand dieser Systemdiagnose können Sie prüfen, ob der Back-End-Dienst ausgeführt wird. Informationen zum Konfigurieren erweiterter Systemdiagnosen für einen bestimmten Proxy finden Sie unter Systemdiagnosen durchführen.

  2. Erstellen Sie einen Back-End-Dienst:
    gcloud compute backend-services create PROXY_BACKEND_NAME \
    --project $PROJECT_ID \
    --protocol HTTPS \
    --health-checks HEALTH_CHECK_NAME \
    --port-name https \
    --timeout 302s \
    --connection-draining-timeout 300s \
    --global
  3. Fügen Sie Ihrem Back-End-Dienst die MIG mit dem folgenden Befehl hinzu:
    gcloud compute backend-services add-backend PROXY_BACKEND_NAME \
    --project $PROJECT_ID --instance-group $MIG_NAME \
    --instance-group-region $REGION \
    --balancing-mode UTILIZATION --max-utilization 0.8 --global
  4. Erstellen Sie mit folgendem Befehl eine Load-Balancing-URL-Zuordnung:
    gcloud compute url-maps create MIG_PROXY_MAP_NAME \
    --project $PROJECT_ID --default-service PROXY_BACKEND_NAME
  5. Erstellen Sie mit folgendem Befehl einen Ziel-HTTPS-Proxy für das Load-Balancing:
    gcloud compute target-https-proxies create MIG_HTTPS_PROXY_NAME \
    --project $PROJECT_ID --url-map MIG_PROXY_MAP_NAME \
    --ssl-certificates $CERTIFICATE_NAME

Schritt 8f: Reservierte IP-Adresse abrufen und Firewallregeln erstellen

Sie müssen dem Load-Balancer eine IP-Adresse zuweisen und dann Regeln erstellen, die dem Load-Balancer den Zugriff auf die MIG ermöglichen. Dieser Schritt muss nur einmal ausgeführt werden, unabhängig davon, ob Sie die Installation in einer oder mehreren Regionen vornehmen.

  1. Reservieren Sie eine IP-Adresse für den Load-Balancer:
    gcloud compute addresses create ADDRESSES_NAME \
    --project $PROJECT_ID \
    --ip-version=IPV4 \
    --global
  2. Erstellen Sie mit folgendem Befehl eine globale Weiterleitungsregel:
    gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
    --project $PROJECT_ID --address ADDRESSES_NAME --global \
    --target-https-proxy MIG_HTTPS_PROXY_NAME --ports 443
  3. Rufen Sie mit folgendem Befehl eine reservierte IP-Adresse ab:
    gcloud compute addresses describe ADDRESSES_NAME \
    --project $PROJECT_ID --format="get(address)" --global
  4. Wichtig: Rufen Sie die Website, den DNS-Host oder den ISP auf, bei dem Ihre DNS-Einträge verwaltet werden, und achten Sie darauf, dass der DNS-Eintrag Ihrer Domain in die IP-Adresse des Google Cloud Load-Balancers aufgelöst wird. Diese Adresse ist der im letzten Schritt zurückgegebene IP-Wert. Weitere Informationen finden Sie unter DNS-A- und AAAA-Einträge aktualisieren, sodass sie auf die IP-Adresse des Load-Balancers verweisen.
  5. Erstellen Sie mithilfe des folgenden Befehls eine Firewallregel, mit der der Load-Balancer auf die MIG zugreifen kann:
    gcloud compute firewall-rules create FIREWALL_RULE_NAME \
    --description "Allow incoming from GLB on TCP port 443 to Apigee Proxy" \
    --project $PROJECT_ID --network $VPC_NAME --allow=tcp:443 \
    --source-ranges=130.211.0.0/22,35.191.0.0/16 --target-tags=gke-apigee-proxy

    Beachten Sie, dass die IP-Adressbereiche 130.211.0.0/22 und 35.191.0.0/16 die Quell-IP-Adressbereiche für Google Load Balancing sind. Mit dieser Firewallregel kann Google Cloud Load-Balancing Systemdiagnoseanfragen an die MIG senden.

Die Bereitstellung von Apigee ist abgeschlossen. Gehen Sie zu Beispielproxy bereitstellen.

Internes Routing (PSC)

In diesem Abschnitt wird erläutert, wie Sie mit Private Service Connect (PSC) nur internen Zugriff auf Ihre API-Proxys von Ihren Google Cloud-Projekten zulassen.

Sie haben folgende Optionen zum Konfigurieren des internen Zugriffs mit PSC:

  • Dienstendpunkt: Anfragen werden über einen Dienstendpunkt an einen einzelnen Punkt des Anhangs weitergeleitet, der als Dienstanhang bezeichnet wird.
  • Interner regionaler Load Balancer: Anfragen werden über einen regionalen internen HTTP(S)-Load-Balancer weitergeleitet. Siehe auch Globales oder regionales Load Balancing.

Wählen Sie unten den Tab für Ihre Konfiguration aus und folgen Sie der Anleitung:

Dienstendpunkt

PSC-Dienstendpunkt für den Dienstanhang erstellen

  1. Rufen Sie den Dienstanhang aus der zuvor erstellten Instanz ab:

    Kein Datenstandort

    curl -i -X GET -H "Authorization: Bearer $AUTH" \
    "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances"

    Datenstandort

    curl -i -X GET -H "Authorization: Bearer $AUTH" \
    "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances"

    In der folgenden Beispielausgabe ist der Wert serviceAttachment fett dargestellt:

    {
      "instances": [
        {
          "name": "us-west1",
          "location": "us-west1",
          "host": "10.82.192.2",
          "port": "443",
          "createdAt": "1645731488019",
          "lastModifiedAt": "1646504754219",
          "diskEncryptionKeyName": "projects/my-project/locations/us-west1/keyRings/us-west1/cryptoKeys/dek",
          "state": "ACTIVE",
          "peeringCidrRange": "SLASH_22",
          "runtimeVersion": "1-7-0-20220228-190814",
          "ipRange": "10.82.192.0/22,10.82.196.0/28",
          "consumerAcceptList": [
            "875609189304"
          ],
          "serviceAttachment": "projects/bfac74a67a320c43a12p-tp/regions/us-west1/serviceAttachments/apigee-us-west1-crw1"
        }
      ]
    }
  2. Erstellen Sie einen PSC-Dienstendpunkt, der auf den Dienstanhang verweist, den Sie im vorherigen Schritt aus dem Antworttext der Instanz erhalten haben, wie unter Private Service Connect-Endpunkt erstellen beschrieben.
  3. Informationen zum Testen der Einrichtung finden Sie unter API-Proxy nur mit internem Zugriff aufrufen.

Internes regionales Load Balancing

Schritt 8a: Umgebungsvariablen einrichten

In der Anleitung in diesem Abschnitt werden Umgebungsvariablen verwendet, um auf wiederholt verwendete Strings zu verweisen. Achten Sie darauf, dass die Variablen unter Umgebungsvariablen definieren festgelegt werden.

Legen Sie außerdem die folgenden Umgebungsvariablen fest:

NEG_NAME=YOUR_NEG_NAME"
TARGET_SERVICE=YOUR_TARGET_SERVICE"
NETWORK_NAME=YOUR_NETWORK_NAME"
SUBNET_NAME=YOUR_SUBNET_NAME"

Wobei:

  • NEG_NAME: Ein Name für die Netzwerk-Endpunktgruppe.
  • TARGET_SERVICE: Der Dienstanhang, mit dem Sie eine Verbindung herstellen möchten. Beispiel: projects/bfac7497a40c32a12p-tp/regions/us-west1/serviceAttachments/apigee-us-west1-crw7
  • NETWORK_NAME: (Optional) Name des Netzwerks, in dem die NEG erstellt wird. Wenn Sie diesen Parameter weglassen, wird das Projektnetzwerk default verwendet.
  • SUBNET_NAME: Name des Subnetzes, das für die private Verbindung zum Ersteller verwendet wird. Die Subnetzgröße kann klein sein: Die PSC NEG benötigt nur eine IP-Adresse aus dem Subnetz. Für Apigee ist nur eine PSC-NEG pro Region erforderlich. Das Subnetz kann von VMs oder anderen Entitäten gemeinsam genutzt und verwendet werden. Wenn kein Subnetz angegeben ist, können Netzwerkendpunkte zu einem Subnetzwerk in der Region gehören, in der die Netzwerk-Endpunktgruppe erstellt wird.

Schritt 8b: Nur-Proxy-Subnetz erstellen

gcloud compute networks subnets create testproxyonlysubnet \
--purpose=REGIONAL_MANAGED_PROXY --role=ACTIVE --region=$RUNTIME_REGION --network=$NETWORK_NAME \
--range=100.0.0.0/24 --project=$PROJECT_ID

Schritt 8c: Netzwerk-Endpunktgruppe (NEG) erstellen

  1. Rufen Sie den Dienstanhang aus der zuvor erstellten Instanz ab:

    Kein Datenstandort

    curl -i -X GET -H "Authorization: Bearer $AUTH" \
    "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances"

    Datenstandort

    curl -i -X GET -H "Authorization: Bearer $AUTH" \
    "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances"

    In der folgenden Beispielausgabe ist der Wert serviceAttachment fett dargestellt:

    {
    "instances": [
      {
        "name": "us-west1",
        "location": "us-west1",
        "host": "10.82.192.2",
        "port": "443",
        "createdAt": "1645731488019",
        "lastModifiedAt": "1646504754219",
        "diskEncryptionKeyName": "projects/my-project/locations/us-west1/keyRings/us-west1/cryptoKeys/dek",
        "state": "ACTIVE",
        "peeringCidrRange": "SLASH_22",
        "runtimeVersion": "1-7-0-20220228-190814",
        "ipRange": "10.82.192.0/22,10.82.196.0/28",
        "consumerAcceptList": [
          "875609189304"
        ],
      "serviceAttachment": "projects/bfac7497a40c32a12p-tp/regions/us-west1/serviceAttachments/apigee-us-west1-crw7"
      }
    ]
    }
  2. Erstellen Sie eine Private Service Connect NEG, die auf den Dienstanhang verweist, den Sie im vorherigen Schritt aus dem Antworttext der Instanz abgerufen haben.

    gcloud compute network-endpoint-groups create $NEG_NAME \
    --network-endpoint-type=private-service-connect \
    --psc-target-service=$TARGET_SERVICE \
    --region=$RUNTIME_LOCATION \
    --project=$PROJECT_ID
    

    $PROJECT_ID Das Cloud-Projekt, das bereits mit Ihrer Apigee-Organisation verknüpft ist, oder ein Cloud-Projekt, das in consumerAcceptlist enthalten war, als die Apigee-Laufzeitinstanz erstellt wurde.

Schritt 8d: Regionalen internen Load Balancer konfigurieren

  1. Reservieren Sie eine interne IPv4-Adresse für den Load Balancer.
    gcloud compute addresses create ADDRESS_NAME \
    --ip-version=IPV4 --subnet=$SUBNET_NAME \
    --region=$RUNTIME_LOCATION --project=$PROJECT_ID

    Ersetzen Sie ADDRESS_NAME durch einen Namen für die IP-Adressressource

    Führen Sie diesen Befehl aus, um die reservierte IP-Adresse aufzurufen:

    gcloud compute addresses describe ADDRESS_NAME \
    --format="get(address)" --region=$RUNTIME_LOCATION --project=$PROJECT_ID
  2. Erstellen Sie einen neuen Backend-Dienst für die NEG.
    gcloud compute backend-services create BACKEND_SERVICE_NAME \
    --load-balancing-scheme=INTERNAL_MANAGED \
    --protocol=HTTPS \
    --region=$RUNTIME_REGION \
    --project=$PROJECT_ID
  3. Ersetzen Sie BACKEND_SERVICE_NAME durch den Namen des Backend-Dienstes.

  4. Fügen Sie den Backend-Dienst zur NEG hinzu.
    gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
    --network-endpoint-group=$NEG_NAME \
    --region=$RUNTIME_LOCATION \
    --project=$PROJECT_ID

    Ersetzen Sie Folgendes:

    • NEG_NAME ist der Name der Netzwerk-Endpunktgruppe.
    • BACKEND_SERVICE_NAME durch den Namen des Back-End-Dienstes.
  5. Zum Erstellen eines HTTPS-Load-Balancers benötigen Sie eine SSL-Zertifikatsressource, die im HTTPS-Proxy verwendet wird.

    Verwenden Sie diesen Befehl, um eine selbstverwaltete SSL-Zertifikatsressource zu erstellen. Zum Erstellen eines selbstverwalteten SSL-Zertifikats benötigen Sie eine lokale private Schlüsseldatei und eine lokale Zertifikatsdatei. Wenn Sie diese Dateien erstellen müssen, finden Sie weitere Informationen unter Schritt 1 der Verwendung selbstverwalteter SSL-Zertifikate.

    gcloud compute ssl-certificates create CERTIFICATE \
    --certificate LB_CERT \
    --private-key LB_PRIVATE_KEY
    --region=$RUNTIME_LOCATION --project=$PROJECT_ID

    Ersetzen Sie Folgendes:

    • CERTIFICATE ist ein Name für das Zertifikat.
    • LB_CERT ist der Pfad zur Zertifikatsdatei im PEM-Format für Ihr selbstverwaltetes Zertifikat.
    • LB_PRIVATE_KEY ist der Pfad zur privaten Schlüsseldatei im PEM-Format für Ihr selbstverwaltetes Zertifikat.
  6. Erstellen Sie eine URL-Zuordnung für den Load-Balancer.

    Eine URL-Zuordnung muss auf einen Standard-Backend-Dienst verweisen. Legen Sie den Backend-Dienst fest, den Sie gerade als Standard erstellt haben.

    gcloud compute url-maps create URL_MAP_NAME \
    --default-service=DEFAULT_BACKEND_SERVICE_NAME \
    --global --project=$PROJECT_ID

    Ersetzen Sie Folgendes:

    • URL_MAP_NAME ist ein Name für die URL-Zuordnung.
    • DEFAULT_BACKEND_SERVICE_NAME ist der Name des Standard-Backend-Dienstes des Load-Balancers. Die Standardeinstellung wird verwendet, wenn keine Hostregel mit dem angeforderten Hostnamen übereinstimmt.
  7. Verwenden Sie die SSL-Zertifikatsressource, um einen Ziel-HTTPS-Proxy zu erstellen.

    gcloud compute target-https-proxies create PROXY_NAME \
    --url-map=URL_MAP_NAME \
    --ssl-certificates=CERTIFICATE \
    --region=$RUNTIME_LOCATION --project=$PROJECT_ID

    Ersetzen Sie Folgendes:

    • PROXY_NAME ist ein Name für den Ziel-HTTPS-Proxy.
    • URL_MAP_NAME ist der Name der URL-Zuordnung.
    • CERTIFICATE ist der Name der Zertifikatsressource.
  8. Erstellen Sie die Weiterleitungsregel.
    gcloud compute forwarding-rules create FWD_RULE \
    --load-balancing-scheme=INTERNAL_MANAGED \
    --address=ADDRESS_NAME \
    --target-https-proxy=PROXY_NAME \
    --ports=443 \
    --target-https-proxy-region=$RUNTIME_REGION \
    --region=$RUNTIME_REGION
    --project=$PROJECT_ID

    Ersetzen Sie Folgendes:

    • FWD_RULE ist ein Name für die Weiterleitungsregel.
    • ADDRESS_NAME ist die IP-Adressressource, die Sie für die Weiterleitungsregel reserviert haben.
    • PROXY_NAME ist der Name des HTTPS-Ziel-Proxys.
  9. Die Bereitstellung von Apigee ist abgeschlossen. Gehen Sie zu Beispielproxy bereitstellen.

Externes Routing (PSC)

In diesem Abschnitt wird beschrieben, wie Sie das externe Routing mit Private Service Connect (PSC) konfigurieren, um die Kommunikation zwischen Apigee und Ihren verwalteten VPCs zu ermöglichen. Dies ist erforderlich, bevor eine Anfrage von einem externen Client an Ihre Apigee-Laufzeitinstanz gesendet werden kann.

Schritt 8b: NEG erstellen und Load Balancer konfigurieren

Sie können einen globalen oder regionalen Load Balancer erstellen.

Globaler externer Load Balancer

Konfigurieren Sie einen globalen externen HTTP(S)-Load-Balancer (das Load-Balancing-Schema ist auf EXTERNAL_MANAGED gesetzt).

Obwohl die Private Service Connect-NEG regional ist, sind alle anderen Load-Balancing-Komponenten in dieser Konfiguration global.

  1. Achten Sie darauf, dass die Umgebungsvariablen unter Umgebungsvariablen definieren festgelegt sind.
  2. Rufen Sie den Dienstanhang aus der zuvor erstellten Instanz ab:

    Kein Datenstandort

    curl -i -X GET -H "Authorization: Bearer $AUTH" \
        "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances"

    Datenstandort

    curl -i -X GET -H "Authorization: Bearer $AUTH" \
        "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances"

    In der folgenden Beispielausgabe ist der Wert serviceAttachment fett dargestellt:

    {
      "instances": [
        {
          "name": "us-west1",
          "location": "us-west1",
          "host": "10.82.192.2",
          "port": "443",
          "createdAt": "1645731488019",
          "lastModifiedAt": "1646504754219",
          "diskEncryptionKeyName": "projects/my-project/locations/us-west1/keyRings/us-west1/cryptoKeys/dek",
          "state": "ACTIVE",
          "peeringCidrRange": "SLASH_22",
          "runtimeVersion": "1-7-0-20220228-190814",
          "ipRange": "10.82.192.0/22,10.82.196.0/28",
          "consumerAcceptList": [
            "875609189304"
          ],
          "serviceAttachment": "projects/bfac7497a40c32a12p-tp/regions/us-west1/serviceAttachments/apigee-us-west1-crw7"
        }
      ]
    }
  3. Erstellen Sie eine Private Service Connect NEG, die auf den Dienstanhang verweist, den Sie im vorherigen Schritt aus dem Antworttext der Instanz abgerufen haben.

      gcloud compute network-endpoint-groups create NEG_NAME \
        --network-endpoint-type=private-service-connect \
        --psc-target-service=TARGET_SERVICE \
        --region=$RUNTIME_LOCATION \
        --network=NETWORK_NAME \
        --subnet=SUBNET_NAME \
        --project=$PROJECT_ID
    

    Ersetzen Sie Folgendes:

    • NEG_NAME ist ein Name für die Netzwerk-Endpunktgruppe.
    • TARGET_SERVICE: Der Dienstanhang, mit dem Sie eine Verbindung herstellen möchten. Verwenden Sie den vom vorherigen Befehl zurückgegebenen Wert des Dienstanhangs. Zum Beispiel projects/bfac7497a40c32a12p-tp/regions/us-west1/serviceAttachments/apigee-us-west1-crw7.
    • NETWORK_NAME: (Optional) Name des Netzwerks, in dem die NEG erstellt wird. Wenn Sie diesen Parameter weglassen, wird das Projektnetzwerk default verwendet.
    • SUBNET_NAME: Name des Subnetzes, das für die private Verbindung zum Ersteller verwendet wird. Die Subnetzgröße kann klein sein: Die PSC NEG benötigt nur eine IP-Adresse aus dem Subnetz. Für Apigee ist nur eine PSC-NEG pro Region erforderlich. Das Subnetz kann von VMs oder anderen Entitäten gemeinsam genutzt und verwendet werden. Wenn kein Subnetz angegeben ist, können Netzwerkendpunkte zu einem Subnetzwerk in der Region gehören, in der die Netzwerk-Endpunktgruppe erstellt wird.
    • $PROJECT_ID Das Cloud-Projekt, das bereits mit Ihrer Apigee-Organisation verknüpft ist, oder ein Cloud-Projekt, das in consumerAcceptlist enthalten war, als die Apigee-Laufzeitinstanz erstellt wurde. Erstellen Sie, falls noch nicht geschehen, eine Umgebungsvariable für die Projekt-ID, da sie in den meisten folgenden Befehlen verwendet wird.
  4. Reservieren Sie eine globale externe IPv4-Adresse für den Load-Balancer.
    gcloud compute addresses create ADDRESS_NAME \
        --ip-version=IPV4 --global --project=$PROJECT_ID

    Ersetzen Sie ADDRESS_NAME durch einen Namen für die IP-Adressressource

    Führen Sie diesen Befehl aus, um die reservierte IP-Adresse aufzurufen:

    gcloud compute addresses describe ADDRESS_NAME \
        --format="get(address)" --global --project=$PROJECT_ID
  5. Erstellen Sie einen neuen Backend-Dienst für die NEG.
    gcloud compute backend-services create BACKEND_SERVICE_NAME \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --protocol=HTTPS \
        --global --project=$PROJECT_ID
  6. Ersetzen Sie BACKEND_SERVICE_NAME durch den Namen des Backend-Dienstes.

  7. Fügen Sie den Backend-Dienst zur NEG hinzu.
    gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
        --network-endpoint-group=NEG_NAME \
        --network-endpoint-group-region=REGION \
        --global --project=$PROJECT_ID

    Ersetzen Sie Folgendes:

    • BACKEND_SERVICE_NAME ist der Name des Backend-Dienstes.
    • NEG_NAME ist der Name der Netzwerk-Endpunktgruppe.
    • REGION ist die Region der Netzwerk-Endpunktgruppe.
  8. Erstellen Sie eine URL-Zuordnung für den Load-Balancer.

    Eine URL-Zuordnung muss auf einen Standard-Backend-Dienst verweisen. Legen Sie den Backend-Dienst fest, den Sie gerade als Standard erstellt haben.

    gcloud compute url-maps create URL_MAP_NAME \
        --default-service=DEFAULT_BACKEND_SERVICE_NAME \
        --global --project=$PROJECT_ID

    Ersetzen Sie Folgendes:

    • URL_MAP_NAME ist ein Name für die URL-Zuordnung.
    • DEFAULT_BACKEND_SERVICE_NAME ist der Name des Standard-Backend-Dienstes des Load-Balancers. Die Standardeinstellung wird verwendet, wenn keine Hostregel mit dem angeforderten Hostnamen übereinstimmt.
  9. Erstellen Sie den Ziel-HTTPS-Proxy.

    Zum Erstellen eines HTTPS-Load-Balancers benötigen Sie eine SSL-Zertifikatsressource, die im HTTPS-Proxy verwendet wird. Sie können eine SSL-Zertifikatsressource entweder mit einem von Google verwalteten SSL-Zertifikat oder mit einem selbst verwalteten SSL-Zertifikat erstellen. Es empfiehlt sich, von Google verwaltete Zertifikate zu verwenden, da Google Cloud diese Zertifikate automatisch abruft, verwaltet und verlängert.

    Zum Erstellen eines von Google verwalteten Zertifikats benötigen Sie eine Domain.

    Verwenden Sie diesen Befehl, um eine von Google verwaltete SSL-Zertifikatsressource zu erstellen:

    gcloud compute ssl-certificates create CERTIFICATE \
        --domains DOMAIN --project=$PROJECT_ID

    Ersetzen Sie Folgendes:

    • CERTIFICATE ist ein Name für das Zertifikat.
    • DOMAIN ist der Domainname des Load-Balancers

    Verwenden Sie diesen Befehl, um eine selbstverwaltete SSL-Zertifikatsressource zu erstellen. Zum Erstellen eines selbstverwalteten SSL-Zertifikats benötigen Sie eine lokale private Schlüsseldatei und eine lokale Zertifikatsdatei. Wenn Sie diese Dateien erstellen müssen, finden Sie weitere Informationen unter Schritt 1 der Verwendung selbstverwalteter SSL-Zertifikate.

    gcloud compute ssl-certificates create CERTIFICATE \
        --certificate LB_CERT \
        --private-key LB_PRIVATE_KEY --project=$PROJECT_ID

    Ersetzen Sie Folgendes:

    • CERTIFICATE ist ein Name für das Zertifikat.
    • LB_CERT ist der Pfad zur Zertifikatsdatei im PEM-Format für Ihr selbstverwaltetes Zertifikat.
    • LB_PRIVATE_KEY ist der Pfad zur privaten Schlüsseldatei im PEM-Format für Ihr selbstverwaltetes Zertifikat.

    Verwenden Sie die SSL-Zertifikatsressource, um einen Ziel-HTTPS-Proxy zu erstellen.

    gcloud compute target-https-proxies create PROXY_NAME \
        --url-map=URL_MAP_NAME \
        --ssl-certificates=CERTIFICATE --project=$PROJECT_ID

    Ersetzen Sie Folgendes:

    • PROXY_NAME ist ein Name für den Ziel-HTTPS-Proxy.
    • URL_MAP_NAME ist der Name der URL-Zuordnung.
    • CERTIFICATE ist der Name der Zertifikatsressource.
  10. Erstellen Sie die Weiterleitungsregel.
    gcloud compute forwarding-rules create FWD_RULE \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --network-tier=PREMIUM \
        --address=ADDRESS_NAME \
        --target-https-proxy=PROXY_NAME \
        --ports=443 \
        --global --project=$PROJECT_ID

    Ersetzen Sie Folgendes:

    • FWD_RULE ist ein Name für die Weiterleitungsregel.
    • ADDRESS_NAME ist die IP-Adressressource, die Sie für die Weiterleitungsregel reserviert haben.
    • PROXY_NAME ist der Name des HTTPS-Ziel-Proxys.

Regionaler externer Load Balancer

Konfigurieren Sie einen regionalen externen HTTP(S)-Load Balancer. Weitere Informationen finden Sie unter Übersicht über externen HTTP(S)-Load Balancer.

  1. Achten Sie darauf, dass die Variablen unter Umgebungsvariablen definieren festgelegt werden.
  2. Erstellen Sie ein Nur-Proxy-Subnetz:
    gcloud compute networks subnets create SUBNET_NAME \
          --purpose=REGIONAL_MANAGED_PROXY --role=ACTIVE \
          --region=$RUNTIME_LOCATION --network=NETWORK_NAME \
          --range=100.0.0.0/24 --project=$PROJECT_ID

    Ersetzen Sie Folgendes:

    • SUBNET_NAME: der Name des Subnetzes.
    • (Optional) NETWORK_NAME: Name des Netzwerks, in dem das Subnetz erstellt wird. Wenn Sie diesen Parameter weglassen, wird das Standardprojektnetzwerk verwendet.
  3. Rufen Sie den Dienstanhang aus der zuvor erstellten Instanz ab:

    Kein Datenstandort

    curl -i -X GET -H "Authorization: Bearer $AUTH" \
        "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances"

    Datenstandort

    curl -i -X GET -H "Authorization: Bearer $AUTH" \
        "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances"

    In der folgenden Beispielausgabe ist der Wert serviceAttachment fett dargestellt:

    {
      "instances": [
        {
          "name": "us-west1",
          "location": "us-west1",
          "host": "10.82.192.2",
          "port": "443",
          "createdAt": "1645731488019",
          "lastModifiedAt": "1646504754219",
          "diskEncryptionKeyName": "projects/my-project/locations/us-west1/keyRings/us-west1/cryptoKeys/dek",
          "state": "ACTIVE",
          "peeringCidrRange": "SLASH_22",
          "runtimeVersion": "1-7-0-20220228-190814",
          "ipRange": "10.82.192.0/22,10.82.196.0/28",
          "consumerAcceptList": [
            "875609189304"
          ],
          "serviceAttachment": "projects/bfac7497a40c32a12p-tp/regions/us-west1/serviceAttachments/apigee-us-west1-crw7"
        }
      ]
    }
  4. Netzwerk-Endpunktgruppe erstellen
    gcloud compute network-endpoint-groups create NEG_NAME \
        --network-endpoint-type=private-service-connect \
        --psc-target-service=TARGET_SERVICE \
        --region=$RUNTIME_LOCATION --project=$PROJECT_ID

    Ersetzen Sie Folgendes:

    • NEG_NAME ist der Name der Netzwerk-Endpunktgruppe.
    • TARGET_SERVICE: Der Name des Dienstanhangs, zu dem Sie eine Verbindung herstellen möchten. Beispiel: projects/bfac7497a40c32a12p-tp/regions/us-west1/serviceAttachments/apigee-us-west1-crw7
  5. Erstellen Sie einen neuen Backend-Dienst für die NEG.
    gcloud compute backend-services create BACKEND_SERVICE_NAME \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --protocol=HTTPS \
      --region=$RUNTIME_LOCATION  \
      --project=$PROJECT_ID
  6. Ersetzen Sie BACKEND_SERVICE_NAME durch den Namen des Backend-Dienstes.

  7. Fügen Sie den Backend-Dienst zur NEG hinzu.
    gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
      --network-endpoint-group=NEG_NAME \
      --region=$RUNTIME_LOCATION  \
      --project=$PROJECT_ID

    Ersetzen Sie Folgendes:

    • BACKEND_SERVICE_NAME ist der Name des Backend-Dienstes.
    • NEG_NAME ist der Name der Netzwerk-Endpunktgruppe.
  8. Erstellen Sie eine URL-Zuordnung für den Load-Balancer.

    Eine URL-Zuordnung muss auf einen Standard-Backend-Dienst verweisen. Legen Sie den Backend-Dienst fest, den Sie gerade als Standard erstellt haben.

    gcloud compute url-maps create URL_MAP_NAME \
      --default-service=DEFAULT_BACKEND_SERVICE_NAME \
      --region=$RUNTIME_LOCATION  \
      --project=$PROJECT_ID

    Ersetzen Sie Folgendes:

    • URL_MAP_NAME ist ein Name für die URL-Zuordnung.
    • DEFAULT_BACKEND_SERVICE_NAME ist der Name des Standard-Backend-Dienstes des Load-Balancers. Die Standardeinstellung wird verwendet, wenn keine Hostregel mit dem angeforderten Hostnamen übereinstimmt.
  9. Erstellen Sie den Ziel-HTTPS-Proxy.

    Zum Erstellen eines HTTPS-Load-Balancers benötigen Sie eine SSL-Zertifikatsressource, die im HTTPS-Proxy verwendet wird.

    Verwenden Sie diesen Befehl, um eine selbstverwaltete SSL-Zertifikatsressource zu erstellen. Zum Erstellen eines selbstverwalteten SSL-Zertifikats benötigen Sie eine lokale private Schlüsseldatei und eine lokale Zertifikatsdatei. Wenn Sie diese Dateien erstellen müssen, finden Sie weitere Informationen unter Schritt 1 der Verwendung selbstverwalteter SSL-Zertifikate.

    gcloud compute ssl-certificates create CERTIFICATE \
      --certificate LB_CERT \
      --private-key LB_PRIVATE_KEY --region=$RUNTIME_LOCATION \
      --project=$PROJECT_ID

    Ersetzen Sie Folgendes:

    • CERTIFICATE ist ein Name für das Zertifikat.
    • LB_CERT ist der Pfad zur Zertifikatsdatei im PEM-Format für Ihr selbstverwaltetes Zertifikat.
    • LB_PRIVATE_KEY ist der Pfad zur privaten Schlüsseldatei im PEM-Format für Ihr selbstverwaltetes Zertifikat.

    Verwenden Sie die SSL-Zertifikatsressource, um einen Ziel-HTTPS-Proxy zu erstellen.

    gcloud compute target-https-proxies create PROXY_NAME \
      --url-map=URL_MAP_NAME --region=$RUNTIME_LOCATION \
      --ssl-certificates=CERTIFICATE --project=$PROJECT_ID

    Ersetzen Sie Folgendes:

    • PROXY_NAME ist ein Name für den Ziel-HTTPS-Proxy.
    • URL_MAP_NAME ist der Name der URL-Zuordnung.
    • CERTIFICATE ist der Name der Zertifikatsressource.
  10. Reservieren Sie eine regionale externe Adresse für den Load Balancer. Die Netzwerkstufe muss auf STANDARD festgelegt sein.
    gcloud compute addresses create ADDRESS_NAME \
          --region=$RUNTIME_LOCATION --network-tier=STANDARD \
          --project=$PROJECT_ID

    Ersetzen Sie ADDRESS_NAME durch einen Namen für die IP-Adressressource

    Führen Sie diesen Befehl aus, um die reservierte IP-Adresse aufzurufen:

    gcloud compute addresses describe ADDRESS_NAME \
          --format="get(address)" --region=$RUNTIME_LOCATION \
          --project=$PROJECT_ID
  11. Erstellen Sie die Weiterleitungsregel.
    gcloud compute forwarding-rules create FWD_RULE \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --network-tier=STANDARD \
      --address=ADDRESS_NAME \
      --target-https-proxy=PROXY_NAME \
      --ports=443  --region=$RUNTIME_LOCATION \
      --target-https-proxy-region=$RUNTIME_LOCATION --project=$PROJECT_ID

    Ersetzen Sie Folgendes:

    • FWD_RULE ist ein Name für die Weiterleitungsregel.
    • ADDRESS_NAME ist die IP-Adressressource, die Sie für die Weiterleitungsregel reserviert haben.
    • PROXY_NAME ist der Name des HTTPS-Ziel-Proxys.

Die Bereitstellung von Apigee ist abgeschlossen. Gehen Sie zu Beispielproxy bereitstellen.

Schritt 9: Beispielproxy bereitstellen

  1. Laden Sie den Beispielproxy von GitHub herunter. Das Ziel des Proxys ist der Dienst httpbin.org, der ein gängiger, öffentlicher Anfrage- und Antwortdienst ist.
  2. Laden Sie das API-Proxy-Bundle mit der Apigee API apis in die Laufzeit hoch:

    Kein Datenstandort

    curl -i -X POST -H "Authorization: Bearer $AUTH" \
        -H "Content-Type:multipart/form-data" \
        "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/apis?name=httpbin&action=import" \
        -F 'file=@PATH_TO_ZIP_FILE/httpbin_rev1_2020_02_02.zip'

    Datenstandort

    curl -i -X POST -H "Authorization: Bearer $AUTH" \
        -H "Content-Type:multipart/form-data" \
        "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$PROJECT_ID/apis?name=httpbin&action=import" \
        -F 'file=@PATH_TO_ZIP_FILE/httpbin_rev1_2020_02_02.zip'

    Dabei ist PATH_TO_ZIP_FILE der Pfad zum Verzeichnis mit der heruntergeladenen ZIP-Datei.

  3. Stellen Sie den API-Proxy in der zuvor erstellten Umgebung bereit:

    Kein Datenstandort

    curl -i -H "Authorization: Bearer $AUTH" -X POST \
        "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/environments/$ENVIRONMENT_NAME/apis/httpbin/revisions/1/deployments"

    Datenstandort

    curl -i -H "Authorization: Bearer $AUTH" -X POST \
        "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$PROJECT_ID/environments/$ENVIRONMENT_NAME/apis/httpbin/revisions/1/deployments"
  4. Prüfen Sie mit diesem API-Aufruf, ob die Bereitstellung erfolgreich abgeschlossen wurde:

    Kein Datenstandort

    curl -i -H "Authorization: Bearer $AUTH" \
        "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/environments/$ENVIRONMENT_NAME/apis/httpbin/revisions/1/deployments"

    Datenstandort

    curl -i -H "Authorization: Bearer $AUTH" \
        "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$PROJECT_ID/environments/$ENVIRONMENT_NAME/apis/httpbin/revisions/1/deployments"
  5. Den API-Proxy aufrufen

    Senden Sie von jeder netzwerkfähigen Maschine aus eine Anfrage an den API-Proxy, indem Sie den folgenden Befehl ausführen:

    curl -i -H "Host: ENV_GROUP_HOSTNAME" \
        "https://ENV_GROUP_HOSTNAME/httpbin/headers"

    Bei Bedarf können Sie mit dieser API den Wert ENV_GROUP_HOSTNAME abrufen:

    Kein Datenstandort

    curl -i -H "Authorization: Bearer $AUTH" \
        "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/envgroups"

    Datenstandort

    curl -i -H "Authorization: Bearer $AUTH" \
        "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$PROJECT_ID/envgroups"

    Wenn Sie einen Fehler wie diesen erhalten: CONNECT_CR_SRVR_HELLO:sslv3 alert handshake failure, prüfen Sie, ob das zuvor erstellte SSL-Zertifikat bereitgestellt wurde. Verwenden Sie diesen Befehl, um den Bereitstellungsstatus zu prüfen. Wenn das Zertifikat bereitgestellt wird, ist der Status ACTIVE.

    gcloud compute ssl-certificates describe CERTIFICATE \
        --global \
        --format="get(name,managed.status, managed.Status)"

    Bei Erfolg gibt der Beispiel-API-Proxy eine Antwort ähnlich der folgenden zurück:

    {
        "headers": {
          "Accept": "*/*",
          "Grpc-Trace-Bin": "AAD/8WC/I4AUSrMEch0E9yj+AYck1x9afwckAgA",
          "Host": "httpbin.org",
          "Traceparent": "00-fff160bf2380144ab304721d04f728fe-8724d71f5a7f0724-00",
          "User-Agent": "curl/7.77.0",
          "X-Amzn-Trace-Id": "Root=1-61d785ef-7613aa8a7fde7a910441fab9",
          "X-B3-Sampled": "0",
          "X-B3-Spanid": "8724d71f5a7f0724",
          "X-B3-Traceid": "fff160bf2380144ab304721d04f728fe",
          "X-Cloud-Trace-Context": "fff160bf2380144ab304721d04f728fe/9738144823944087332;o=0",
          "X-Envoy-Attempt-Count": "1"
        }
    }

Weitere Informationen zum Bereitstellen von Proxys und zusätzliche Informationen zur Fehlerbehebung finden Sie unter API-Proxy bereitstellen.