配置金丝雀发布

通过ECS方式接入的应用,以及部署在阿里云容器服务 Kubernetes 版集群中的Spring Cloud或Dubbo微服务应用,可以使用金丝雀发布(即灰度发布)进行小规模验证。在金丝雀发布中,新版本的应用会先部署在一小部分服务器上,然后通过小部分用户的流量进行验证,通过验证后再全量升级,以确保其升级的安全性。本文以部署在阿里云容器服务 Kubernetes 版集群中的Spring Cloud微服务应用为例,介绍如何配置金丝雀发布。

前提条件

已在ACK集群中安装MSE治理中心组件,并为ACK授予MSE治理中心的访问权限。具体操作,请参见ACK微服务应用接入MSE治理中心

使用限制

金丝雀发布功能只适合在单个应用的金丝雀发布场景下使用,若有更复杂的场景,请使用全链路灰度。具体操作,请参见基于MSE云原生网关实现全链路灰度

操作流程

金丝雀发布的过程如下:

金丝雀发布流程

初始状态

假设有2个服务Order-Service和Pay-Service,Order-Service作为Consumer服务会去调用Pay-Service提供的服务。在您没有接入MSE治理中心之前,Order-Service和Pay-Service都对应一个Deployment应用,并且没有设置任何标签。

部署灰度版本

为Pay-Service部署灰度版本。此时Pay-Service新建一个Deployment应用表示灰度版本,并设置标签。具体操作,请参见在ACK中为应用接入MSE微服务治理并设置标签

说明

默认情况下,MSE治理中心会让100%的流量转发至没有设置标签的Deployment应用。

设置流量规则

为Pay-Service设置流量规则:HTTP HEADER中env=test。此时满足该规则的流量会转发至灰度Deployment应用,其他流量转发至正常Deployment应用。

调整流量比例

为灰度版本调整流量比例,让更多的流量转发至灰度Deployment应用。

重要

满足流量规则的流量会转发至灰度Deployment应用,不满足流量规则的流量有20%的概率转发至灰度Deployment应用。

完成灰度发布

灰度验证完毕之后,将稳定版本的Deployment应用更新为最新的镜像,单击发布完成,此时100%的流量转发至稳定版本Deployment应用。

说明

建议您将灰度的Deployment应用副本数改为0,无需重复创建Deployment应用。

操作步骤

本文主要介绍的是配置流量规则的步骤,其他步骤请根据金丝雀发布页面的提示完成。

  1. 登录MSE治理中心控制台,并在顶部菜单栏选择地域。

  2. 在左侧导航栏,选择治理中心 > 应用治理

  3. 应用列表页面,单击目标应用的资源卡片,然后在左侧导航栏单击流量治理

  4. 单击金丝雀页签,根据使用说明的步骤完成金丝雀发布。

    金丝雀发布.png

    1. 发布前检查。

    2. 部署新版本。

    3. 引入流量。单击STEP 3右侧的引入流量或单击金丝雀页签下方的引入流量,配置流量规则。然后单击确定

      重要
      • 如果您只需要通过流量百分比进行验证,可以通过按比例灰度配置应用实例的流量比例。

      • 如果您需要进行精细化的验证,可以同时配置按比例灰度按内容灰度,将流量比例规则和内容规则进行结合。

      按比例灰度

      参数

      描述

      标签

      显示应用的标签。

      是否链路传递

      显示当前实例是否支持链路传递。

      实例数量/实际比例

      显示应用的实例数量和实例当前所占的流量比例。

      流量比例

      设置流量百分比。

      最后操作时间

      显示当前应用最新的操作时间。

      重要

      流量规则验证成功后,再调大灰度版本流量比例,建议逐渐调大灰度版本的流量比例。

      按内容灰度

      参数

      描述

      框架类型

      根据实际应用自动生成相应的框架类型。

      Path

      选择服务路径,也可单击右侧的切换为自定义输入手动输入路径。

      条件模式

      包含同时满足下列条件满足下列任一条件,根据实际需求选择。

      条件列表

      设置条件参数,当有多个条件规则时,可单击+添加新的规则条件

      可以设置Cookie、Header、Parameter和Body Content四种类型的参数。例如:

      • Cookie:hello = "world" 或 "world2"

      • Parameter:name=newversion

      是否链路传递

      如果需要使用全链路流控,请打开是否链路传递开关。如需使用,请参见配置标签路由

    路由规则设置完成后,访问的请求带上规则里的参数,这时流量会去访问灰度Deployment应用。

  5. 可选:如果在灰度的过程中,需要更新金丝雀灰度的规则,单击引入流量,更新流量规则,然后单击确定

执行结果

金丝雀验证成功

单击发布完成按钮,未打标版本的流量比例会被调整为100%,配置的流量规则会被暂时关闭。此时所有的流量都会被转发到未打标的Deployment应用。

说明

发布完成后,建议您将灰度的Deployment应用副本数设置为0,无需重复创建Deployment应用。

金丝雀验证失败

单击回滚按钮,灰度版本的流量比例会被调整为0%,配置的流量规则会被清除。此时所有的流量都会被转发到正常Deployment应用,然后可以删除灰度版本的应用。