部署在阿里云容器服务ACK集群、ASK集群、自建并注册ACK集群中的多语言微服务应用,为了确保其升级的安全性,可以使用金丝雀发布(即灰度发布)进行小规模验证,验证通过后再全量升级。

前提条件

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

背景信息

金丝雀发布的过程如下:

金丝雀发布流程
  1. 初始状态:例如存在2个服务Order-Service和Pay-Service,Order-Service作为Consumer服务会去调用Pay-Service提供的服务。在您没有接入MSE治理中心之前,Order-Service和Pay-Service都对应一个Deployment应用,为Pay-Service设置版本号,即Deployment的Pod配置中添加label标签,如version:v1
  2. 部署灰度版本:为Pay-Service部署灰度版本,此时Pay-Service新建一个Deployment应用表示灰度版本,并设置标签,如version:v2
  3. 设置流量规则:为Pay-Service设置流量规则:HTTP HEADER中env=test。此时满足该规则的流量会转发至灰度Deployment应用,其他流量转发至正常Deployment应用。
  4. 调整流量比例:为灰度版本调整流量比例,让更多的流量转发至灰度Deployment应用。
    注意 满足流量规则的流量还是会转发至灰度Deployment应用,不满足流量规则的流量有20%的概率转发至灰度Deployment应用。
  5. 完成灰度发布:灰度验证完毕,此时100%的流量转发至灰度Deployment应用。
    说明 建议您删除正常的Deployment应用或者将正常的Deployment应用副本数改为0。

使用限制

金丝雀发布功能只适合在两个标签的场景下使用,若有多个标签的场景,请使用标签路由。具体操作,请参见配置标签路由

操作步骤

本文主要介绍的是配置流量规则的步骤,其他步骤请根据实际业务需求完成。

  1. 登录MSE治理中心控制台
  2. 在左侧导航栏选择微服务治理中心 > 应用列表
  3. 选择具体应用,单击操作列的金丝雀

    或者单击具体应用名称,在应用详情页面选择服务治理区域,单击金丝雀页签。

  4. 单击应用实例右侧的编辑,在修改金丝雀路由面板中的流量规则区域配置流量规则相关参数,然后单击确定
    多语言金丝雀

    流量规则配置相关参数说明如下。

    参数 描述
    框架类型 根据实际应用自动生成相应的框架类型。
    Path 输入HTTP相对服务路径。
    条件模式 包含同时满足下列条件满足下列任一条件,根据实际需求选择。
    条件列表

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

    多语言微服务应用仅支持设置Header类型的参数。

    路由规则设置完成后,访问的请求带上规则里的参数,这时流量会去访问灰度Deployment应用。
  5. 应用实例区域中的流量比例列配置流量百分比,然后单击确定
    注意 流量规则验证成功后,再调大灰度版本流量比例,建议逐渐调大灰度版本的流量比例。
    多语言-金丝雀发布2

执行结果

金丝雀验证成功 :单击发布完成按钮,灰度版本的流量比例会被调整为100%,配置的流量规则会被清除。此时所有的流量都会被转发到灰度Deployment应用,然后可以删除老版本的应用。

说明 发布完成后,该标签对应的灰度版本成为新的基线版本,之后若要再进行金丝雀发布,可以为新的Deployment设置新的标签,新的标签会成为灰度版本。

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