滚动更新

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 秒

在当前版本中,无法配置百分比和等待用时。