searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

借助天翼云微服务治理轻松实现全链路灰度发布

2024-04-30 02:42:56
7
0

概述

全链路灰度发布相比传统发布模式,具有更高的可靠性、稳定性和可控性,能够有效降低系统风险,提升线上稳定性,是现今软件开发和部署的重要技术手段。它可以根据实际需求,对单个服务进行独立的发布和流量控制,也可以控制多个服务同时进行发布变更,这意味着全链路灰度是一种更加稳健和可控的发布方式,可逐步将新功能或版本的应用引入到生产环境中,确保新版本在整个系统链路中都能得到逐步验证和部署,实现微服务调用链的平滑过渡与升级。

前提条件

1、开通微服务治理中心企业版。

2、开通云容器引擎。

背景信息

在微服务架构下,一次需求可能会同时修改多个微服务应用。在发布应用时,通常将这些应用划分为同一个分组,使灰度流量始终在灰度应用中流转。当上游有灰度流量时,会通过引流的方式将灰度流量引导至灰度分组,在此次链路调用过程中,如果存在一些微服务没有灰度环境,那这些请求在下游时依然能回到灰度环境中,以此实现全链路灰度。

操作步骤

一,部署Demo应用

准备自建入口网关msgc-zuul,准备应用msgc-app-a,msgc-app-b和msgc-app-c。调用过程是msgc-app-a –> msgc-app-b -> msgc-app-c。

step1:在云容器引擎集群中安装微服务治理插件

1. 登录云容器引擎控制台

2. 在左侧菜单栏选择集群,点击目标集群

3. 在集群管理页面点击插件-插件市场,选择cubems插件安装

step2:为应用开启微服务治理能力

1. 登录云容器引擎控制台

2. 左侧菜单栏选择集群,点击目标集群

3. 在集群管理页面点击工作负载-无状态,选择目标命名空间

4. 在Deployment列表页选择指定Deployment,并点击全量替换,进入Deployment编辑页

5. 在Deployment编辑页点击显示高级设置,新增Pod标签: mseCubeMsAutoEnable:on, 随后新增Pod注解,mse.appName:app-a,mse.enable:true

6. 完成分别为app-a-gray、app-b-gray和app-c-gray应用添加标签。

7. 完成编辑后点击提交,重新发布容器即可接入。

二,创建泳道组及灰度泳道

step1 创建泳道组

1. 登录微服务治理控制台

2. 在左侧导航栏选择全链路灰度,点击创建泳道组

3. 在创建泳道组页面,设置泳道组相关参数,然后单击确定

step2 创建泳道

1. 找到目标泳道组页面,点击创建第一个分流泳道

2. 设置泳道名称,选择目标应用所属标签,创建泳道

三,场景应用及验证:通过设置泳道组路由规则,实现全链路灰度

step1:设置Header路由规则

通过前端访问传过来不同的Header,在自建网关通过header判断将流量路由到指定的泳道。

step2:通过Header验证灰度流量

通过自建网关访问app-a->app-b->app-c。

1. 访问基线环境,不带上参数名为tag的header,流量路由到基线环境。

2. 访问灰度环境,带上tag=gray的header,流量会自动路由到灰度泳道。

基于上述实践,当前端请求带上tag=gray的header时,会路由到灰度环境。

step3:通过设置Parameter实现标签路由

路由规则除了设置Header以外,还可以通过设置Cookie、Parameter和Body Content实现流量路由。

设置路由规则,通过前端访问传过来不同的Parameter,在自建网关通过Parameter判断将流量路由到指定的泳道。

step4:通过Parameter验证灰度流量

通过自建网关访问app-a->app-b->app-c。

1. 访问基线环境,当member不等于12345时,流量路由到基线环境。

2. 访问灰度环境,带上memberId=12345的参数,流量会自动路由到灰度泳道。

基于上述实践,当前端请求带上memberId=12345的参数,会路由到灰度环境。

0条评论
0 / 1000