持续交付提供 Kubernetes 滚动发布 任务,支持用户设置部署策略,对 Kubernetes 集群上的 Deployment 进行按实例分批滚动发布,保证滚动发布过程更加可控。
背景信息
Kubernetes 滚动发布 任务通过滚动批次、每批比例、等待时间 3 个参数控制具体的部署策略。
例如:10 个实例分 3 批部署,批次比例为 30%、30%、40%,等待时间为 5 分钟。则 10 个实例将分 3 批进行滚动升级,每批升级数量为 3、3、4。每批升级完成后,任务将进入暂停状态,需人工确认是否开始下一批升级。若超过 5 分钟仍未确认,则判断部署失败,系统自动触发回滚操作,回滚到升级前版本。
前提条件
- 滚动发布任务使用 Service 关联多个 Deployment 版本,请确保您已提前配置集群的 Service 信息。容器服务集群配置 Service 的具体操作可参考 配置服务。
- 已接入待部署的集群,具体操作请参见 接入部署资源。
- 若目标镜像为私有镜像,请注意在部署集群提前设置密钥或配置免密组件。在容器服务配置可参考 配置保密字典、配置免密组件。
使用限制
- 当目标应用处于部署中时,不支持重复部署。例如:A 流水线部署 deployment-a 应用的过程中,B 流水线发起的部署 deployment-a 应用任务会自动失败。
- 目标镜像地址不允许与原镜像地址完全相同,请至少修改目标镜像的版本号。镜像地址用于区分不同的镜像,若目标镜像地址与原镜像地址完全相同,应用的镜像将不会被更新。
添加任务
创建或编辑流水线时,在 流程配置 页签,单击 添加任务,弹出 添加任务 抽屉。任务模板选择 Kubernetes 滚动发布。
参数说明
请按要求配置 Kubernetes 滚动发布任务。
配置项 | 说明 |
---|
步骤名称 | 默认为 Kubernetes 滚动发布,支持自定义步骤名称。 |
部署资源 | 选择已接入的待部署集群。 |
命名空间 | 选择或输入待部署应用所在的命名空间。 |
服务名称 | 选择或输入 Kubernetes 滚动发布的目标 Service。 Service 用于在滚动发布中关联多个应用版本,保证整个发布过程平滑可靠,服务不中断,用户无感知。 |
应用类型 | 设置 Service 关联的工作负载类型及名称。 - 选择待部署的工作负载类型,仅支持 Deployment。
- 选择或输入待部署的 Deployment 名称。若自行输入,需与您创建 Deployment 时的名称一致。
|
容器名称 | 选择或输入待部署的具体 Container 名称,确保 Pod 中存在多个 Container 时应该升级对应的镜像。 |
镜像 | 设置要部署的目标镜像地址。支持使用上游产物生成的镜像或您提前准备好的镜像,请按需选择。 - 上游产物:选择前序镜像打包任务的产出物作为目标镜像。
- 自定义:输入提前准备好的镜像地址作为目标镜像。镜像地址示例:
cr-cn-beijing.volces.com/cp-automator/cp:v1 。
|
部署策略 | 配置滚动发布任务的部署策略,包括滚动批次、每批比例、等待时间 3个参数。 - 滚动批次:设置分批发布策略的批次。每个批次发布完成后流程进入等待状态,需人工确认是否继续部署。 默认为 3 次,可选范围:2 ~ 10 次。
- 每批比例:设置每批发布的比例。最后一个批次比例由前序批次调整后自动算出,不允许修改。比例之和必须为 100%。
实例数量 * 每批比例 = 一次升级的数量,若不为整数向下取整,多余的实例最后一批升级完成。 例如: 10 个实例分 3 批部署,批次比例为 30%、30%、40%,则每批部署数量为 3、3、4。 - 等待时间:设置用于人工确认的最大等待时间。若超过等待时间仍未人工确认继续部署还是回滚,则判断部署失败,系统自动触发回滚操作,回滚到升级前版本。默认为 300 s,可选范围:1 ~ 7200 s。
|
发布过程
Kubernetes 滚动发布任务执行过程中,每一批次发布完成后,流水线都会进入暂停状态,需在有效时间内人工确认是否继续部署。若超过等待时间仍未人工确认,则判断部署失败,系统自动触发回滚操作,回滚到升级前版本。
- 立即部署:结束等待,继续按照用户配置的分批策略进行下一批次部署。
- 立即回滚:结束等待,所有实例回滚到升级前版本。
说明
若滚动发布任务运行失败,系统将自动触发回滚,回滚到升级前版本。
日志、产物与部署详情
在当前流水线的 最近运行详情 > 运行流程 标签页,单击 Kubernetes 滚动发布任务卡片的标题,查看运行日志、产物、部署详情及任务配置信息。
- 运行日志:实时展示该任务的运行日志。
- 部署详情:实时展示新旧版本的实例列表信息,包括实例名称、运行状态、启动时间。所有新版本实例均处于 Running 状态表示发布成功。
- 配置:展示该任务的配置参数,详情可参考前文的参数说明。
- 产物:展示该任务使用的目标镜像地址。