跨境派

跨境派

跨境派,专注跨境行业新闻资讯、跨境电商知识分享!

当前位置:首页 > 卖家故事 > 阿里云MSE实现全链路灰度方案实践

阿里云MSE实现全链路灰度方案实践

时间:2024-05-05 07:30:21 来源:网络cs 作者:康由 栏目:卖家故事 阅读:

标签: 方案  实践  实现 
阅读本书更多章节>>>> apiVersion: apps/v1
kind: Deployment
metadata:
name: spring-cloud-a
namespace: default
spec:
selector:
matchLabels:
app: spring-cloud-a
template:
metadata:
labels:
app: spring-cloud-a
msePilotCreateAppName: spring-cloud-a
msePilotAutoEnable: ‘on’
spec:
containers:
- name: spring-cloud-a
image: registry.cn-shanghai.aliyuncs.com/yizhan/spring-cloud-a:1.0.0
imagePullPolicy: Always
ports:
- containerPort: 20001
livenessProbe:
tcpSocket:
port: 20001
initialDelaySeconds: 30
periodSeconds: 60
env:
- name: spring.cloud.nacos.discovery.server-addr
value: {nacos server address}
- name: dubbo.registry.address
value: ‘nacos://{nacos server address}:8848’

应用B的基线版本

apiVersion: apps/v1
kind: Deployment
metadata:
name: spring-cloud-b
namespace: default
spec:
selector:
matchLabels:
app: spring-cloud-b
template:
metadata:
labels:
app: spring-cloud-b
msePilotCreateAppName: spring-cloud-b
msePilotAutoEnable: ‘on’
spec:
containers:
- name: spring-cloud-b
image: registry.cn-shanghai.aliyuncs.com/yizhan/spring-cloud-b:1.0.0
imagePullPolicy: Always
ports:
- containerPort: 20002
livenessProbe:
tcpSocket:
port: 20002
initialDelaySeconds: 30
periodSeconds: 60
env:
- name: spring.cloud.nacos.discovery.server-addr
value: {nacos server address}
- name: dubbo.registry.address
value: ‘nacos://{nacos server address}:8848’

应用C的基线版本

apiVersion: apps/v1
kind: Deployment
metadata:
name: spring-cloud-c
namespace: default
spec:
selector:
matchLabels:
app: spring-cloud-c
template:
metadata:
labels:
app: spring-cloud-c
msePilotCreateAppName: spring-cloud-c
msePilotAutoEnable: ‘on’
spec:
containers:
- name: spring-cloud-c
image: registry.cn-shanghai.aliyuncs.com/yizhan/spring-cloud-c:1.0.0
imagePullPolicy: Always
ports:
- containerPort: 20003
livenessProbe:
tcpSocket:
port: 20003
initialDelaySeconds: 30
periodSeconds: 60
env:
- name: spring.cloud.nacos.discovery.server-addr
value: {nacos server address}
- name: dubbo.registry.address
value: ‘nacos://{nacos server address}:8848’

二、将后端业务应用接入MSE微服务治理
1、登录MSE治理中心控制台,在顶部菜单栏选择地域,在左侧导航栏,选择治理中心>应用治理
2、单击ACK应用接入,参照下文完成配置后,单击确定
1)安装ack-onepilot:在ack-onepilot区域,单击点击安装。
安装成功后,此区域显示已安装版本。

2)配置ACK集群和命名空间信息:
接入类型:命名空间接入
集群类型:ACK集群
集群名称/ID:testcluster
集群命名空间:应用所在的命名空间,default
接入治理命名空间:default

3)在接入成功提示对话框,阅读提示,然后单击去重启,跳转至容器服务管理控制台的集群列表,单击目标集群testcluster,然后在左侧导航栏单击工作负载>无状态,勾选应用列表的spring-cloud-a、spring-cloud-b、spring-cloud-c,然后单击下方的重新部署。
4)返回MSE治理中心控制台,单击接入成功提示对话框的我已知晓。

此时,应用列表区域将显示spring-cloud-a、spring-cloud-b、spring-cloud-c对应的应用概览卡片,表明ACK应用接入成功。

三、通过MSE云原生网关暴露应用A
1、应用基线版本部署成功后,需要通过MSE云原生网关添加并暴露应用A。

登录MSE网关管理控制台,在左侧导航栏,选择云原生网关>网关列表,然后在顶部菜单栏选择地域。
2、在网关列表页面,单击目标网关名称test,然后在左侧导航栏,选择服务管理>服务列表,然后单击创建服务。
3、在创建服务面板,选择服务来源为MSE Nacos,选择对应命名空间,并在服务列表选择sc-A,将sc-A移动到右侧已选择区域,然后单击确定。
4、在服务列表的操作列,单击sc-A对应的策略配置,在服务版本区域,确认如下配置信息。
版本名称为base。

标签名为opensergo.io/canary。

标签值为空
在这里插入图片描述
正常情况下,云原生网关默认为导入的Nacos的服务添加以上base版本,且base版本的实例数大于0。

如果base版本实例数显示为0,表明您安装的MSE Java Agent版本太低。请卸载原有的ack-onepliot,重新安装ack-onepliot,并确保ack-onepliot的版本为2.8.0及以上,然后重新部署应用A,部署完毕之后确认实例数是否大于0。关于的操作步骤,ACK微服务应用接入MSE治理中心https://help.aliyun.com/zh/mse/user-guide/enable-microservices-governance-for-microservice-applications-in-an-ack-cluster-1?spm=a2c4g.2510285.0.i5#p-osd-8q3-wvd

5、完成后,返回服务列表页面,然后在左侧导航栏单击路由管理>路由配置,然后单击创建路由
6、在创建路由面板,配置请求信息和目标服务,配置完成后单击保存并上线
1)请求信息:配置路由名称(本示例配置为test)和关联域名(本示例配置为*),匹配规则选择前缀匹配(本示例配置为/a),其他配置选择默认,然后单击下一步。

2)目标服务:目标服务选择标签路由,添加服务并选择服务为sc-A,服务的版本选择base,勾选设置fallback服务,选择服务为sc-A,并将其版本设置为不限制,使sc-A达到高可用的目的。

四、测试基线版本流量
应用暴露完成后,可以使用curl命令测试基线版本的流量路由链路。
登录MSE网关管理控制台,在左侧导航栏,选择云原生网关>网关列表,然后在顶部菜单栏选择地域。

在网关列表页面,单击目标网关名称,在左侧导航栏,单击基本概览,然后单击网关入口页签,查看并记录SLB的入口地址(ip)用于下一步的流量测试。

用curl命令,测试基线版本流量,发现流量经过了A、B和C的基线版本。如下所示。

测试命令

curl x.x.1.1/a

测试结果

A[10.0.3.178] -> B[10.0.3.195] -> C[10.0.3.201]%

五、搭建灰度环境
1、部署后端业务应用的灰度版本
如果业务应用要发布新功能,新功能要求应用A和应用C同时发版,此时需要借助全链路灰度来同时验证不同应用的灰度版本。基线版本准备完成后,需要搭建业务应用的灰度环境。

1)在ack集群列表页面,单击目标集群名称,然后在左侧导航栏,选择工作负载 > 无状态

2)在页面上方,选择集群的命名空间,然后单击右上角的使用YAML创建资源,选择示例模板为自定义,然后在模板区域复制以下YAML文件内容,部署A、C两个应用的灰度版本。

以下示例代码中的{nacos server address}需要替换为MSE Nacos的内网域名,并删去大括号{}。

应用A的灰度版本

apiVersion: apps/v1
kind: Deployment
metadata:
name: spring-cloud-a-gray
namespace: default
spec:
selector:
matchLabels:
app: spring-cloud-a-gray
template:
metadata:
labels:
alicloud.service.tag: gray
app: spring-cloud-a-gray
msePilotCreateAppName: spring-cloud-a
msePilotAutoEnable: ‘on’
spec:
containers:
- name: spring-cloud-a
image: registry.cn-shanghai.aliyuncs.com/yizhan/spring-cloud-a:1.0.0
imagePullPolicy: Always
ports:
- containerPort: 20001
livenessProbe:
tcpSocket:
port: 20001
initialDelaySeconds: 30
periodSeconds: 60
env:
- name: spring.cloud.nacos.discovery.server-addr
value: {nacos server address}
- name: dubbo.registry.address
value: ‘nacos://{nacos server address}:8848’

应用C的灰度版本

apiVersion: apps/v1
kind: Deployment
metadata:
name: spring-cloud-c-gray
namespace: default
spec:
selector:
matchLabels:
app: spring-cloud-c-gray
template:
metadata:
labels:
alicloud.service.tag: gray
app: spring-cloud-c-gray
msePilotCreateAppName: spring-cloud-c
msePilotAutoEnable: ‘on’
spec:
containers:
- name: spring-cloud-c
image: registry.cn-shanghai.aliyuncs.com/yizhan/spring-cloud-c:1.0.0
imagePullPolicy: Always
ports:
- containerPort: 20003
livenessProbe:
tcpSocket:
port: 20003
initialDelaySeconds: 30
periodSeconds: 60
env:
- name: spring.cloud.nacos.discovery.server-addr
value: {nacos server address}
- name: dubbo.registry.address
value: ‘nacos://{nacos server address}:8848’

2、创建灰度环境泳道
1)登录MSE治理中心控制台,在顶部菜单栏选择地域,在左侧导航栏,选择治理中心>全链路灰度。
2)在页面上方选择命名空间,然后单击创建泳道组及泳道,在创建泳道组面板,设置如下相关配置,然后单击确定。
在这里插入图片描述
3、在全链路灰度页面下方,单击点击创建第一个分流泳道,在创建泳道面板,设置流控泳道相关配置,然后单击确定。
配置项
1、配置节点标签:登录容器服务管理控制台,在左侧导航栏单击集群,然后在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择工作负载>无状态。在操作列,依次单击应用对应的更多>查看Yaml,在YAML的spec.template.metadata.labels下增加alicloud.service.tag:{tag},然后单击更新。

修改示例可参照下图。
在应用A、B、C(spring-cloud-a、spring-cloud-b、spring-cloud-c)的YAML的spec.template.metadata.labels下增加alicloud.service.tag: gray。
在这里插入图片描述
2、添加应用、选择或输入应用所属泳道标签后,将自动显示泳道名称。例:gray
3、路由规则
在这里插入图片描述

六、方案验证
应用暴露完成后,可以使用curl命令测试灰度版本的流量路由链路。
1、登录MSE网关管理控制台,在左侧导航栏,选择云原生网关>网关列表,然后在顶部菜单栏选择地域。
在网关列表页面,单击目标网关名称,在左侧导航栏,单击基本概览,然后单击网关入口页签,查看并记录SLB的入口地址(ip)用于下一步的流量测试。

用curl命令,测试灰度版本流量。

测试命令

curl -H “canary: gray” x.x.x.x/a

测试结果

Agray[10.0.3.177] -> B[10.0.3.195] -> Cgray[10.0.3.180]
预期输出表明,流量经过了A、C的灰度环境,由于B没有gray环境,所以流量自动容灾到基线版本。

阅读本书更多章节>>>>

本文链接:https://www.kjpai.cn/gushi/2024-05-05/164936.html,文章来源:网络cs,作者:康由,版权归作者所有,如需转载请注明来源和作者,否则将追究法律责任!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

文章评论