Sie sehen sich die Dokumentation zu Apigee Edge an.
Sehen Sie sich die Apigee X-Dokumentation an. info
In diesem Beispiel wird gezeigt, wie der Apigee-Adapter für Envoy mit Apigee Edge verwendet wird.
Vorbereitung
Hinweise: |
---|
Übersicht
In diesem Beispiel wird erläutert, wie Sie den Apigee Adapter for Envoy mit Apigee Edge for Public Cloud verwenden. API-Proxyaufrufe werden über Envoy als native Anwendung geleitet. Edge stellt API-Verwaltungsdienste über den Apigee Remote Service for Envoy bereit.
Die folgende Abbildung zeigt die grundlegende Architektur der Apigee Edge-Integration:
Ein Envoy-Proxy und ein Remote-Dienst werden lokal ausgeführt. Envoy verarbeitet den API-Traffic vom und zum Zieldienst und kommuniziert mit dem Remotedienst. Der Remote-Dienst kommuniziert auch mit Apigee Edge Cloud, um API-Produkt- und Proxyinformationen abzurufen.
Apigee Edge bereitstellen
In diesem Schritt verwenden Sie die Remotedienst-Befehlszeile, um Apigee Adapter for Envoy-Assets für Apigee Edge bereitzustellen. Der Bereitstellungsbefehl stellt einen API-Proxy in 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.
- Wechseln Sie in das Verzeichnis
$CLI_HOME
:cd $CLI_HOME
- 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. Normalerweise ist der Benutzername eine E-Mail-Adresse. your_apigee_password Ihr Apigee-Passwort. - Führen Sie den folgenden Befehl aus, um den Remotedienst-Proxy in Apigee Edge bereitzustellen:
./apigee-remote-service-cli provision --legacy --mfa $MFA --username $USER --password $PASSWORD \ --organization $ORG --environment $ENV > config.yaml
- Prüfen Sie den Inhalt der Datei
config.yaml
. Sie 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
Mit den Schlüssel- und Secret-Werten werden die Anfragen vom Remote-Dienst-Proxy an Apigee Edge validiert.
Apigee Remote Service for Envoy 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 | Image |
---|---|
Google Distroless | gcr.io/distroless/base |
Ubuntu | google/apigee-envoy-adapter:v1.1.0-ubuntu |
Ubuntu mit Boring Crypto | google/apigee-envoy-adapter:v1.1.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.1.0
Beispielkonfigurationsdateien erstellen
Verwenden Sie den Befehl apigee-remote-service-cli samples create
, um Beispielkonfigurationsdateien zu generieren.
Für dieses Beispiel benötigen Sie diese generierten Dateien:
envoy-config.yaml
– Eine Bereitstellungskonfiguration für einen HTTP-Dienst.
So generieren Sie die Beispiele:
- Wechseln Sie in das Verzeichnis
$CLI_HOME
. Führen Sie diesen Befehl aus, um die Dateien zu generieren:
./apigee-remote-service-cli samples create --template native -c ./config.yaml
Die folgenden Dateien geben das Verzeichnis
./samples
aus:ls 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:
- Laden Sie eine Envoy-Binärdatei herunter, erstellen Sie sie oder verwenden Sie Docker.
- Führen Sie Envoy mit einer Beispielkonfigurationsdatei aus, die Sie zuvor für den Dienst
httpbin.org
generiert haben:envoy -c $CLI_HOME/samples/envoy-config.yaml
Installation testen
- Rufen Sie den
httpbin
-Dienst auf:curl -i http://localhost:8080/httpbin/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/httpbin/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
- Konfigurieren Sie ein API-Produkt und rufen Sie einen API-Schlüssel ab, wie unter API-Schlüssel abrufen erläutert.
- Führen Sie einen API-Aufruf mit dem Schlüssel aus:
export APIKEY=YOUR_API_KEY
curl -i http://localhost:8080/httpbin/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 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 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.