關於環境

環境會為執行 API 代理程式提供隔離的背景或「沙箱」。 您可以在單一機構中建立多個環境。

以下程式碼顯示覆寫設定的範例,其中定義了多個環境。

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
...

假設有一個 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。

限制 Proxy 部署數量

就混合型而言,由於許多環境可共用相同的虛擬主機 (如環境群組中所定義),因此您必須仔細思考如何管理對任何特定環境的 Proxy 部署作業。在混合式中,最佳做法是建立多個環境,並在每個環境中部署有限數量的 Proxy。

您應該在環境中部署多少 Proxy?這個問題沒有固定答案,不過下表提供一般指引,說明為何限制部署至各環境的 Proxy 數量,以及管理 Proxy 部署作業時需要考量的事項:

需要考量的事項 說明
訊息處理器啟動時間 訊息處理器 (MP) 啟動所需的時間與部署至該 MP 的 Proxy 數量之間有直接關聯。在自動調整的 Kubernetes 環境中,啟動時間增加可能會造成問題。部署至 MP 的 Proxy 越多,如果需要縮放或重建,MP 啟動所需的時間就會越長。
擴大效能 如果您在環境中部署了多個 Proxy,其中一個 Proxy 獲得大量流量,因此經常自動調整規模,那麼該環境中的所有 Proxy 都會隨之調整。使用單一高流量 Proxy 來擴充多個 Proxy 的效能效果可能會出現問題。
吵雜的鄰居 如果您在同一個環境中部署了多個 Proxy,其中一個 Proxy 發生當機,則在 MP 重新啟動時,環境中的所有 Proxy 都會關閉。限制部署至環境的 Proxy 數量,即可將單一 Proxy 當機的影響降至最低。

環境群組和虛擬主機

環境群組可讓您將環境分組。每個群組中的環境都會共用相同的主機名稱。您可以依功能、主機名稱位址、區域 (如果是實作多區域混合式安裝) 或任何其他自選指標,將環境分組。

由於路由是由環境群組主機名稱、API 代理程式基礎路徑和環境組合管理,因此每個虛擬主機只需列出環境群組名稱和任何適當的憑證即可。

以下程式碼為覆寫設定範例,其中定義了多個虛擬主機。請注意,虛擬主機的名稱必須是環境群組的名稱。

gcp:
  region: us-central1
  projectID: hybrid-example

k8sCluster:
  name: apigee-hybrid
  region: us-central1

org: hybrid-example

contractProvider: https://us-apigee.googleapis.com # if using data residency

instanceID: "my_hybrid_example"

virtualhosts:
  - name: group-1  # the name of an environment group
    sslCertPath: ./certs/keystore.pem
    sslKeyPath: ./certs/keystore.key

virtualhosts:
  - name: group-2
    sslCertPath: ./certs/keystore.pem
    sslKeyPath: ./certs/keystore.key
...

其他資源