Apigee Adapter for Envoy mit Apigee Edge verwenden

Sie lesen gerade die Dokumentation zu Apigee Edge.
Zur Dokumentation zu Apigee X.
info

Dieses Beispiel zeigt, wie der Apigee-Adapter für Envoy mit Apigee Edge verwendet wird.

Vorbereitung

Hinweise:

Überblick

In diesem Beispiel wird erläutert, wie Sie den Apigee-Adapter für Envoy mit Apigee Edge for Public Cloud verwenden. API Proxyaufrufe werden über Envoy als native Anwendung ausgeführt. Edge stellt API Verwaltungsdienste über den Apigee Remote Service for Envoy bereit.

Die folgende Abbildung zeigt die grundlegende Architektur der Apigee Edge-Integration:

Eine allgemeine Ansicht des nativ ausgeführten Envoy-Adapters zur Kommunikation mit der Apigee Edge Cloud, einschließlich der Verwaltungsebene, Laufzeitebene und GCP-Dienste

Ein Envoy-Proxy und ein Remotedienst werden lokal ausgeführt. Envoy verarbeitet den API-Traffic vom und zum Zieldienst und kommuniziert mit dem Remotedienst. Der Remotedienst kommuniziert auch mit Apigee Edge Cloud, um API-Produkt- und Proxy-Informationen abzurufen.

Apigee Edge bereitstellen

In diesem Schritt verwenden Sie die Remotedienst-Befehlszeile, um Apigee-Adapter für Envoy-Assets für Apigee Edge bereitzustellen. Der Bereitstellungsbefehl stellt einen API-Proxy für Apigee Edge bereit, richtet ein Zertifikat in Apigee ein und generiert Anmeldedaten, die der Remotedienst verwendet, um eine sichere Verbindung von Ihrem System zu Apigee herzustellen.

  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 Remotedienst-Proxy in Apigee Edge bereitzustellen:
    ./apigee-remote-service-cli provision --legacy --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
    # generated by apigee-remote-service-cli provision on 2020-06-06 11:55:52
    tenant:
      internal_api: https://istioservices.apigee.net/edgemicro
      remote_service_api: https://my-org-test.apigee.net/remote-service
      org_name: my-org
      env_name: test
      key: ecaa56d4101701cb877670909f3614219091b00ce559842e1b584a34b7c6a3e4
      secret: 0c66638bb865c1e13019990ea42da66b097d02a6ba333f050fb27cef20259d98

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

Den 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
scratch google/apigee-envoy-adapter:v1.0.0
Ubuntu google/apigee-envoy-adapter:v1.0.0-ubuntu
Ubuntu mit Boring Crypto google/apigee-envoy-adapter:v1.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:v1.0.0

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 für den Dienst httpbin.org eingerichtet ist:
    envoy -c $REMOTE_SERVICE_HOME/samples/native/envoy-httpbin.yaml

Installation testen

  1. Rufen Sie den httpbin Dienst auf:
    curl -i http://localhost:8080/httpbin/headers
    

    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/httpbin/headers
    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
  2. Konfigurieren Sie ein API-Produkt und rufen Sie einen API-Schlüssel ab, wie unter API-Schlüssel abrufen erläutert.
  3. Führen Sie einen API-Aufruf mit dem Schlüssel aus:
    export APIKEY=YOUR_API_KEY
    curl -i http://localhost:8080/httpbin/headers -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 erkunden 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 Sie das Kontingent überschreiten, wird folgende Fehlermeldung angezeigt:
    HTTP/1.1 429 Too Many Requests
  • 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.