搭配 Apigee Edge 使用 Envoy 適用的 Apigee 轉接程式

查看 Apigee Edge 說明文件。
前往 Apigee X說明文件
資訊

這個範例說明如何搭配使用 Apigee Adapter for Envoy 與 Apigee Edge。

必要條件

事前準備:

總覽

本範例說明如何搭配使用 Apigee Adapter for Envoy 搭配公用雲端的 Apigee Edge。API (應用程式介面) Proxy 呼叫流經 Envoy 為原生應用程式,透過 Edge 提供 API 執行 支援 Envoy 的 Apigee Remote Service。

佈建 Apigee Edge

在這個步驟中,您將使用遠端服務 CLI 來佈建 Envoy 資產的 Apigee Adapter Apigee Edge佈建指令會將 API Proxy 部署至 Apigee Edge 並設定憑證 Apigee 並產生遠端服務要使用的憑證 將您的系統連線至 Apigee

  1. 前往 $CLI_HOME 目錄:
    cd $CLI_HOME
  2. 建立下列環境變數。這些變數的用途是 參數新增至佈建指令碼:
    export ORG=organization_name
    export ENV=environment_name
    export USER=your_apigee_username
    export PASSWORD=your_apigee_password
    敬上

    其中:

    變數 說明
    organization_name 您的 Apigee 機構名稱。
    environment_name 貴機構中環境的名稱。
    your_apigee_username 您的 Apigee 帳戶使用者名稱。使用者名稱通常是電子郵件地址。
    your_apigee_password 您的 Apigee 密碼。
  3. 執行下列指令,在 Apigee Edge 上佈建遠端服務 Proxy:

    如果您「未」升級,請使用下列指令來佈建 Apigee:

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

    如要升級,請搭配 --force-proxy-install 旗標使用這個指令來佈建 Apigee:

    $CLI_HOME/apigee-remote-service-cli provision --legacy --force-proxy-install --mfa $MFA \
      --username $USER --password $PASSWORD --organization $ORG --environment $ENV > config.yaml
  4. 檢查 config.yaml 檔案的內容。如下所示:
    # 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
       ...

    金鑰和密鑰值會用來驗證遠端服務 Proxy 發出的要求 Apigee Edge

執行 Apigee Remote Service for Envoy 服務

您可以透過原生二進位檔形式執行遠端服務 或是在 Docker 中執行

以原生方式執行服務

使用佈建指令輸出的設定檔執行服務二進位檔:

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

在 Docker 上執行服務

Docker 映像檔以發布標記發布。如要執行這項安裝作業,請使用最新版本。有 有三種圖片變化版本可供選擇:

內容多變 圖片
Google 不變 google/apigee-envoy-adapter:v2.0.0
Ubuntu google/apigee-envoy-adapter:v2.0.0-ubuntu
Ubuntu 搭配 Boring Crypto google/apigee-envoy-adapter:v2.0.0-boring

舉例來說,如要使用本機 config.yaml 執行刮刮卡,則可用值為 /config.yaml 執行下列指令:

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

建立設定檔範例

使用 CLI 產生 Envoy 設定檔:

  1. 確認您位於 $ENVOY_HOME 目錄。
  2. 列出可用的設定範本:
    $CLI_HOME/apigee-remote-service-cli samples templates
  3. 執行範例指令。請將 TEMPLATE 替換成其中一個支援的 Envoy 範本:

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

    這個指令會建立檔案 ./samples/envoy-config.yaml

詳情請參閱範例指令一文。

安裝並執行 Envoy Proxy

請按照下列步驟安裝及執行 Envoy Proxy:

  1. 下載 Envoy 二進位檔建構模型 或使用 Docker
  2. 使用您先前為 httpbin.org 服務產生的範例設定檔執行 Envoy:
    envoy -c ./samples/envoy-config.yaml
    敬上

測試安裝結果

  1. 設定 API 產品並取得 API 金鑰,方法如下: 如何取得 API 金鑰
  2. 在不使用 API 金鑰的情況下呼叫 httpbin 服務:
    curl -i http://localhost:8080/headers -H "HOST:httpbin.org"
    
    敬上

    這項服務目前是由 Apigee 管理,而且您未提供 API 金鑰。 呼叫會傳回下列錯誤。

    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. 使用金鑰發出 API 呼叫:
    export APIKEY=YOUR_API_KEY
    curl -i http://localhost:8080/headers \
    -H "HOST:httpbin.org" -H "x-api-key: $APIKEY"

    呼叫應該會成功並顯示 200 狀態,並在回應中傳回標頭清單。 例如:

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

後續步驟

傳送至 httpbin 服務的 API 流量現在是由 Apigee 管理。以下 以下提供一些可探索和嘗試的功能:

  • 如果您已按照 如何取得 API 金鑰、 配額限制設定為每分鐘 5 次要求。請嘗試呼叫「httpbin」服務 再幾次觸發配額配額耗盡時,出現 HTTP 狀態 403 錯誤 。
  • 在 Edge UI 中存取 Apigee 數據分析。前往「分析」>「API 指標 >API (應用程式介面) Proxy 效能
  • 產生並使用 JWT 權杖來驗證 API 呼叫。
  • 使用 CLI 管理、建立權杖及控管繫結。如需 CLI 詳細資料,請參閱參考資料