本頁內容適用於 Apigee 和 Apigee Hybrid。
查看
Apigee Edge 說明文件。
本範例示範如何使用 Apigee Adapter for Envoy,方法是在本機安裝及執行 Envoy,而不是在 Kubernetes 叢集中。您可以按照本文中的範例,安裝 Apigee 和 Apigee Hybrid。
API Proxy 呼叫會透過以原生應用程式執行的 Envoy 傳送。Apigee 提供 API 管理服務,例如建立 API 產品和開發人員應用程式。Envoy 會透過介面的遠端服務,與 Apigee 管理層通訊。轉換介面也會將數據分析資料推送至 Apigee,您可以在 Apigee Analytics 中查看這些資料。
必要條件
事前準備: |
---|
|
|
|
檢查 gcloud 設定
- 確認
gcloud
設定已設為與 Apigee 機構相關聯的 Google Cloud 專案。列出目前的設定。另請參閱 gcloud config。
gcloud config list
如有需要,請使用下列指令設定正確的 Google Cloud 專案 ID:
gcloud config set project project-id
- 您必須使用 Google Cloud SDK (gcloud) 驗證 Google Cloud 專案。另請參閱
gcloud auth login。
gcloud auth login
佈建 Apigee
在本步驟中,您將使用 Remote Service CLI,將 Apigee Adapter for Envoy 資產佈建至 Apigee。佈建指令會部署用於 Apigee 配接器作業的 API Proxy、在 Apigee 上設定憑證,並產生遠端服務將用於從系統安全連線至 Apigee 的憑證。
- 前往
$CLI_HOME
目錄:cd $CLI_HOME
- (選用) 根據預設,介面卡會在 Google Cloud 專案中尋找預設服務帳戶憑證,以取得將 Analytics 資料傳送至 Apigee 的權限。如果不想使用預設服務帳戶憑證,可以建立服務帳戶,並在佈建指令中參照該帳戶的金鑰。服務帳戶必須具備
apigee.analyticsAgent
角色。 如需操作說明,請參閱「建立及管理服務帳戶」。 - 建立下列環境變數。這些變數會做為佈建指令碼的參數:
export ORG=organization_name
export ENV=environment_name
export RUNTIME=host_alias_url
export NAMESPACE=hybrid_runtime_namespace
## Apigee hybrid onlyexport AX_SERVICE_ACCOUNT=analytics_service_account
## Optional其中:
變數 說明 organization_name Apigee 機構的名稱。 environment_name 貴機構中環境的名稱。 host_alias_url - 如果是 Apigee Hybrid,則為包含虛擬主機
hostAlias
的網址,該虛擬主機是在 Hybrid 設定中定義。 - 如果是 Apigee,則為環境群組 (包含環境) 的主機名稱。您可以在 Apigee 使用者介面中找到環境群組,請依序前往「管理」>「環境」>「群組」。
注意:網址開頭必須為
https://
。 例如:https://apitest.mydomain.net
hybrid_runtime_namepace (僅限 Apigee Hybrid) 部署 Hybrid 執行階段元件的命名空間。 注意:混合式部署的預設命名空間為
apigee
。analytics_service_account (選用) 具有 Apigee Analytics Agent
角色的 Google Cloud 服務帳戶金鑰 JSON 檔案路徑。如需這個參數的詳細說明,請參閱「Provision command」。 - 如果是 Apigee Hybrid,則為包含虛擬主機
- 如果您不是與 Apigee 機構相關聯的 Google Cloud 專案擁有者,請確認您的 Google Cloud 使用者帳戶是否包含 Apigee 機構管理員角色,或同時包含 API 建立者和部署者角色。請參閱「授予、變更及撤銷資源的存取權」。
- 取得存取權杖:
TOKEN=$(gcloud auth print-access-token);echo $TOKEN
- 將遠端服務 Proxy 佈建至 Apigee。指令輸出內容會重新導向至設定檔,您會在後續步驟中使用該設定檔。
如果不是升級,請使用這個指令佈建 Apigee。如果您要佈建至 Apigee Hybrid,請務必新增
--namespace $NAMESPACE
參數:./apigee-remote-service-cli provision --organization $ORG --environment $ENV \ --runtime $RUNTIME --analytics-sa $AX_SERVICE_ACCOUNT --token $TOKEN > config.yaml
如果是升級,請使用這個指令搭配
--force-proxy-install
旗標來佈建 Apigee。 如果您要佈建至 Apigee Hybrid,請務必新增--namespace $NAMESPACE
參數:./apigee-remote-service-cli provision --force-proxy-install --organization $ORG --environment $ENV \ --runtime $RUNTIME --analytics-sa $AX_SERVICE_ACCOUNT --token $TOKEN > config.yaml
- 檢查
config.yaml
檔案的內容。如下所示:# 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
- 如果您使用 Apigee Hybrid,請將服務設定 (佈建指令輸出的檔案) 套用至叢集,Apigee Hybrid 已在步驟 1:建立叢集中安裝至該叢集。
執行 apigee-remote-service-envoy
您可以將遠端服務做為原生二進位檔執行,也可以在 Docker 上執行。
以原生方式執行服務
使用佈建指令輸出的設定檔,執行服務二進位檔:
$REMOTE_SERVICE_HOME/apigee-remote-service-envoy -c config_file_path/config.yaml
在 Docker 上執行服務
Docker 映像檔會隨發布標記一起發布。請使用最新版本進行安裝。你可以選擇三種圖片變化版本:
變化版本 | 圖片 |
---|---|
Google distroless | google/apigee-envoy-adapter:v2.0.3 |
Ubuntu | google/apigee-envoy-adapter:v2.0.3-ubuntu |
搭載 Boring Crypto 的 Ubuntu | google/apigee-envoy-adapter:v2.0.3-boring |
舉例來說,如要透過磁碟區掛接,以本機 config.yaml
做為 /config.yaml
執行空白映像檔,請使用下列指令:
docker run -v ./config.yaml:/config.yaml google/apigee-envoy-adapter:v2.0.3
建立 Envoy 設定檔範例
使用 CLI 產生 Envoy 設定檔範例:
- 確認您位於
$ENVOY_HOME
目錄。 - 列出可用的設定範本:
$CLI_HOME/apigee-remote-service-cli samples templates
執行範例指令。將 TEMPLATE 替換為其中一個支援的 Envoy 範本:
$CLI_HOME/apigee-remote-service-cli samples create --template TEMPLATE -c ./config.yaml
這個指令會建立
./samples/envoy-config.yaml
檔案。
詳情請參閱「樣本指令」。
安裝並執行 Envoy Proxy
請按照下列步驟安裝及執行 Envoy Proxy:
測試安裝結果
- 按照「如何取得 API 金鑰」一文說明,設定 API 產品並取得 API 金鑰。
- 呼叫
httpbin
服務,但不使用 API 金鑰: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
- 使用金鑰發出 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@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 轉換器
如要移除 Apigee Envoy 介面卡安裝作業,請按照下列步驟操作:
- 無論您選擇在何處執行 Envoy 介面卡 (在本機或 Docker 上),請移除該介面卡。
- 從 Apigee 環境中刪除 remote-service 和 remote-token Proxy。請參閱「刪除 API Proxy」。
- 移除 Envoy 介面卡用途使用的任何未用 API 產品或作業。請參閱刪除 API 產品。
後續步驟
API 流量現在由 Apigee 管理。httpbin
以下列舉幾個建議您探索及試用的功能:
- 在 Edge UI 中存取 Apigee Analytics。依序前往「分析」>「API 指標」>「API Proxy Performance」(API Proxy 效能)。
- 請參閱「參考資料」一文,瞭解 CLI 選項。