Apigee Adapter for Envoy mit Apigee Edge verwenden

Sie sehen die Dokumentation zu Apigee Edge.
Zur Apigee X-Dokumentation
weitere Informationen

In diesem Beispiel wird gezeigt, wie Sie den Apigee-Adapter für Envoy mit Apigee Edge verwenden.

Voraussetzungen

Hinweis

Überblick

In diesem Beispiel wird erläutert, wie Sie den Apigee-Adapter für Envoy mit Apigee Edge for Public Cloud verwenden. API-Proxy-Aufrufe fließen durch Envoy, das als native Anwendung ausgeführt wird, wobei Edge API-Verwaltungsdienste über Apigee Remote Service for Envoy bereitstellt.

Apigee Edge bereitstellen

In diesem Schritt verwenden Sie die Remote Service CLI, um Apigee Adapter for Envoy-Assets für Apigee Edge bereitzustellen. Der Bereitstellungsbefehl stellt einen API-Proxy für Apigee Edge bereit, richtet auch ein Zertifikat für Apigee ein und generiert Anmeldedaten, mit denen der Remotedienst eine sichere Verbindung von Ihrem System zu Apigee herstellt.

  1. Wechseln Sie zum Verzeichnis $CLI_HOME:
    cd $CLI_HOME
  2. Erstellen Sie die folgenden Umgebungsvariablen. Diese Variablen werden als Parameter für das Bereitstellungsskript verwendet:
    export ORG=organization_name
    export ENV=environment_name
    export USER=your_apigee_username
    export PASSWORD=your_apigee_password

    Wobei:

    Variable Beschreibung
    organization_name Der Name Ihrer Apigee-Organisation.
    environment_name Der Name einer Umgebung in Ihrer Organisation.
    your_apigee_username Nutzername Ihres Apigee-Kontos. Der Nutzername ist in der Regel eine E-Mail-Adresse.
    your_apigee_password Ihr Apigee-Passwort.
  3. Führen Sie den folgenden Befehl aus, um den Remote-Dienst-Proxy auf Apigee Edge bereitzustellen:

    Wenn Sie kein Upgrade ausführen, verwenden Sie diesen Befehl, um Apigee bereitzustellen:

    $CLI_HOME/apigee-remote-service-cli provision --legacy --mfa $MFA \
      --username $USER --password $PASSWORD --organization $ORG --environment $ENV > config.yaml

    Wenn Sie ein Upgrade ausführen, verwenden Sie diesen Befehl mit dem Flag --force-proxy-install, um Apigee bereitzustellen:

    $CLI_HOME/apigee-remote-service-cli provision --legacy --force-proxy-install --mfa $MFA \
      --username $USER --password $PASSWORD --organization $ORG --environment $ENV > config.yaml
  4. Prüfen Sie den Inhalt der Datei config.yaml. Das sollte in etwa so aussehen:
    # Configuration for apigee-remote-service-envoy (platform: SaaS)
    # generated by apigee-remote-service-cli provision on 2020-08-26 09:43:41
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: apigee-remote-service-envoy
      namespace: apigee
    data:
      config.yaml: |
        tenant:
          internal_api: https://istioservices.apigee.net/edgemicro
          remote_service_api: https://my-username-test.apigee.net/remote-service
          org_name: my-org
          env_name: my-env
          key: f7e09c32f827cab87b8ce43842ed8467ffd2c58e6f795241e38fe7b1aec7664
          secret: 1cb5cca00dfb433cb80b32837451fce4bf694633cddbb73d704517e12b35e75
       ...

    Die Schlüssel- und Geheimwerte werden verwendet, um die Anfragen vom Remote Service Proxy an Apigee Edge zu validieren.

Apigee Remote Service for Envoy-Dienst ausführen

Sie können den Remotedienst entweder als natives Binärprogramm oder in Docker ausführen.

Dienst nativ ausführen

Führen Sie die Dienstbinärdatei mit der Konfigurationsdatei aus, die vom Bereitstellungsbefehl ausgegeben wurde:

$REMOTE_SERVICE_HOME/apigee-remote-service-envoy -c config_file_path/config.yaml

Dienst in Docker ausführen

Docker-Images werden mit Release-Tags veröffentlicht. Verwenden Sie für diese Installation die neueste Version. Es stehen drei Image-Varianten zur Auswahl:

Variante Bild
Google Distroless google/apigee-envoy-adapter:v2.0.0
Ubuntu google/apigee-envoy-adapter:v2.0.0-ubuntu
Ubuntu mit Boring Crypto google/apigee-envoy-adapter:v2.0.0-boring

Verwenden Sie beispielsweise den folgenden Befehl, um das Scratch-Image mit Ihrer lokalen config.yaml, verfügbar als /config.yaml über eine Volume-Bereitstellung, auszuführen:

docker run -v ./config.yaml:/config.yaml google/apigee-envoy-adapter:v2.0.0

Beispielkonfigurationsdateien erstellen

Generieren Sie eine Envoy-Konfigurationsdatei mit der Befehlszeile:

  1. Sie müssen sich im Verzeichnis $ENVOY_HOME befinden.
  2. Listen Sie die verfügbaren Konfigurationsvorlagen auf:
    $CLI_HOME/apigee-remote-service-cli samples templates
  3. Führen Sie den Befehl "samples" aus. Ersetzen Sie TEMPLATE durch eine der unterstützten Envoy-Vorlagen:

    $CLI_HOME/apigee-remote-service-cli samples create --template TEMPLATE -c ./config.yaml

    Der Befehl erstellt die Datei ./samples/envoy-config.yaml.

Weitere Informationen finden Sie unter Befehl „Samples“.

Envoy-Proxy installieren und ausführen

Führen Sie die folgenden Schritte aus, um den Envoy-Proxy zu installieren und auszuführen:

  1. Laden Sie eine Envoy-Binärdatei herunter, erstellen Sie sie oder verwenden Sie Docker.
  2. Führen Sie Envoy mit einer Beispielkonfigurationsdatei aus, die Sie zuvor für den Dienst httpbin.org generiert haben:
    envoy -c ./samples/envoy-config.yaml

Installation testen

  1. Konfigurieren Sie ein API-Produkt und rufen Sie einen API-Schlüssel ab, wie unter API-Schlüssel abrufen erläutert.
  2. Rufen Sie den Dienst httpbin ohne API-Schlüssel auf:
    curl -i http://localhost:8080/headers -H "HOST:httpbin.org"
    

    Der Dienst wird jetzt von Apigee verwaltet. Da Sie keinen API-Schlüssel angegeben haben, wird der folgende Fehler zurückgegeben.

    curl -i http://localhost:8080/headers -H "HOST:httpbin.org"
    HTTP/1.1 403 Forbidden
    date: Tue, 12 May 2020 17:51:36 GMT
    server: envoy
    content-length: 0
    x-envoy-upstream-service-time: 11
  3. Führen Sie einen API-Aufruf mit dem Schlüssel aus:
    export APIKEY=YOUR_API_KEY
    curl -i http://localhost:8080/headers \
    -H "HOST:httpbin.org" -H "x-api-key: $APIKEY"

    Der Aufruf sollte erfolgreich mit Status 200 funktionieren und eine Liste der Header in der Antwort zurückgeben. Beispiel:

    curl -i httpbin.default.svc.cluster.local/headers -H "x-api-key: kyOTalNNLMPfOSy6rnVeclmVSL6pA2zS"
    HTTP/1.1 200 OK
    server: envoy
    date: Tue, 12 May 2020 17:55:34 GMT
    content-type: application/json
    content-length: 828
    access-control-allow-origin: *
    access-control-allow-credentials: true
    x-envoy-upstream-service-time: 301
    
    {
      "headers": {
        "Accept": "*/*",
        "Content-Length": "0",
        "Host": "httpbin.default.svc.cluster.local",
        "User-Agent": "curl/7.70.0-DEV",
        "X-Api-Key": "kyOTalNNLMPfOSy6rneclmVSL6pA2zS",
        "X-Apigee-Accesstoken": "",
        "X-Apigee-Api": "httpbin.default.svc.cluster.local",
        "X-Apigee-Apiproducts": "httpbin",
        "X-Apigee-Application": "httpbin",
        "X-Apigee-Authorized": "true",
        "X-Apigee-Clientid": "kyOTalNNLMPfOSy6rVeclmVSL6pA2zS",
        "X-Apigee-Developeremail": "user@example.com",
        "X-Apigee-Environment": "test",
        "X-Apigee-Organization": "my-org",
        "X-Apigee-Scope": "",
        "X-B3-Parentspanid": "1476f9a2329bbdfa",
        "X-B3-Sampled": "0",
        "X-B3-Spanid": "1ad5c19bfb4bc96f",
        "X-B3-Traceid": "6f329a34e8ca07811476f9a2329bbdfa"
      }
    }

Nächste Schritte

Der API-Traffic zum Dienst httpbin wird jetzt von Apigee verwaltet. Hier sind einige Funktionen, die Sie entdecken und versuchen können:

  • Wenn Sie Ihr API-Produkt wie unter API-Schlüssel abrufen beschrieben konfiguriert haben, wurde das Kontingentlimit auf 5 Anfragen pro Minute festgelegt. Rufen Sie den Dienst httpbin noch einmal auf, um das Kontingent auszulösen. Wenn das Kontingent aufgebraucht ist, wird der HTTP-Statusfehler 403 zurückgegeben.
  • Greifen Sie über die Edge-Benutzeroberfläche auf Apigee Analytics zu. Rufen Sie Analysieren > API-Messwerte > API-Proxy-Leistung auf.
  • Generieren und verwenden Sie JWT-Tokens zur Authentifizierung von API-Aufrufen.
  • Verwenden Sie die Kommandozeile zum Verwalten und Erstellen von Tokens und zum Steuern von Bindungen. Details zur Befehlszeile finden Sie in der Referenz.