灰度发布微服务

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

前提条件

  • 已部署微服务应用,其中包含1个Consumer应用和1个Provider应用。示例操作,请参见以下文档:

  • 根据应用类型判断是否需要开通微服务引擎 MSE(Microservices Engine)微服务治理专业版。具体操作,请参见开通MSE微服务治理

    • 存量应用:2023年11月08日00:00前创建的应用,无需开通MSE服务治理专业版或企业版,后续部署应用也不会产生MSE计费。

    • 新增应用:2023年11月08日00:00起新建的应用,使用无损上下线与灰度规则功能需要开通MSE微服务治理专业版,使用限流降级功能需要开通MSE微服务治理企业版。用户升级MSE企业版后,未开启限流降级功能的应用依然按照专业版进行计费,只有开启限流降级功能的应用才会按照企业版计费。

    关于MSE微服务治理计费的更多信息,请参见计费概述【产品变更】SAE集成的MSE微服务治理功能商用通知

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支持的灰度规则是按内容灰度,您所需配置的信息会因应用框架而异。

    配置项

    说明

    规则类型

    • 七层流量灰度(K8s ingress):可以实现在灰度批次发布过程中,将特定标记的七层流量打到灰度批次的实例上。

    • 微服务流量灰度:可以实现在灰度批次发布过程中,将特定标记的流量打到灰度批次的实例上。

    规则名称

    设置灰度规则名称。

    规则描述

    对灰度规则的自定义描述。

    灰度类型

    根据内容灰度。

    网关实例(ALB ingress)

    规则类型七层流量灰度(K8s ingress)时需要配置。

    SAE基于ALB实现的网关路由(Ingress),具备根据域名、路径路由到不同应用的能力。您需要先为应用配置ALB实例,并创建路由规则。具体操作,请参见为应用设置路由规则(ALB)

    灰度的服务

    规则类型七层流量灰度(K8s ingress)时需要配置。

    选择需要灰度的应用及对应端口。

    框架类型

    规则类型微服务流量灰度时需要配置。

    配置灰度规则应用的框架类型。

    • Spring Cloud:需要设置Path

    • Dubbo:需要选择服务方法

    条件模式

    规则类型微服务流量灰度时需要配置。配置灰度规则应用的条件模式。

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

    条件列表

    单击+添加新的规则条件,可以添加多条规则。

    • 微服务灰度流量

      • Spring Cloud:根据参数类型CookieHeaderParameter,设置相应的参数条件以及

      • Dubbo:根据应用实际情况,设置参数参数值获取表达式条件以及

    • 七层流量灰度

      根据参数类型CookieHeader来源ip,设置对应的参数

    针对微服务流量灰度,您还可以单击+新建流量规则,创建多个入口流量规则,多个规则可以同时生效。新增的灰度规则会显示在灰度规则列表中。

    创建成功后,可以在灰度规则页面,查看刚创建的灰度规则。单击目标规则名称,可以在灰度规则详情面板,查看规则内容。Spring Cloud应用灰度规则的示例如下。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