应用规模较大或服务架构比较复杂,可以按批次进行部署。每次仅对应用的一部分实例进行升级,直至全量升级完成。本文介绍如何使用EDAS控制台分批发布应用。
分批发布简介
分批发布是按照一定的批次,每次只对应用的一部分实例进行升级的发布过程。分批发布过程中如果出现故障,您可以终止变更过程并进行回滚,待问题修复后重新发布。
在K8s集群中,当一个应用进行分批发布时,是将该应用内的应用实例数均分到每一个批次进行部署,如果不能均分则批次靠前数量较小,批次靠后数量较大。
场景示意
现有一个应用包含10个应用实例,每个应用实例的部署版本为Ver.1版本,现需将每个应用实例升级为Ver.2版本。
假设将所有应用实例分3批进行部署,根据分批发布的策略,该发布的流程示意图如下:
使用须知
在K8s集群中,应用使用分批发布时会新建Deployment进行部署。
操作步骤
- 登录EDAS控制台。
- 在左侧导航栏,单击 ,在顶部菜单栏选择地域,并在页面上方选择微服务空间,然后在应用列表页面单击具体的应用名称。
在应用总览页面右上角,选择 。
在选择部署模式页面分批发布区域,单击开始部署。
在分批发布页面上传应用新版本的部署包。
配置项
描述
应用运行环境
默认标准Java应用运行环境。
Java环境
选择Open JDK 8 [最新版本:1.8.0_191]、Open JDK 7、Open JDK 17、Open JDK 11、JDK 8、JDK 7或Dragonwell 8、Dragonwell 17、Dragonwell 11。
当前环境
显示当前应用的运行环境。仅是JAR包和WAR包部署的应用,才会显示当前应用的运行环境。EDAS会自动将您应用的Java环境或应用运行环境升级到最新版本。
文件上传方式
可选择上传JAR包或JAR包地址两种方式进行上传。
说明文件上传方式需要和上一次部署的方式一致,包含JAR包、WAR包或镜像,本文以JAR包为例。
上传JAR包
文件上传方式选择上传JAR包时,单击点击上传,上传JAR包。
JAR包地址
文件上传方式选择JAR包地址时,输入JAR包地址。
说明对于带认证签名的OSS文件访问URL,EDAS在部署时会缓存该文件用于之后的回滚、扩容等操作。
构建仓库类型
说明- 构建仓库类型功能仅支持容器服务K8s集群下的Java、 Tomcat、EDAS-container(HSF)三种应用类型。暂不支持ASK集群。
- 需要安装镜像免密拉取组件,具体操作,请参见使用免密组件拉取容器镜像。
- 使用您自己的阿里云镜像仓库企业版时,需要自行配置专有网络访问控制。具体操作,请参见配置专有网络的访问控制。
- 应用镜像构建过程是在您的集群内进行,并且会使用您的资源进行构建过程。单个构建任务的默认资源限制是1核1 GB。如何调整镜像构建资源限制,具体操作,请参见如何调整镜像构建资源限制?
使用ACR个人版或ACR企业版储存构建后的镜像时,构建任务会运行在集群中。构建任务拥有以下调度亲和性以及调度容忍策略。
- 拒绝调度到有
edas.image.build=disable
标签的节点。 - 偏向调度到有
edas.image.build=enable
标签的节点,但如果节点没有edas.image.build
标签,构建任务也可能被调度到。 - 容忍污点:
key=edas.image.build, effect=NoSchedule
。
说明- 对于不想要被构建任务调度到的节点,可以添加
edas.image.build=disable
标签。 - 对于构建任务专用节点,可以添加
edas.image.build=enable
,以及污点key=edas.image.build, effect=NoSchedule
标签,防止其他Pod被调度到该节点。
ACR所属地域
选择您的容器镜像所在的地域。该参数仅在构建仓库类型选择ACR企业版时需要配置。
容器镜像服务
选择您的容器镜像服务。该参数仅在构建仓库类型选择ACR企业版时需要配置。
镜像仓库命名空间
在下拉列表中选择您的镜像仓库所在的微服务空间,也可以单击单侧的+创建命名空间创建新的微服务空间。
版本
输入JAR版本,也可单击右侧的用时间戳作为版本号,自动生成相应的时间戳。
时区
参考指定地域对应的UTC时区。
单Pod资源配额
设置单个Pod的CPU、内存和临时存储,如果您需要限额,请填写具体的数字,使用默认值0则代表不限额。没有配额限制,上限取决于集群性能。
设置发布策略。
配置项
描述
发布批次
应用实例按照设定的批次完成分批发布。
分批间处理方式
说明仅发布批次大于1时,才会显示分批间处理方式。
包含自动和手动两种方式。
自动:根据间隔自动分批发布。间隔即剩余批次间的发布时间间隔,单位为min。
手动:手动触发下一个批次的发布。
批次内部署间隔
如果应用实例数大于1,应用实例间的部署时间间隔,单位为秒。
可选:根据您的实际需求,选择是否需要配置调度规则、启动命令、环境变量、持久化存储、本地存储、应用生命周期管理和日志收集设置等高级配置。更多信息,请参见高级配置。
设置完成后,单击确定。
结果验证
在应用的变更记录页面,查看分批发布的状态,以及描述信息中的版本,待所有批次都执行成功,且版本已变为Ver.2时,说明分批发布成功。
回滚应用
在分批发布期间,只要至少有一个应用实例未升级为新版本,就认为发布处于执行中状态。在应用升级时,如果第一批升级的应用实例停止响应,您可以进入应用变更记录页面,单击回滚,将已发布的实例回滚到以前的服务包和配置。
在分批发布时,可能会遇到异常。如何排查并解决异常,请参见变更流程问题排查指南。
部署包不可用、健康检查失败等异常报错会导致应用升级失败,当前应用变更会自动终止并回滚。
升级时单批次最大超时时间为30分钟,如果是超时导致变更流程暂停,您需进入变更记录页面手动终止发布流程并回滚。