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 秒 |
在当前版本中,无法配置百分比和等待用时。