關於環境

環境提供獨立的內容或「沙箱」,用於執行 API Proxy。您可以在單一機構中建立多個環境。

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

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

假設具有基本路徑 /foo1 的 Proxy 部署至 test 環境。您可以這樣呼叫 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 數量,以及管理 Proxy 部署作業時需要考量的事項:

需要考慮的問題 說明
訊息處理器啟動時間 訊息處理器 (MP) 的啟動時間長度與部署至該 MP 的 Proxy 數量直接相關。在自動調度資源的 Kubernetes 環境中,啟動時間變長可能會造成問題。部署至 MP 的 Proxy 越多,如果需要擴充或重新建立 MP,所需時間就越長。
擴充效能 如果您在環境中部署多個 Proxy,其中一個 Proxy 的流量過大,導致系統頻繁自動調度資源,該環境中的所有 Proxy 都會隨之調度資源。使用單一高流量 Proxy 擴充多個 Proxy 的效能可能會造成問題。
吵鬧的鄰居 如果您在同一個環境中部署多個 Proxy,其中一個 Proxy 發生當機情形時,環境中的所有 Proxy 都會停止運作,MP 則會重新啟動。限制部署至環境的 Proxy 數量,可將單一 Proxy 發生當機的影響降至最低。

環境群組和虛擬主機

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

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

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

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

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

org: hybrid-example

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

其他資源