对于部署在容器服务K8s集群和Serverless K8s集群中的Spring Cloud或Dubbo微服务应用,为了确保升级操作的安全性,可以使用金丝雀发布(即灰度发布)进行小规模验证,验证通过后再全量升级。

使用限制

  • HSF应用不支持金丝雀发布。
  • Dubbo应用在使用金丝雀发布时没有使用限制。
  • Spring Cloud应用在使用金丝雀发布时有以下限制:
    • 暂不支持基于Netflix Zuul和Spring Cloud Gateway构建的Spring Cloud应用。
    • 如果应用依赖Deployment.Metadata.Name或Deployment.Metadata.Uid的功能与配置,请勿使用金丝雀发布,否则发布后该原生功能将出现异常。

视频教程

操作步骤

  1. 登录EDAS控制台
  2. 在左侧导航栏选择应用管理 > 应用列表,并在顶部菜单栏选择地域。
  3. 应用列表页面选择命名空间,在集群类型下拉列表中选择容器服务/Serverless K8s集群,然后单击目标应用名称。
  4. 应用总览页面右上角选择部署 > 部署
  5. 选择部署模式页面的金丝雀发布(灰度)区域右上角单击开始部署
  6. 金丝雀发布(灰度)页面设置新版本应用的部署参数、发布策略和灰度规则,然后单击确定
    1. 设置部署参数。
      表 1. 部署参数说明
      参数 描述
      配置镜像(仅适用于镜像部署的应用) 镜像不可更改,只能更新镜像版本。
      应用运行环境(适用于JAR包和WAR包部署的应用) 需要和上一次部署保持一致。
      • JAR包部署:应用运行环境为标准Java应用运行环境,不可更改。
      • WAR包部署:应用运行环境为Apache Tomcat,类型不可更改。如果需要,可以更换版本。
      Java环境(适用于JAR包和WAR包部署的应用) 根据需求在列表中选择。
      文件上传方式(适用于JAR包和WAR包部署的应用) 部署包类型(WAR包或JAR包)需要和上一次部署保持一致,不可更改。上传方式可以根据实际需求选择上传部署包(上传JAR包上传WAR包)或输入部署包地址两种方式(JAR包地址WAR包地址)。
      版本(适用于JAR包和WAR包部署的应用) 部署包版本,可以用时间戳作为版本号。
      时区(适用于JAR包和WAR包部署的应用) 根据实际需求在列表中选择。
    2. 发布策略区域配置发布策略参数。
      表 2. 发布策略参数说明
      参数 说明
      首批灰度数量 首批发布的应用实例数量。右侧会显示应用当前实例数,为了保证应用稳定性,灰度实例数不能超过应用实例总数的50%。
      剩余批次 首批发布后,剩余的应用实例按照此处设定的批次完成分批发布。
      说明 仅当剩余批次大于1时,才会显示分批间处理方式
      分批间处理方式
      • 自动:根据间隔自动分批发布。间隔即剩余批次间的发布时间间隔,单位为分钟。
      • 手动:手动触发下一个批次的发布。
      批次内部署间隔 每一批次内,如果应用实例数大于1,则应用实例会按此时间间隔部署,单位为秒。

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

    3. 设置灰度规则。

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

      表 3. 灰度规则参数说明
      页签 参数 说明
      按内容灰度 协议类型
      • Spring Cloud:需要设置path
      • Dubbo:需要选择服务方法
      条件模式 选择同时满足下列条件满足下列任一条件
      条件列表
      • Spring Cloud:可根据CookieHeaderParameter类型设置具体的参数。
      • Dubbo:根据应用实际的参数参数值获取表达式设置。
      按比例灰度 流量比例 流量会按配置的比例被转发到当前的灰度分组。
      说明 单击创建流量规则,即可创建多个入口流量规则,多个规则可以同时生效。
    4. 可选:配置应用高级设置。
      如果需要,还可以设置启动命令、环境变量、持久化存储、应用生命周期管理、Java启动参数配置和限流降级配置,详情请参见在容器服务K8s集群中使用镜像方式部署应用在容器服务K8s集群中使用JAR包或WAR包部署应用中的配置应用高级设置步骤。

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

    说明 如需监控灰度流量是否符合预期,详情请参见监控灰度流量
  7. 灰度流量验证完成后,在变更记录页面右侧单击开始下一批,完成后续分批发布。
    如果在验证过程中发现新版本应用有问题,可以在变更记录页面右上角单击回滚,并在弹出的确认对话框单击确认

结果验证

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