環境會為執行 API 代理程式提供隔離的背景或「沙箱」。 您可以在單一機構中建立多個環境。詳情請參閱「關於環境和環境群組」。
在基本安裝期間,您新增了測試環境。不過,建議您建立多個環境,並在每個環境中部署有限數量的 Proxy。
關於虛擬主機和環境
Apigee hybrid 會使用 Istio 輸入閘道處理傳入的 API 流量。MART 和執行階段服務都已設定 Istio 入口閘道,以便管理叢集外公開的連線。舉例來說,這表示 Istio 入口閘道會先處理所有傳送至 API Proxy 的 HTTP 和 HTTPS 要求。
在混合式中,您會建立一或多個環境,並為每個環境指派主機別名。主機別名是 DNS 名稱。針對該 DNS 名稱的流量,Ingress 會將流量轉送至該環境。在內部,每個環境都會指派給一個且只有一個 訊息處理器,負責處理 Proxy 要求、套用政策,以及將流量路由至目標服務和從目標服務傳送。因此,主機別名會決定哪個訊息處理器會接收任何指定的傳入要求。
以下程式碼為設定範例,其中定義了多個環境。(這類設定應放在覆寫檔案中)。請注意,dev1 和 prod1 環境有不同的主機別名:
envs: - name: dev1 hostAlias: "apitest.mydomain.net" ... - name: prod1 hostAlias: "apiprod.mydomain.net" ...
假設有一個基本路徑為 /foo1
的 Proxy 部署至環境 dev1。您可以呼叫 Proxy,如下所示:
curl -k https://apitest.mydomain.net/foo1
當這項呼叫命中 ingress 時,ingress 會知道要將其傳送至與 dev1
環境相關聯的訊息處理工具,以便處理要求。
同樣地,如果 foo1
也部署至 prod1
環境,您可以向主機別名 apiprod.mydomain.net
提出類似的 Proxy 要求:
curl -k https://apiprod.mydomain.net/foo1
然後由 ingress 將呼叫轉送至與該主機相關聯的 MP。
總而言之,您建立的每個環境都必須指派主機別名。每個環境都會對應至一個 (且只有一個) 訊息處理器,而主機別名會決定哪個訊息處理器會收到特定要求。
環境可以共用相同的主機別名
Apigee hybrid 可讓您建立多個環境,並視需要管理。舉例來說,您可以建立多個開發環境,例如 dev1、dev2、dev3 等等,並為每個環境對應單一主機別名。此外,您也可以在每個環境中部署多個 Proxy。
反模式:將所有 Proxy 部署至單一混合式環境。
最佳做法:建立多個環境,並在每個環境中部署有限數量的 Proxy。管理混合路由如何將 Proxy 呼叫傳送至共用主機別名的正確環境的技術稱為「基本路徑路由」。
舉例來說,在下列設定中,環境 dev1 和 dev2 共用相同的主機別名:
envs: - name: dev1 hostAlias: "apitest.mydomain.net" ... - name: dev2 hostAlias: "apitest.mydomain.net" ...
如果多個環境共用相同的主機別名,您必須使用稱為「基本路徑路由」的設定技巧,將特定 Proxy 基本路徑對應至特定環境。詳情請參閱基本路徑轉送。
限制 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
。
使用環境
如要進一步瞭解設定,請參閱下列主題: