全部产品

Kubernetes 分批发布

Kubernetes 原生的应用升级基于终态模型,一旦发布出现问题无法暂停,只能通过YAML回滚应用。为了使 Kubernetes 应用发布过程更加可控。Flow 提供了 Kubernetes 分批发布的能力,以让发布过程更加可控。

实现原理

  • Kubernetes 使用 Service 在集群内暴露服务

  • Service 与Deployment 的 Pod 实例之间使用 Lables 进行关联,Service 的流量会转到到关联的 Deployment 实例

  • 假设 serviceA 关联了应用 app-v1 并且其 Replicas 副本数 > 1

  • 分批发布开始创建 app-v2 并继承 app-v1 的所有标签,此时 serviceA 的流量会随机转发到 v1 和 v2

  • 分批发布过程通过扩容 app-v2 和缩容 app-v1 实现应用的发布

  • 发布过程暂停时,用户可以选择继续继续发布,直到 app-v2 达到预期状态

  • 或者回滚移除 app-v2 并恢复 app-v1 的副本数

添加分批发布任务

用户可以通过添加流水线任务并选择 ”Kubernetes 分批发布“任务:

配置发布任务

首次使用 Kubernetes 相关发布功能的用户需要首先建立 Kubernetes 服务连接

选择发布的目标 Service 以及 Service 关联的 Deployment 中的容器名称。镜像需要由上游镜像构建步骤产生:

执行分批发布

当使用分批发布第一批暂停,当第一批次发布完成后,卡片会显示暂停状态,并提示用户继续下一批次或者回滚

在人工验证完成后,选择继续发布完成后续批次的发布