使用控制台金丝雀发布应用(K8s)

对于部署在K8s集群中的Spring Cloud或Dubbo微服务应用,为确保升级操作的安全性,可使用金丝雀发布(即灰度发布)进行小规模验证,验证通过后再全量升级。本文介绍如何使用EDAS控制台金丝雀发布K8s应用。

使用限制

  • HSF应用:不支持金丝雀发布。

  • Dubbo应用:无使用限制。

  • Spring Cloud应用:如果应用依赖Deployment.Metadata.Name或Deployment.Metadata.Uid的功能与配置,请勿使用金丝雀发布,否则该原生功能将出现异常。

视频教程

操作步骤

  1. 登录EDAS控制台

  2. 在左侧导航栏,单击应用管理 > 应用列表,在顶部菜单栏选择地域,并在页面上方选择微服务空间。

  3. 应用列表页面的集群类型下拉列表,选择K8s集群,然后单击目标应用名称

  4. 应用总览页面右上角,选择部署 > 部署,在选择部署模式页面,单击金丝雀发布(灰度)区域右上角的开始部署

  5. 金丝雀发布(灰度)页面设置新版本应用的部署参数、发布策略和灰度规则,然后单击确定

    1. a.设置部署参数。

      配置项

      描述

      适用场景

      应用运行环境

      与上一次部署保持一致。

      • JAR包部署:应用运行环境为标准Java应用运行环境,不可更改。

      • WAR包部署:应用运行环境为Apache Tomcat,类型不可更改。如果需要,可以更换版本。

      适用于JAR包和WAR包部署的应用

      Java环境

      根据需求在下拉列表选择对应的JDK版本。

      适用于JAR包和WAR包部署的应用

      文件上传方式

      与上一次的部署包类型(WAR包或JAR包)保持一致,不可更改。

      上传方式可以根据实际需求选择上传部署包或输入部署包地址两种方式。

      • 上传JAR包/上传WAR包:选择下载好的JAR包/WAR包并上传。

      • JAR包地址/WAR包地址:输入Demo包地址。

      适用于JAR包和WAR包部署的应用

      构建仓库类型

      说明
      • 构建仓库类型功能仅支持容器服务K8s集群下的Java、 Tomcat、EDAS-container(HSF)三种应用类型。暂不支持ACK Serverless集群

      • 需要安装镜像免密拉取组件,具体操作,请参见使用免密组件拉取容器镜像

      • 使用您自己的阿里云镜像仓库企业版时,需要自行配置专有网络访问控制。具体操作,请参见配置专有网络的访问控制

      • 应用镜像构建过程是在您的集群内进行,并且会使用您的资源进行构建过程。单个构建任务的默认资源限制是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包和WAR包部署的应用

      时区

      根据实际需求在列表中选择。

      适用于JAR包和WAR包部署的应用

      单Pod资源配额

      设置单个Pod的CPU、内存和临时存储。如果您需要限额,请填写具体的数字,使用默认值0代表不限额。没有配额限制,上限取决于集群性能。

      都适用

    2. b.在发布策略区域配置发布策略参数。

      配置西

      描述

      首批灰度数量

      首批发布的应用实例数量。右侧会显示应用当前实例数,为保证应用稳定性,灰度实例数不能超过应用实例总数的50%。

      说明

      灰度分组发布后,必须手动开始剩余分批发布。

      剩余批次

      首批灰度发布后,剩余的应用实例按照该处设置的批次完成分批发布。

      分批间处理方式

      说明

      仅当剩余批次大于1时,需配置分批间处理方式

      支持以下处理方式:

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

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

      批次内部署间隔

      每一批次内,如果应用实例数大于1,应用实例按该时间间隔部署,单位:秒。

      右侧发布策略配置信息区域根据配置显示金丝雀发布流程。

    3. c.设置灰度规则。

      EDAS支持的灰度规则包括按内容灰度按比例灰度

      灰度规则

      配置项

      说明

      按内容灰度

      1. 单击添加策略,在添加内容灰度策略面板配置策略名称及流量规则后,单击确定

      2. 选择策略下拉列表选择创建的内容灰度策略。

      说明

      单击创建流量规则,可创建多个入口流量规则,多个规则可同时生效。

      策略名称

      自定义内容灰度策略名称。

      协议类型

      • Spring Cloud

        path:HTTP相对路径。

      • Dubbo

        • 选择服务:在下拉列表选择已创建的服务。

        • 方法:在下拉列表选择服务的方法。

      条件模式

      选择同时满足下列条件满足下列任一条件

      条件列表

      • Spring Cloud:根据CookieHeaderParameter类型设置具体的参数。

      • Dubbo:根据应用实际的参数参数值获取表达式设置。

      按比例灰度

      流量比例

      流量按配置的比例被转发到当前的灰度分组。

      按泳道灰度

      1. 单击添加策略,在添加泳道灰度策略面板配置策略名称及流量规则后,单击确定

      2. 选择策略下拉列表选择创建的泳道灰度策略。

      策略名称

      自定义泳道灰度策略名称。

      泳道组

      选择已创建的泳道组。更多信息,请参见创建泳道组

      泳道

      选择已创建的泳道。更多信息,请参见创建泳道

    金丝雀发布启动后,EDAS将先在指定的灰度分组中部署新版本应用。您可在变更记录页面查看部署进度和状态。

    说明

    如需监控灰度流量是否符合预期,请参见监控灰度流量

  6. 灰度流量验证完成后,在变更记录页面右侧,单击开始下一批,完成后续分批发布。

    如果在验证过程中发现新版本应用有问题,可在变更记录页面右上角,单击立即回滚,在弹出的确认对话框,单击确定

    金丝雀发布完成后,在应用总览页面的部署规格区域,查看部署包是否为新部署的应用版本。