Apigee hybrid 支援兩種更新方式。第一種是原地更新,您會套用設定變更,混合式系統就會開始進行 Kubernetes 滾動式更新。在 Kubernetes 中,滾動式更新可透過新 Pod 逐步更新 Pod 例項,讓部署作業更新過程中無需停機。
Apigee hybrid 也支援 Canary 或 AB 式更新。在 AB 更新中,系統會部署新修訂版本,但一開始只會將一小部分流量導向該版本。隨著時間推移,這個百分比會增加,直到所有流量都轉移至修訂版本為止。
原地更新
如要觸發原地更新,只要在覆寫檔案中修改所需設定,然後套用至叢集即可。舉例來說,假設您想將目前的 runtime 記憶體從 1Gi 變更為 5Gi:
以下是初始設定:
...
runtime:
replicaCountMin: 2
replicaCountMax: 20
resources:
requests:
cpu: 1000m
memory: 1Gi
...在新設定中,記憶體已變更為 5Gi:
...
runtime:
replicaCountMin: 2
replicaCountMax: 20
resources:
requests:
cpu: 1000m
memory: 5Gi
...套用變更後,更新後的 Pod 就會啟動並取代現有的 Pod。由於 Kubernetes 的滾動式更新功能,客戶不會遇到任何停機時間。
如何執行 AB 測試更新
如要執行 AB 測試更新,請在覆寫檔案中使用 revision 標記。舉例來說,假設您想將目前的 runtime 記憶體從 1Gi 變更為 5Gi:
在目前的設定中,revision 已設為 blue:
...
revision: blue
...
runtime:
replicaCountMin: 2
replicaCountMax: 20
resources:
requests:
cpu: 1000m
memory: 1Gi
...
在新設定中,如果您將 revision 變更為 green,表示您希望在套用變更時執行滾動式更新。您為 revision 設定的值不重要,您可以使用任何字串,只要將其從先前的值變更為其他值即可。
...
revision: green
...
runtime:
replicaCountMin: 2
replicaCountMax: 20
resources:
requests:
cpu: 1000m
memory: 5Gi
...套用變更後,系統會將一小部分流量傳送至新修訂版本。隨著時間推移,流量會逐漸轉移至新修訂版本,直到達到 100% 為止。屆時舊修訂版本就會遭到刪除。
如要觸發 AB 測試,請在缺少 revision 標記時新增該標記,或是在已存在 revision 標記時變更其值。您不需要對覆寫檔案進行任何其他變更,即可觸發 AB 測試。
下表為 AB 測試的時間表:
| 階段 | 流量百分比 | 等待時間 |
|---|---|---|
| 1 | 5% | 60 秒 |
| 2 | 20% | 10 秒 |
| 3 | 100% | 10 秒 |
在目前版本中,您無法設定百分比和等待時間。