使用控制台分批发布应用(K8s)

应用规模较大或服务架构比较复杂,可以按批次进行部署。每次仅对应用的一部分实例进行升级,直至全量升级完成。本文介绍如何使用EDAS控制台分批发布应用。

分批发布简介

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

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

场景示意

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

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

ED分批发布示意图AS

使用须知

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

操作步骤

  1. 登录EDAS控制台
  2. 在左侧导航栏,单击应用管理 > 应用列表,在顶部菜单栏选择地域,并在页面上方选择微服务空间,然后在应用列表页面单击具体的应用名称。
  3. 应用总览页面右上角,选择部署 > 部署

  4. 选择部署模式页面分批发布区域,单击开始部署

  5. 分批发布页面上传应用新版本的部署包。

    配置项

    描述

    应用运行环境

    默认标准Java应用运行环境

    Java环境

    选择Open JDK 8 [最新版本:1.8.0_191]Open JDK 7Open JDK 17Open JDK 11JDK 8JDK 7Dragonwell 8Dragonwell 17Dragonwell 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则代表不限额。没有配额限制,上限取决于集群性能。

  6. 设置发布策略

    分批发布-发布策略

    配置项

    描述

    发布批次

    应用实例按照设定的批次完成分批发布。

    分批间处理方式

    说明

    发布批次大于1时,才会显示分批间处理方式

    包含自动手动两种方式。

    • 自动:根据间隔自动分批发布。间隔即剩余批次间的发布时间间隔,单位为min。

    • 手动:手动触发下一个批次的发布。

    批次内部署间隔

    如果应用实例数大于1,应用实例间的部署时间间隔,单位为秒。

  7. 可选:根据您的实际需求,选择是否需要配置调度规则启动命令环境变量持久化存储本地存储应用生命周期管理日志收集设置等高级配置。更多信息,请参见高级配置

  8. 设置完成后,单击确定

结果验证

在应用的变更记录页面,查看分批发布的状态,以及描述信息中的版本,待所有批次都执行成功,且版本已变为Ver.2时,说明分批发布成功。

回滚应用

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

在分批发布时,可能会遇到异常。如何排查并解决异常,请参见变更流程问题排查指南

  • 部署包不可用、健康检查失败等异常报错会导致应用升级失败,当前应用变更会自动终止并回滚。

  • 升级时单批次最大超时时间为30分钟,如果是超时导致变更流程暂停,您需进入变更记录页面手动终止发布流程并回滚。