Apigee Hybrid 支持两种更新。第一种是就地更新,在该模式下,您应用配置更改,并且 Hybrid 启动 Kubernetes 滚动更新。在 Kubernetes 中,滚动更新逐步将 pod 实例更新为新的 pod 实例,从而实现零停机时间的 Deployment 更新。
Apigee Hybrid 还支持 Canary 更新或 AB 更新。在 AB 更新中,当新的修订版本部署后,起初只有少数流量定向到新版本。随着时间的推移,此百分比会增大,直至所有流量都定向到修订版本。
就地更新
要触发就地更新,只需在替换文件中修改所需设置并将其应用于集群即可。例如,假设您希望将当前的 runtime
内存从 1 Gi 更改为 5 Gi:
以下是初始配置:
... runtime: replicaCountMin: 2 replicaCountMax: 20 resources: requests: cpu: 1000m memory: 1Gi ...
在新配置中,内存更改为 5 Gi:
... runtime: replicaCountMin: 2 replicaCountMax: 20 resources: requests: cpu: 1000m memory: 5Gi ...
在您应用更改后,更新后的 pod 将启动并替换现有 pod。Kubernetes 的滚动更新功能使客户端完全无需停机。
如何执行 AB 更新
如需执行 AB 更新,请在替换文件中使用 revision
标记。例如,假设您希望将当前的 runtime
内存从 1 Gi 更改为 5 Gi:
在当前配置中,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 秒 |
在当前版本中,无法配置百分比和等待用时。