(可选)配置工作负载标签实现灰度发布
灰度发布是服务发布策略之一,旨在通过调整流量分配权重,逐步将流量从旧版本引导到新版本实例上。服务发布升级过程中可以逐步验证版本是否符合预期,如果版本符合预期,则可以逐渐加大新版本实例流量占比,减小旧版本实例流量占比,直至将新版本服务权重增加到100,旧版本服务权重减少至0,完成从旧版本到新版本服务的引流。

云容器引擎CCE工作负载根据Pod标签的标签选择器配置实现灰度发布,实现原理请参见使用Service实现简单的灰度发布和蓝绿发布,帮助用户实现新功能的快速上线与验证,进而完成流量引导与服务器切换。
下文完成特性从V1版本到V2版本的切换,保证服务升级的过程中流量平稳切换,通过灰度发布逐步将流量从V1版本迁移到V2版本。
- 新建工作负载并设置“Pod标签”,且app值与已创建工作负载的app值一致。具体步骤请参考已创建的工作负载。
您可以在“高级配置 > 标签与注释”中设置“Pod标签”,此处为“app=deployment-demo”,“version=v2”。如果您是通过导入YAML创建工作负载,也可以在yaml中添加“Pod标签”。
- 调整Pod标签为“version= v1”的服务器分组的权重。
- 在API网关控制台的左侧导航栏上方选择实例。
- 在左侧导航栏中选择“API管理 > API策略”。
- 在“负载通道”页签中,单击已创建的负载通道名称。
- 在“后端服务器地址”区域,单击“编辑”。
- 将“权重分配”改为“100”,并单击“确定”。
- 创建Pod标签为“version= v2”的服务器分组并设置权重分配。
- 在“后端服务器地址”区域,单击“创建服务器分组”。
表1 服务器分组配置 参数
配置说明
服务器分组名称
此处填写为“server_group_v2”。
权重分配
此处填写为“1”。
后端服务端口
此处填写为“80”。
标签
此处选择Pod标签“version=v2”
- 单击“确定”。
- 在“后端服务器地址”区域,单击“创建服务器分组”。
- 刷新后端服务器地址。
通过刷新页面来刷新后端服务器的地址,负载通道将自动监测工作负载下的实例IP地址并动态添加到后端服务地址中。如下图所示,根据标签“app=deployment-demo”,“version=v2”能够自动匹配到已创建工作负载的实例ip,即后端服务器地址。
图2 自动匹配工作负载的实例ip此时流量权重分配到“server_group_v1”分组的比例为100/101(服务器分组权重/服务器分组权重之和),分配到“server_group_v2”分组的比例为1/101(服务器分组权重/服务器分组权重之和),将有小部分请求被引流到“server_group_v2”分组的新版本上。
图3 单击页面右上角编辑查看 - 验证新特性通过灰度发布到V2版本是否运行稳定。
您可以自行验证新版本功能是否符合预期,如果符合预期请执行6。否则,新特性发布失败。
- 逐步调整不同版本服务器分组的权重配置。
逐步减小“server_group_v1”分组的权重,增大“server_group_v2”分组的权重。重复5~6,直到“server_group_v1”分组的权重为“0”,“server_group_v2”分组的权重为“100”。
如图,表示请求转发时,分配到服务器分组“server_group_v1”的比例为0,服务器分组“server_group_v2”的比例为100%,即请求将全部转发到服务器分组“server_group_v2”上,完成从“version=v1”的工作负载“deployment-demo”到“version=v2”的工作负载“deployment-demo2”之间的切换,进而实现了新特性从V1版本到V2版本的灰度发布。(注意:请求转发的流量权重分配比例可自行设置与调整)
- 删除Pod标签为“version= v1”的服务器后端分组server_group_v1。
现已将全部流量引导到“version= v2”的服务器后端分组的后端服务地址上,因此,可将V1版本所在服务器后端分组删除。