Beispiel für natives Envoy für Apigee und Hybrid

Diese Seite gilt für Apigee und Apigee Hybrid.

Apigee Edge-Dokumentation aufrufen

In diesem Beispiel wird gezeigt, wie Sie den Apigee Adapter for Envoy verwenden, indem Sie Envoy lokal installieren und ausführen, nicht in einem Kubernetes-Cluster. Sie können das Beispiel in diesem Dokument sowohl für Apigee- als auch für Apigee Hybrid-Installationen befolgen.

API-Proxyaufrufe werden über Envoy als native Anwendung ausgeführt. Apigee bietet API-Verwaltungsdienste wie das Erstellen von API-Produkten und Entwickler-Apps. Envoy kommuniziert mit der Apigee-Verwaltungsebene über den Remotedienst des Adapters. Der Adapter überträgt auch Analysedaten an Apigee, die in Apigee Analytics angezeigt werden.

Vorbereitung

Hinweise:

gcloud-Konfiguration prüfen

  1. Prüfen Sie, ob Ihre gcloud-Konfiguration auf das Google Cloud-Projekt festgelegt ist, das Ihrer Apigee-Organisation zugeordnet ist.

    So listen Sie die aktuellen Einstellungen auf. Siehe auch gcloud config.

    gcloud config list

    Legen Sie gegebenenfalls mit folgendem Befehl die richtige Google Cloud-Projekt-ID fest:

    gcloud config set project project-id
  2. Sie müssen für das Google Cloud-Projekt mit dem Google Cloud SDK (gcloud) authentifiziert sein. Siehe auch gcloud auth login.
    gcloud auth login

Apigee bereitstellen

In diesem Schritt verwenden Sie die Remotedienst-Befehlszeile, um Apigee Adapter for Envoy-Assets für Apigee bereitzustellen. Der Bereitstellungsbefehl stellt API-Proxys bereit, die für Apigee-Adaptervorgänge verwendet werden, 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. (Optional) Standardmäßig sucht der Adapter nach Standarddienstkonto-Anmeldedaten in Ihrem Google Cloud-Projekt, um die Berechtigung zum Senden von Analysedaten an Apigee zu erhalten. Wenn Sie die Standarddienstkonto-Anmeldedaten nicht verwenden möchten, können Sie ein Dienstkonto erstellen und im Bereitstellungsbefehl auf seinen Schlüssel verweisen. Das Dienstkonto muss die Rolle apigee.analyticsAgent haben. Eine Anleitung dazu finden Sie unter Dienstkonten erstellen und verwalten.
  3. Erstellen Sie die folgenden Umgebungsvariablen. Diese Variablen werden als Parameter für das Bereitstellungsskript verwendet:
    export ORG=organization_name
    export ENV=environment_name
    export RUNTIME=host_alias_url
    export NAMESPACE=hybrid_runtime_namespace  ## Apigee hybrid only
    export AX_SERVICE_ACCOUNT=analytics_service_account  ## Optional

    Dabei gilt:

    Variable Beschreibung
    organization_name Der Name Ihrer Apigee-Organisation.
    environment_name Der Name einer Umgebung in Ihrer Organisation.
    host_alias_url
    • Für Apigee Hybrid, eine URL, die den hostAlias für einen virtuellen Host enthält, der in Ihrer Hybridkonfiguration definiert ist.
    • Für Apigee ein Hostname aus der Umgebungsgruppe, die die Umgebung enthält. Sie finden Umgebungsgruppen in der Apigee-UI unter Verwaltung > Umgebungen > Gruppen.
    • Hinweis: Die URL muss mit https:// beginnen. Beispiel: https://apitest.mydomain.net

    hybrid_runtime_namepace (Nur Apigee Hybrid) Der Namespace, in dem die Hybrid-Laufzeitkomponenten bereitgestellt werden.

    Hinweis: Der Standard-Namespace für eine Hybridbereitstellung ist apigee.

    analytics_service_account (Optional) Der Pfad zu einer JSON-Datei des Google Cloud-Dienstkontoschlüssels mit der Rolle Apigee Analytics Agent. Eine ausführliche Beschreibung dieses Parameters finden Sie unter Bereitstellungsbefehl.
  4. Wenn Sie kein Inhaber des Google Cloud-Projekts sind, das mit der Apigee-Organisation verknüpft ist, achten Sie darauf, dass Ihr Google Cloud-Nutzerkonto entweder die Rolle Administrator der Apigee-Organisation oder sowohl die Rolle API-Ersteller als auch die Rolle Bereitsteller enthält. Weitere Informationen finden Sie unter Zugriff auf Ressourcen erteilen, ändern und entziehen.
  5. Rufen Sie ein Zugriffstoken ab:
    TOKEN=$(gcloud auth print-access-token);echo $TOKEN
  6. Stellen Sie den Remotedienst-Proxy in Apigee bereit. Die Befehlsausgabe wird an eine Konfigurationsdatei weitergeleitet, die Sie in einem späteren Schritt verwenden werden.

    Wenn Sie kein Upgrade durchführen, können Sie Apigee mit dem folgenden Befehl bereitstellen. Wenn Sie die Bereitstellung in Apigee Hybrid vornehmen, müssen Sie den Parameter --namespace $NAMESPACE hinzufügen:

    ./apigee-remote-service-cli provision --organization $ORG --environment $ENV \
         --runtime $RUNTIME --analytics-sa $AX_SERVICE_ACCOUNT --token $TOKEN > config.yaml

    Wenn Sie ein Upgrade durchführen, verwenden Sie den folgenden Befehl mit dem Flag --force-proxy-install, um Apigee bereitzustellen: Wenn Sie die Bereitstellung in Apigee Hybrid vornehmen, müssen Sie den Parameter --namespace $NAMESPACE hinzufügen:

    ./apigee-remote-service-cli provision --force-proxy-install --organization $ORG --environment $ENV \
         --runtime $RUNTIME --analytics-sa $AX_SERVICE_ACCOUNT --token $TOKEN > config.yaml
  7. Prüfen Sie den Inhalt der Datei config.yaml. Die Ausgabe sollte ungefähr so aussehen:
    # Configuration for apigee-remote-service-envoy (platform: Google Cloud)
    # generated by apigee-remote-service-cli provision on 2020-11-20 02:49:28
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: apigee-remote-service-envoy
      namespace: apigee
    data:
      config.yaml: |
        tenant:
          remote_service_api: https://apitest.mydomain.com/remote-service
          org_name: my-org
          env_name: test
        analytics:
          collection_interval: 10s
        auth:
          jwt_provider_key: https://apitest.mydomain.com/remote-service/token
    ---
    apiVersion: v1
    kind: Secret
    metadata:
      name: my-org-new-test-policy-secret
      namespace: apigee
    type: Opaque
    data:
      remote-service.crt: eyJrZXlzIjpbeyJrdHkiOiJSU0EiLCJhbGci...
      remote-service.key: LS0tLS1CRUdJTiBSU0EgUFJJVkFURS...
      remote-service.properties: a2lkPTIwMjAtMDctMDZ...
    ---
    apiVersion: v1
    kind: Secret
    metadata:
      name: my-org-new-test-analytics-secret
      namespace: apigee
    type: Opaque
    data:
      client_secret.json: ewogICJ0eXBlIjogInNlcnZ...
    ---
    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: apigee-remote-service-envoy
      namespace: apigee

Führen Sie apigee-remote-service-envoy aus

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 google/apigee-envoy-adapter:v2.0.3
Ubuntu google/apigee-envoy-adapter:v2.0.3-ubuntu
Ubuntu mit Boring Crypto google/apigee-envoy-adapter:v2.0.3-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.3

Envoy-Beispielkonfigurationsdatei erstellen

Generieren Sie eine Envoy-Beispielkonfigurationsdatei über die 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 „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 oder erstellen Sie sie.
  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 dem 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@mydomain.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"
      }
    }

Apigee Envoy-Adapter deinstallieren

So entfernen Sie eine Installation des Apigee Envoy-Adapters:

  1. Entfernen Sie den Hadoop-Adapter, den Sie nativ oder in Docker ausführen möchten.
  2. Löschen Sie die Proxys remote-service und remote-token aus Ihren Apigee-Umgebungen. Siehe API-Proxy löschen.
  3. Entfernen Sie nicht verwendete API-Produkte oder Vorgänge, die von den Envoy-Adapter-Anwendungsfällen verwendet werden. Siehe API-Produkt löschen.

Tipp

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

  • Greifen Sie über die Edge-Benutzeroberfläche auf Apigee Analytics zu. Rufen Sie Analysieren > API-Messwerte > API-Proxy-Leistung auf.
  • Informationen zu den Befehlszeilenoptionen finden Sie in der Referenz.