您目前查看的是 Apigee Edge 說明文件。
前往 Apigee X 說明文件。 info
開始使用
- 如何安裝 Edge Microgateway?
- 請參閱「安裝 Edge Microgateway」。
- 如何執行 Edge Microgateway?
- 請參閱「 設定及配置 Edge Microgateway」。
- 我需要資料庫才能執行 Microgateway 嗎? 透過 Edge Microgateway 代理的
- API 可能會與資料庫互動,而資料庫是目標服務的一部分。不過,Edge Microgateway 的運作方式與任何資料庫或後端資料儲存區無關。
作業
- 在 Edge 上進行哪些變更時,需要重新啟動 Edge Microgateway?
- Edge Microgateway 會自動輪詢 Apigee Edge 上的變更,例如微閘道感知 Proxy、產品或開發人員應用程式的變更。預設輪詢間隔為 600 秒,但您可以使用
config_change_poll_interval設定變更間隔。請參閱「 edgemicro 屬性」。 - 如不想等待輪詢間隔,請使用
edgemicro reload指令擷取最新變更。請參閱「 重新載入微閘道叢集」。 - 如何區分部署在 Edge 的 Proxy 與 Edge Microgateway 的 Proxy?
- 設定 Edge Microgateway 時,系統會將部署在 Apigee Edge 上的微閘道感知 Proxy 清單,下載到 Edge Microgateway 的本機設定。微閘道感知 Proxy 的名稱會加上
edgemicro_前置字元。 - 使用 Edge Microgateway 記錄時,有哪些選項?
- Edge Microgateway 內建記錄功能。詳情請參閱「 管理記錄檔」。
- 您也可以編寫自訂外掛程式,搭配 Edge Microgateway 使用第三方記錄服務。由於 Edge Microgateway 的運作方式,您無法使用 Apigee Edge Message Logging 政策,記錄 Edge Microgateway 的訊息。另請參閱「 Logging Plugin for Microgateway」社群文章。
- 我可以在 Edge Microgateway 執行個體之間重複使用金鑰/密碼組合嗎?
- 只要 Microgateway 執行個體的機構和環境相同,您就可以重複使用設定期間產生的金鑰/密碼組合。
- 如何設定 Edge Microgateway,以便在正式環境中啟動?
- 你可以為啟動指令參數設定環境變數,例如
EDGEMICRO_KEY、EDGEMICRO_SECRET、EDGEMICRO_ORG和EDGEMICRO_ENV。您可以使用這些 (和其他) 變數,透過單一指令edgemicro start啟動 Edge Microgateway。另請參閱「 設定環境變數」。 - 我可以將自訂產品或開發人員應用程式屬性搭配 Edge Microgateway 使用嗎?
- 不會。根據預設,Edge Microgateway 只會處理與基本路徑和安全性相關的屬性。不過,您可以採取下列任一做法:
-
將自訂屬性新增至 Edge Microgateway 部署至 Apigee Edge 的
edgemicro-authProxy。使用 API 金鑰或 OAuth 權杖安全機制時,即可使用這些屬性。 - 修改 OAuth 外掛程式,對這些屬性採取行動。
-
將自訂屬性新增至 Edge Microgateway 部署至 Apigee Edge 的
- 要求標頭大小是否有限制?
- 如果將 Node.js 升級至 v8.14.0 以上版本,請注意,要求允許的標頭大小上限已從 80 KB 縮減至 8 KB。如果標頭超過 8 KB,就會導致 HTTP 431 錯誤。
- Node.js v11.6.0 新增的 Node.js 設定選項可讓您變更預設的最大標頭大小。這個參數
--max-http-header-size可讓您指定 HTTP 標頭的大小上限 (以位元組為單位)。 - 如要變更預設設定,請在指令列中設定
NODE_OPTIONS環境變數的值,如下所示:NODE_OPTIONS=--max-http-header-size=NUM_BYTES
例如:
NODE_OPTIONS=--max-http-header-size=80000
Edge Microgateway 使用哪些管理 API?
下列 Edge Microgateway 指令會呼叫 Apigee Edge 管理 API 來執行工作,如 Edge Microgateway 的 CLI 參考資料所述:
edgemicro configureedgemicro upgradeauthedgemicro upgradekvmedgemicro rotatekeyedgemicro cert checkedgemicro cert deleteedgemicro cert install
以下各節列出每個指令使用的管理 API 呼叫。
edgemicro configure 和 upgradeauth 指令會呼叫下列管理 API:
- (列出部署作業)
GET: https://api.enterprise.apigee.com/v1/o/[org]/apis/edgemicro-auth/deployments - (取得部署資訊)
GET: https://api.enterprise.apigee.com/v1/o/[org]/apis/edgemicro-auth - (上傳資源)
POST: https://api.enterprise.apigee.com/v1/o/[org]/apis/edgemicro-auth/revisions/1/resources?type=java&name=micro-gateway-products-javacallout-2.0.0.jar - (上傳資源)
POST: https://api.enterprise.apigee.com/v1/o/[org]/apis/edgemicro-auth/revisions/1/resources?type=jsc&name=adjust-quota.js - (上傳資源)
POST: https://api.enterprise.apigee.com/v1/o/[org]/apis/edgemicro-auth/revisions/1/resources?type=jsc&name=generate-jwk.js - (上傳資源)
POST: https://api.enterprise.apigee.com/v1/o/[org]/apis/edgemicro-auth/revisions/1/resources?type=jsc&name=generate-verify-jwt.js - (上傳資源)
POST: https://api.enterprise.apigee.com/v1/o/[org]/apis/edgemicro-auth/revisions/1/resources?type=jsc&name=jsrsasign-all-min.js - (上傳資源)
POST: https://api.enterprise.apigee.com/v1/o/[org]/apis/edgemicro-auth/revisions/1/resources?type=jsc&name=jwt-initialization.js - (上傳資源)
POST: https://api.enterprise.apigee.com/v1/o/[org]/apis/edgemicro-auth/revisions/1/resources?type=jsc&name=send-jwk-response.js - (上傳資源)
POST: https://api.enterprise.apigee.com/v1/o/[org]/apis/edgemicro-auth/revisions/1/resources?type=jsc&name=send-product-list.js - (上傳資源)
POST: https://api.enterprise.apigee.com/v1/o/[org]/apis/edgemicro-auth/revisions/1/resources?type=jsc&name=send-public-key.js - (上傳資源)
POST: https://api.enterprise.apigee.com/v1/o/[org]/apis/edgemicro-auth/revisions/1/resources?type=jsc&name=set-jwt-variables.js - (上傳資源)
POST: https://api.enterprise.apigee.com/v1/o/[org]/apis/edgemicro-auth/revisions/1/resources?type=jsc&name=set-quota-variables.js - (上傳資源)
POST: https://api.enterprise.apigee.com/v1/o/[org]/apis/edgemicro-auth/revisions/1/resources?type=jsc&name=set-response.js - (上傳資源)
POST: https://api.enterprise.apigee.com/v1/o/[org]/apis/edgemicro-auth/revisions/1/resources?type=jsc&name=validate-params.js - (建立 API Proxy)
POST: https://api.enterprise.apigee.com/v1/o/[org]/apis?action=import&validate=false&name=edgemicro-auth - (上傳政策)
POST: https://api.enterprise.apigee.com/v1/o/[org]/apis/edgemicro-auth/revisions/1/policies - (上傳 Proxy)
POST: https://api.enterprise.apigee.com/v1/o/[org]/apis/edgemicro-auth/revisions/1/proxies?name=default - (部署 Proxy)
POST: https://api.enterprise.apigee.com/v1/o/[org]/e/[env]/apis/edgemicro-auth/revisions/1/deployments
upgradekvm 指令會呼叫下列管理 API:
PUT: https://api.enterprise.apigee.com/v1/organizations/[org]/environments/[env]/keyvaluemaps/microgateway
rotatekey 指令會呼叫下列管理 API:
GET: https://api.enterprise.apigee.com/v1/organizations/[org]/environments/[env]/keyvaluemaps/microgateway/entries/private_key
cert check 指令會呼叫下列管理 API:
GET: https://api.enterprise.apigee.com/v1/organizations/[org]/environments/[env]/keyvaluemaps/microgateway
cert delete 指令會呼叫下列管理 API:
DELETE: https://api.enterprise.apigee.com/v1/organizations/[org]/environments/[env]/keyvaluemaps/microgateway
cert install 指令會呼叫下列管理 API:
POST: https://api.enterprise.apigee.com/v1/organizations/[org]/environments/[env]/keyvaluemaps
部署作業
- 我可以在執行目標服務的同一部伺服器上部署 Edge Microgateway 嗎?
- 可以。Edge Microgateway 是輕量級程序,可靠近目標服務執行,包括在同一部機器上執行。
- 我可以將現有的 Edge Proxy 套裝組合部署為 Edge Microgateway 部署作業嗎?
- 否。支援 Edge Microgateway 的 Proxy 有特定需求,且不支援一般 Edge Proxy 的所有功能。請參閱第 2 部分:在 Apigee Edge 上建立實體
- 我可以為同一個 API Proxy,在 Edge Proxy 套件部署作業和 Edge Microgateway 部署作業之間啟用容錯移轉嗎?
- 否。Edge Microgateway 不知道 Apigee Edge 上非微閘道 API Proxy 的部署作業。
- Edge Microgateway 的高可用性部署模型為何?
- 如要深入瞭解如何使用 NGINX 做為負載平衡器來執行 Edge Microgateway,請參閱「 使用 Apigee Edge Microgateway 和 NGINX 管理 API」。
- Edge Microgateway 可搭配哪些負載平衡器使用?
- Edge Microgateway 可搭配任何負載平衡器使用。
- 我部署的 Edge Microgateway 代理伺服器數量是否有限制?
- 請參閱為一般 Edge 代理指定的產品設定限制。您在 Apigee Edge 機構和環境中部署的微閘道感知 Proxy 數量,以及透過 Edge Microgateway 呼叫的 Proxy 數量,都必須符合這些限制。
- 我可以將 Edge Microgateway 部署作業與特定機構和環境建立關聯嗎?
- 設定 Edge Microgateway 執行個體時,必須將其與特定 Edge 機構和環境建立關聯。
- 如果我是多區域客戶,可以將 Edge Microgateway 部署作業與特定區域建立關聯嗎?
- Edge Microgateway 會自動選擇與 Apigee Edge 互動的最佳區域。 您可以在要提供服務的每個區域中,部署 Edge Microgateway 執行個體。
管理
- 我是否需要成為機構管理員,才能設定及部署 Edge Microgateway?
- 可以。您必須具備機構組織管理員憑證,才能設定及部署 Edge Microgateway。
- 我是否需要成為機構管理員,才能執行 Edge Microgateway?
- 否。Edge Microgateway 是
Node.js應用程式,只要有權在特定機器上執行這類應用程式,任何人都能執行。 - 機構使用者都能使用 Edge Microgateway 嗎?
- 您不需要是 Apigee Edge 機構使用者,即可透過 Edge Microgateway 發出 API 呼叫。不過,您必須具備機構層級權限,才能建立或變更部署在 Edge 上的 Edge Microgateway 感知 Proxy。
效能
- 使用 Edge Microgateway 時,應考量哪些效能因素?
- 如果 Edge Microgateway 與目標應用程式共用伺服器,請確保伺服器有足夠容量。
- 大規模執行 Edge Microgateway 的最佳做法為何?
- Apigee 建議在不同伺服器上執行多個 Edge Microgateway 執行個體,並以 NGINX 等負載平衡器做為前端。另請參閱 Apigee 社群的「 使用 Apigee Edge Microgateway 和 NGINX 管理 API」和「 垂直水平擴縮」。
- Edge Microgateway 的預設 TPS 為何?Microgateway 執行個體需要哪些硬體需求?
- 使用 Edge Microgateway 時,很難評估硬體需求和 TPS 測量結果。這取決於您的設定,包括調整 Edge Microgateway、外掛程式使用情形、自訂外掛程式,以及設定 TLS 等其他項目。Apigee 通常會建議您瞭解這些項目的組合,並使用特定設定進行效能測試。
私有雲部署
- Edge Microgateway 是否適用於 Edge for Private Cloud?
- 可以。詳情請參閱「 Apigee Private Cloud 設定步驟」。
外掛程式
- 如何透過 Edge Microgateway 強制執行配額?
- 您可以視需要將配額外掛程式新增至 Edge Microgateway 執行個體。詳情請參閱「使用配額外掛程式」。
- Edge Microgateway 如何強制執行尖峰流量限制?
- 您可以選擇在 Edge Microgateway 執行個體中新增尖峰流量抑制外掛程式。詳情請參閱「使用尖峰抑制外掛程式」。
- 除了
Node.js,還有其他方法可以編寫 Edge Microgateway 外掛程式嗎? - 否。外掛程式必須以
Node.js編寫。 - 如果 Edge Microgateway 無法將 Analytics 資料上傳至 Edge,會發生什麼情況?
- Edge Microgateway 具有記憶體內緩衝區。如果緩衝區已滿,系統會捨棄較舊的酬載,確保 API 流量順暢。
- 我可以為 Edge Microgateway 新增政策嗎?
- 如果您將一般 Apigee Edge 政策附加至 Apigee Edge 中的微閘道感知 Proxy,系統會忽略這些政策。Edge Microgateway 會使用外掛程式,提供與 Edge 政策類似的功能,例如配額、尖峰流量防範、API 金鑰安全性和 OAuth2 安全性。您也可以自行編寫外掛程式。請參閱「使用外掛程式」和「開發自訂外掛程式」。
如要瞭解其他外掛程式用途,請參閱下列 Apigee 社群貼文和網誌:
安全性
- 如何保護
/products資源? - 總覽
- 設定 Edge Microgateway 時,系統會將名為
edgemicro-auth的 API Proxy 部署至 Apigee Edge 的機構:環境。這個 Proxy 會公開/products端點,傳回 API 產品清單。如果您在 2018 年 10 月 5 日當天或之前安裝 Edge Microgateway,Apigee 建議您採取相關措施保護這個端點,因為回應中會包含在 Apigee 機構中建立及修改 API 產品的開發人員電子郵件地址。 - 您可以升級 Edge Microgateway 或設定相互傳輸層安全標準 (TLS),保護端點。這兩種做法的說明如下。
- 檢查
/products端點是否受到保護 -
如果不確定
/products端點是否受到保護,請前往「確認/products資源受到保護」一節,按照其中的步驟操作,然後再繼續。方法 1:升級 Edge Microgateway
如果您在 2018 年 10 月 5 日當天或之前安裝 Edge Microgateway,Apigee 建議您升級至最新版 Edge Microgateway。請按照「 如果可以連上網際網路,請升級 Edge Microgateway」一文的步驟操作。
如果目前無法升級,請參閱「方法 2」。
選項 2:設定雙向傳輸層安全標準 (TLS)
如果您目前無法升級 Edge Microgateway,Apigee 建議您使用相互傳輸層安全標準 (又稱雙向 TLS),保護 Edge Microgateway 與
edgemicro-authProxy 之間的通訊。- 開啟
$HOME/.edgemicro/org-env-config.yaml檔案。如果找不到這個檔案,請參閱「 Edge Microgateway 安裝位置」。 - 將下列
tlsOptions區塊新增至org-env-config.yaml檔案,啟用 Edge Microgateway 與 Apigee Edge 之間的雙向傳輸層安全標準 (mTLS):edge_config: bootstrap: >- https://domain/edgemicro/bootstrap/organization/org/environment/env jwt_public_key: 'https://domain/edgemicro-auth/publicKey' managementUri: 'https://api.enterprise.apigee.com' tlsOptions: agentOptions: requestCert: true cert: 'path/to/cert' key: 'path/to/key'例如:
tlsOptions: agentOptions: requestCert: true cert: '/Users/jdoe/twowayssl/ssl/client.key' key: '/Users/jdoe/twowayssl/ssl/ca.crt'您也可以加入下列選用
agentOptions參數:ca:指定憑證授權單位的路徑。pfx:如要使用 p12/pfx 檔案,而非憑證和金鑰,請加入這個參數。passphrase:pfx 檔案的通關密語。ciphers:指定 TLS 密碼。
- 確認部署
edgemicro-authProxy 的虛擬主機已啟用 mTLS。 詳情請參閱 Apigee Edge 說明文件中的「定義雙向 TLS 的虛擬主機」。下圖顯示如何在 Apigee Edge UI 中,對虛擬主機啟用相互 TLS:
- 在 Edge UI 中查看
edgemicro-authAPI Proxy,確認 Proxy 設定中指定的虛擬主機正確無誤。舉例來說,如果您建立名為mutualtls的虛擬主機並啟用 TLS,則 Proxy 的HTTPProxyConnection節應如下所示:<HTTPProxyConnection> <BasePath>/edgemicro-auth</BasePath> <Properties/> <VirtualHost>mutualtls</VirtualHost> </HTTPProxyConnection>
- 開啟
/products 資源受到保護/products 資源是否受到保護。完成資源保護步驟 (方法 1 或方法 2) 後,請務必執行這項測試。舉例來說,您可以使用 cURL 執行這項操作:
curl -v https://your_domain/edgemicro-auth/products
/products 端點受到保護:
{
"error":"unauthorized",
"error_description": "authentication failed"
}或
curl: (35) error:1408F10B:SSL routines:ssl3_get_record:wrong version number
如果看到類似以下的回應,表示 /products 資源未受保護,開發人員電子郵件可能會曝光:
{ "apiProduct":[ { "apiResources":[ "/", "/**" ], "approvalType":"auto", "attributes":[ ], "createdAt":1537374680948, "createdBy":"jdoe@foo.com", "description":"", "displayName":"mock", "environments":[ "test" ], "lastModifiedAt":1537374680948, "lastModifiedBy":"test@test.com", "name":"mock", "proxies":[ "edgemicro-auth", "edgemicro_mock" ], "quota":"null", "quotaInterval":"null", "quotaTimeUnit":"null", "scopes":[ "" ] } ] }
Apigee 也建議您測試 HTTP 虛擬主機:
例如:
curl -v http://your_domain/edgemicro-auth/products
如果 cURL 呼叫傳回 API 產品清單,開發人員電子郵件地址可能就會曝光。如果您不希望透過這個非 TLS 虛擬主機公開端點,請務必從 edgemicro-auth HTTPProxyConnection 設定中移除該端點。
如要保護資源,請採取下列任一做法:
目前無法為特定 Edge Microgateway 執行個體續訂 JWT 權杖。
解決方法:
每個 JWT 權杖都有 exp 屬性,說明權杖的到期日。應用程式可以計算到期時間,然後直接向 edgemicro-auth 權杖端點發出 API 呼叫,要求新權杖。舉例來說,您可以進行如下的 API 呼叫:
POST https: //{your_org}-{your_env}.apigee.net/edgemicro-auth/token
... 且 JSON 主體如下所示:
{ "client_id": {your_id}, "client_secret": {your_secret},
"grant_type": "client_credentials" }
另請參閱:
- 請參閱 Edge Microgateway 文件,瞭解如何使用 OAuth 權杖或 API 金鑰保護 API 安全。
- Apigee 社群的承載權杖到期時,如何續訂?
目前系統只會檢查基礎路徑,判斷 API 是否已獲准用於與特定 OAuth 權杖相關聯的 API 產品。
例如:
- 您可以使用基本路徑和目標建立
edgemicro_前置字元的 Proxy。 - 將這個 Proxy 新增至產品。我們就稱之為
edgemicro-prod1。 - 透過 Edge Microgateway 使用 API 金鑰或 OAuth 權杖發出 API 呼叫時,Edge Microgateway 會檢查 API 的 basepath 是否與
edgemicro_*Proxy 的 basepath 相符,且該 Proxy 已獲准列入該金鑰或權杖核准的產品清單。
目前僅支援預設 Apigee SSL 憑證。目前不支援自訂 SSL 憑證。
解決方法:
如要使用自訂 (非 Apigee 預設) SSL 憑證,可以選擇下列做法:
-
使用非 SSL
jwt_public_key端點。修改 Edge Microgateway 設定檔,使用http://{org}-{env}.apigee.net/edgemicro-auth/publicKey-或- -
啟動 Edge Microgateway 前,請設定這項環境變數:export
NODE_TLS_REJECT_UNAUTHORIZED ="0"
另請參閱 Apigee 社群的「 Verify Edge Micro install errors on SSL cert」。
edgemicro-auth Proxy 部署至 Edge,而這項部署作業需要機構管理員憑證。你可以使用自己的權杖,但必須先關閉 Edge Microgateway 的內建授權。做法如下:
- 開啟 Edge Microgateway 的設定檔。
-
將兩個 OAuth 設定變更為 true,如下所示:
oauth: allowNoAuthorization: true allowInvalidAuthorization: true
edgemicro start -o [org] -e [env] -k [key] -s [secret]測試與偵錯
- 如何避免在負載測試期間發生「開啟的檔案過多」錯誤?
-
在某些情況下,系統可能會開啟過多檔案連線,導致 Edge Micro 當機。根據預設,記錄透過 Microgateway 傳入和傳出的交易時,需要兩個 HTTP 連線。
為進行測試和基準化作業,Apigee 建議將系統的 ulimit 指令設為無限制:
ulimit -n unlimited。另請參閱 Apigee 社群中的「Edge Microgateway error during load testing」。 - 快速開發和偵錯的訣竅
-
如果您要開發 Edge Microgateway 的外掛程式,可能會發現快速開發的支援有限。
目前,我們提供以下訣竅:
- 如要啟動 Edge Microgateway,請將環境變數 EDGEMICRO_KEY 和 EDGEMICRO_SECRET 設為 Microgateway 啟動指令所需的金鑰/密鑰配對。這樣一來,您就能啟動 Edge Microgateway,而不必在指令列中輸入金鑰/密碼。另請參閱 Edge Microgateway 說明文件中的「 設定環境變數」。
-
以 DEBUG 模式啟動 Edge Microgateway,即可在指令終端機中查看其他輸出內容:
DEBUG=* edgemicro start -o [org] -e [env] -k [key] -s [secret]
業務和授權
- Apigee-127 和 Edge Microgateway 支援模式之間的關係為何?
-
Apigee-127 是開放原始碼軟體專案,支援開放原始碼模式。也就是說,您可以在 GitHub 專案中提出問題,並在嘗試修正某些項目時提出提取要求。Apigee-127 不需要或包含任何與 Apigee 簽訂的軟體授權協議。
Edge Microgateway 則是企業產品,Apigee 會為 Apigee 客戶提供支援。也就是說,Apigee 客戶可以使用 Google Cloud Apigee Edge 支援建立支援單、提出功能要求及回報錯誤。