Apigee Adapter for Envoy mit Apigee Edge verwenden

<ph type="x-smartling-placeholder"></ph> Sie sehen die Dokumentation zu Apigee Edge.
Gehen Sie zur Apigee X-Dokumentation.
Weitere Informationen

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

Vorbereitung

Hinweis

Übersicht

In diesem Beispiel wird erläutert, wie Sie den Apigee-Adapter für Envoy mit Apigee Edge for Public Cloud verwenden. API Proxy-Aufrufe laufen über Envoy, das als native Anwendung mit Edge-API ausgeführt wird über den Apigee Remote Service for Envoy zu verwalten.

Apigee Edge bereitstellen

In diesem Schritt stellen Sie mit der Remote Service CLI den Apigee Adapter für Envoy-Assets bereit. mit Apigee Edge. Mit dem Bereitstellungsbefehl wird ein API-Proxy in Apigee Edge bereitgestellt. und richtet auch ein Zertifikat für Apigee und generiert Anmeldedaten, die der Remote-Dienst für eine sichere Nutzung verwendet eine Verbindung von Ihrem System zu Apigee.

  1. Wechseln Sie in das 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

    Dabei gilt:

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

    Wenn Sie kein Upgrade durchführen, können Sie Apigee mit dem folgenden Befehl bereitstellen:

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

    Wenn Sie ein Upgrade durchführen, verwenden Sie den folgenden 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. Die Ausgabe sollte ungefähr 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 Secret-Werte werden verwendet, um die Anfragen vom Remote Service Proxy zu validieren mit Apigee Edge.

Apigee Remote Service for Envoy-Dienst ausführen

Sie können den Remote-Dienst entweder als natives Binärprogramm ausführen, oder Docker verwenden.

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 Image
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 mit der Befehlszeile eine Envoy-Konfigurationsdatei:

  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 „Beispiele“.

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"
      }
    }

Tipp

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.