您正在查看 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 的本機設定中。使用前置字串
edgemicro_
命名的 Proxy 會支援 Micro Gateway。 - 使用 Edge Microgateway 記錄時,有哪些選項?
- Edge Microgateway 內建記錄功能。詳情請參閱「 管理記錄檔」。
- 您也可以撰寫自訂外掛程式,以便在 Edge Microgateway 中使用第三方記錄服務。基於 Edge Microgateway 的運作方式,您無法使用 Apigee Edge 訊息記錄政策來記錄 Edge Microgateway 的訊息。另請參閱 Microgateway 適用的 Logging 外掛程式社群文章。
- 我可以在 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-auth
Proxy。使用 API 金鑰或 OAuth 權杖安全性時,這些屬性就會可用。 - 修改 OAuth 外掛程式以處理這些屬性。
-
將自訂屬性新增至 Edge Microgateway 部署至 Apigee Edge 的
- 要求標頭大小是否有限制?
- 如果您將 Node.js 升級至 v8.14.0 以上版本,請注意,要求的標頭大小上限已從 80 KB 降至 8 KB。標頭大小超過 8 KB 會導致 HTTP 431 錯誤。
- Node.js 在 Node.js 11.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 CLI 參考資料所述,下列 Edge Microgateway 指令會呼叫 Apigee Edge 管理 API 來執行工作:
edgemicro configure
edgemicro upgradeauth
edgemicro upgradekvm
edgemicro rotatekey
edgemicro cert check
edgemicro cert delete
edgemicro 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
指令會呼叫下列 Management API:
PUT: https://api.enterprise.apigee.com/v1/organizations/[org]/environments/[env]/keyvaluemaps/microgateway
rotatekey
指令會呼叫下列 Management 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 上非 Microgateway API Proxy 部署作業。
- Edge Microgateway 的高可用性部署模式為何?
- 如要進一步瞭解如何使用 NGINX 做為負載平衡器來執行 Edge Microgateway,請參閱「 使用 Apigee Edge Microgateway 和 NGINX 管理 API」。
- 我可以搭配 Edge Microgateway 使用哪些負載平衡器?
- Edge Microgateway 可與任何負載平衡器搭配使用。
- 我可以部署的 Edge Microgateway 代理伺服器數量是否有限制?
- 請參閱為一般 Edge 代理程式指定的產品設定限制。您可以在 Apigee Edge 機構和環境中部署的微型閘道感知 Proxy 數量,以及透過 Edge Microgateway 呼叫的數量,都必須符合這些限制。
- 我可以將 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 建議在 NGINX 等負載平衡器前端的不同伺服器上執行多個 Edge Microgateway 例項。另請參閱 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 例項中加入尖峰封鎖外掛程式。詳情請參閱「使用 Spike Arrest 外掛程式」。
- 除了
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 中的 organization:environment。這個 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 (也稱為雙向 TLS) 保護 Edge Microgateway 和
edgemicro-auth
proxy 之間的通訊。- 開啟
$HOME/.edgemicro/org-env-config.yaml
檔案。如果找不到這個檔案,請參閱「 Edge Microgateway 安裝位置」。 - 將下列
tlsOptions
區塊新增至org-env-config.yaml
檔案,即可在 Edge Microgateway 和 Apigee Edge 之間啟用雙向 TLS: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-auth
Proxy 的虛擬主機已啟用雙向傳輸層安全標準 (TLS)。詳情請參閱 Apigee Edge 說明文件中的「為雙向 TLS 定義虛擬主機」。以下螢幕截圖顯示如何在 Apigee Edge UI 中,在虛擬主機上啟用雙向傳輸層安全標準 (TLS):
- 請查看 Edge UI 中的
edgemicro-auth
API 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 社群。
目前,系統只會檢查基本路徑,藉此判斷特定 OAuth 權杖的 API 產品是否已獲準使用 API。
例如:
- 您可以使用基礎路徑和目標建立
edgemicro_
前置字首 Proxy。 - 您將這個 Proxy 新增至產品。我們將其稱為
edgemicro-prod1
。 - 當使用 API 金鑰或 OAuth 權杖透過 Edge Microgateway 發出 API 呼叫時,Edge Microgateway 會檢查 API 的 basepath 是否與
edgemicro_*
proxy 的 basepath 相符,該 proxy 已獲准列入該金鑰或權杖的產品清單。
另請參閱 Apigee Community 上的 這篇文章,瞭解在產品中使用 edgemicro 閘道時,哪些網址需要在資源下使用白名單。
目前僅支援預設 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 社群的「 驗證 Edge Micro 在 SSL 憑證上安裝錯誤」一文。
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 當機。根據預設,記錄功能需要兩個 HTTP 連線,用於透過 Microgateway 傳入和傳出的交易。
為了測試和基準測試,Apigee 建議將系統的 ulimit 指令設為無限制:
ulimit -n unlimited
。另請參閱 Apigee 社群中的「Edge Microgateway 在負載測試期間發生錯誤」。 - 快速開發與偵錯的訣竅
-
如果您正在開發 Edge Microgateway 外掛程式的外掛程式,可能會發現快速開發的支援功能有限。
以下提供一些訣竅:
- 如要啟動 Edge Microgateway,您可以將 EDGEMICRO_KEY 和 EDGEMICRO_SECRET 環境變數設為 Microgateway 啟動指令所需的金鑰/Secret 組合。這樣您無須在指令列中輸入金鑰/密鑰,就能啟動 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 支援服務建立支援單、功能要求和錯誤報告。