灰度发布是服务治理领域中最重要的策略之一。当需要上线新的功能时,您可以使用灰度发布功能在小范围内进行新版本测试,待验证通过后再进行全量升级。本文以Spring Cloud微服务应用为例,介绍在Serverless应用引擎SAE(Serverless App Engine)灰度发布微服务的操作步骤。

前提条件

已在SAE创建并部署Spring Cloud或Dubbo微服务应用,其中包含1个Consumer应用和1个Provider应用。具体操作,请参见以下文档:
Consumer应用和Provider应用的示例工程如下:

背景信息

Consumer应用调用Provider应用时,Provider应用有版本V1和版本V2。通过创建灰度规则,指定Header的Version参数为V1的流量都灰度到Provider应用的V1版本。灰度发布微服务流程,如下图所示:

dg_grey_release

使用限制

Spring Cloud微服务应用需要使用JAR包或者镜像方式部署。使用WAR包部署会导致配置不生效。

步骤一:创建灰度规则

  1. 登录SAE控制台
  2. 在左侧导航栏,选择应用管理 > 应用列表,在顶部菜单栏选择地域,然后单击具体应用名称。
  3. 在左侧导航栏,单击灰度规则,然后在灰度规则页面,单击新建灰度规则
  4. 新建灰度规则面板,执行以下操作,然后单击确定

    SAE支持的灰度规则是按内容灰度,您所需配置的信息会因应用框架而异。

    1. 按需配置以下配置项。
      配置项说明
      规则名称自定义。
      规则描述自定义。
      框架类型配置灰度规则应用的框架类型。
      • Spring Cloud:需要设置Path
      • Dubbo:需要选择服务方法
      条件模式选择同时满足下列条件满足下列任一条件
    2. 单击添加新的规则条件,按需配置灰度规则条件。
      配置项说明
      条件列表
      • Spring Cloud:根据CookieHeaderParameter参数类型,设置相应的参数条件以及
      • Dubbo:根据应用实际情况,设置参数参数值获取表达式条件以及
    3. 可选:单击新建流量规则创建多个入口流量规则,多个规则可以同时生效。
      图 1. Spring Cloud应用灰度规则示例
      Spring Cloud应用灰度规则示例

      在本示例中,参数类型选择Header

    创建成功后,可以在灰度规则页面,查看刚创建的灰度规则。同时,新建灰度规则按钮已置灰。
    单击目标规则名称,可以在灰度规则详情面板,查看规则内容。sc_grey_rule_details

步骤二:配置灰度发布策略

  1. 登录SAE控制台
  2. 在左侧导航栏,选择应用管理 > 应用列表,在顶部菜单栏选择地域,然后单击具体应用名称。
  3. 基本信息页面右上角,单击部署应用
  4. 配置部署参数。
    说明 部署方式由应用首次部署方式决定,请根据所需的部署方式设置参数。
    • WAR包部署:重新上传WAR包或者输入新部署WAR包的地址,并完成相关环境和参数设置。
    • JAR包部署:重新上传JAR包或者输入新部署JAR包的地址,并完成相关环境和参数设置。
    • 镜像:在配置镜像区域,单击修改镜像,在修改镜像面板,重新选择镜像仓库或镜像版本。
  5. 发布策略设置区域,配置灰度发布信息。
    配置项 说明
    发布策略选择灰度发布
    灰度数量设置首先需要进行灰度发布的应用实例数量。
    灰度后剩余批次灰度发布后,剩余的应用实例按照设定的批次完成发布。
    分批间处理方式当剩余批次大于1时需要配置。选择自动手动
    分批间隔时间分批间处理方式选择自动时需要配置。单位为分钟,取值范围为[0,30]。
    批次内部署间隔每一批内,如果应用实例数大于1,应用实例间的部署时间间隔。单位为秒。
    最小存活实例数

    每次滚动升级最小存活的实例数。

    • 按个数:输入最小存活实例数。您也可以选中使用系统推荐值,即取现有实例数的25%。
    • 按比例:输入百分比。
    说明
    • 每次滚动部署最小存活的实例数建议≥1,保证业务不中断。如果设置为0,应用在升级过程中将会中断业务。
    • 以百分比计算时需向上取整。例如设置为25%,如果当前为5个实例,则最小存活实例数为2。
    启用微服务灰度规则您为Spring Cloud或Dubbo应用创建的灰度规则。具体操作,请参见管理灰度规则(Java)
  6. 单击确认完成发布设置。
  7. 选择以下任一方式验证发布结果。
    • 方法一:在应用的变更记录页面中查看应用变更详情,查看发布状态,如果所有批次都执行成功,则说明应用更新成功。
    • 方法二:在应用基本信息页面的实例部署信息页签查看实例的运行状态。如果执行状态显示为Running,且实例的版本已变更,表示应用部署成功。sc_grey_release_process_under_microservice

步骤三:通过Consumer访问验证

通过请求Consumer应用访问Provider应用,验证流量灰度发布到了指定实例。具体操作,请参见使用Webshell诊断应用

sc_view_webshell_with_grey_release.png