環境會為執行 API 代理程式提供隔離的背景或「沙箱」。 您可以在單一機構中建立多個環境。詳情請參閱「關於環境和環境群組」。
以下程式碼顯示覆寫設定的範例,其中定義了多個環境。請注意,prod 和 test 環境有不同的主機別名:
namespace: my-namespace org: my-organization ... envs: - name: test serviceAccountPaths: synchronizer: "your_keypath/synchronizer-manager-service-account.json udca: "your_keypath/analytic-agent-service-account.json - name: prod serviceAccountPaths: synchronizer: "your_keypath/synchronizer-manager-service-account.json udca: "your_keypath/analytic-agent-service-account.json ...
virtualhosts
屬性,將其 routingRules
對應至環境。virtualhosts: - name: default hostAliases: ["api.example.com"] sslCertPath: ./certs/fullchain.pem sslKeyPath: ./certs/privkey.pem routingRules: - env: test
virtualhosts: - name: external hostAliases: ["apiprod.example.com"] sslCertPath: ./certs/fullchain.pem sslKeyPath: ./certs/privkey.pem routingRules: - env: prod
假設有一個 Proxy 已部署至環境 test,其基本路徑為 /foo1
。您可以呼叫 Proxy,如下所示:
curl -k https://api.example.com/foo1
當這項呼叫命中 ingress 時,ingress 會知道要將其傳送至與 test
環境相關聯的訊息處理工具,以便處理要求。
同樣地,如果 foo1
也部署至 prod
環境,您可以向主機別名 apiprod.mydomain.net
提出類似的 Proxy 要求:
curl -k https://apiprod.example.com/foo1
然後由 ingress 將呼叫轉送至與該主機相關聯的 MP。
反模式:將所有 Proxy 部署至單一混合式環境。
最佳做法:建立多個環境,並在每個環境中部署有限數量的 Proxy。您可以建立轉送規則,指定要將特定 API 代理程 basepath 轉送至哪些環境。詳情請參閱「虛擬主機設定」。
限制 Proxy 部署數量
對於混合式,由於許多環境可共用相同的虛擬主機,因此您必須仔細思考如何管理對任何特定環境的 Proxy 部署作業。在混合式中,最佳做法是建立多個環境,並在每個環境中部署有限數量的 Proxy。
您應該在環境中部署多少 Proxy?這個問題沒有固定答案,不過下表提供一般指引,說明為何限制部署至各環境的 Proxy 數量,以及管理 Proxy 部署作業時需要考量的事項:
需要考量的事項 | 說明 |
---|---|
訊息處理器啟動時間 | 訊息處理器 (MP) 啟動所需的時間與部署至該 MP 的 Proxy 數量之間有直接關聯。在自動調整的 Kubernetes 環境中,啟動時間增加可能會造成問題。部署至 MP 的 Proxy 越多,如果需要縮放或重建,MP 啟動所需的時間就會越長。 |
擴大效能 | 如果您在環境中部署了多個 Proxy,其中一個 Proxy 獲得大量流量,因此經常自動調整規模,那麼該環境中的所有 Proxy 都會隨之調整。使用單一高流量 Proxy 來擴充多個 Proxy 的效能效果可能會出現問題。 |
吵雜的鄰居 | 如果您在同一個環境中部署了多個 Proxy,其中一個 Proxy 發生當機,則在 MP 重新啟動時,環境中的所有 Proxy 都會關閉。限制部署至環境的 Proxy 數量,即可將單一 Proxy 當機的影響降至最低。 |
環境設定參考資料
如需完整的環境設定元素清單,請參閱「設定屬性參考資料」中的 envs
。
使用環境
如要進一步瞭解設定,請參閱下列主題: