在应用发布与产品迭代中,经常采用分批发布的方式来控制上线风险。

分批发布简介

分批发布是按照一定的批次,每次只对应用的一部分实例进行升级的发布过程。分批发布过程中如果出现故障,您可以终止变更过程并进行回滚,待问题修复后重新发布。

在K8s集群中,当一个应用进行分批发布时,是将该应用内的应用实例数均分到每一个批次进行部署,如果不能均分则批次靠前数量较小,批次靠后数量较大。

场景示意

现有一个应用包含10个应用实例,每个应用实例的部署版本为Ver.1版本,现需将每个应用实例升级为Ver.2版本。

假设将所有应用实例分3批进行部署,根据分批发布的策略,该发布的流程示意图如下:

ED分批发布示意图AS

使用须知

在K8s集群中,应用使用分批发布时会新建Deployment进行部署。

操作步骤

  1. 登录EDAS控制台
  2. 在左侧导航栏中选择应用管理 > 应用列表
  3. 应用列表页面选择地域命名空间,在集群类型下拉列表中选择容器服务/Serverless K8s集群,然后单击具体应用名称。
  4. 应用总览页面右上角选择部署 > 部署
  5. 选择部署模式页面分批发布区域单击开始部署
  6. 分批发布页面上传应用新版本的部署包。
    参数 描述
    应用运行环境 默认标准Java应用运行环境
    Java环境 选择Open JDK 8Open JDK 7JDK 8JDK 7Dragonwell 8
    文件上传方式 可选择上传JAR包JAR包地址两种方式进行上传。
    说明 文件上传方式需要和上一次部署的方式一致,包含JAR包、WAR包或镜像,本文以JAR包为例。
    上传JAR包 文件上传方式选择上传JAR包时,单击选择文件,上传JAR包。
    JAR包地址 文件上传方式选择JAR包地址时,输入JAR包地址。
    说明 对于带认证签名的OSS文件访问URL,EDAS在部署时会缓存该文件用于之后的回滚、扩容等操作。
    版本 输入JAR版本,也可单击右侧的用时间戳作为版本号,自动生成相应的时间戳。
    时区 参考指定区域对应的UTC时区。
  7. 设置发布策略
    分批发布-发布策略

    发布策略参数说明。

    参数 描述
    发布批次 应用实例按照设定的批次完成分批发布。
    分批间处理方式 包含自动手动两种方式。
    • 自动:根据间隔自动分批发布。间隔即剩余批次间的发布时间间隔,单位为min。
    • 手动:手动触发下一个批次的发布。
    说明发布批次大于1时,才会显示发布批次
    批次内部署间隔 如果应用实例数大于1,应用实例间的部署时间间隔,单位为秒。
  8. 可选:根据您的实际需求,选择是否需要配置调度规则启动命令环境变量持久化存储本地存储应用生命周期管理日志收集设置等高级配置。更多信息,请参见在容器服务K8s集群中使用镜像方式部署应用(可选)配置应用高级设置
  9. 设置完成后,单击确定

结果验证

在应用中查看应用变更记录,查看分批发布的状态,待所有批次都执行成功则说明分批发布成功。

在应用详情页查看实例部署信息,当实例的版本已变为Ver.2并且所有实例运行状态均为Running时,则说明发布成功。

回滚应用

在分批发布期间,只要至少有一个应用实例未升级为新版本,就认为发布处于执行中状态。在应用升级时,如果您注意到第一批升级的应用实例停止响应,您可以进入实例变更详情页面单击回滚,将已发布的实例回滚到以前的服务包和配置。

在分批发布时,可能会遇到异常。如何排查并解决异常,请参见变更流程问题排查指南
  • 部署包不可用、健康检查失败等异常报错会导致应用升级失败,当前应用变更会自动终止并回滚。
  • 升级时单批次最大超时时间为30分钟,如果是超时导致变更流程暂停,您需进入变更详情页面手动终止发布流程并回滚。