本篇文章给大家谈谈云效AppStack+阿里云MSE实现全链路灰度应用服务,以及对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。
假设A、B、C三个应用的基线版本已经运行。整体应用调用链路是客户端入口流量首先到达网关应用,然后依次经过A、B、C三个应用:
在一个需求发布窗口中,对应用A和C进行了迭代,新版本的A和C需要进行全链路灰度测试。调用链接如下:
整体方案
通过Cloud Effect AppStack 在应用程序发布流程中添加灰度流程。每个应用在部署到生产环境之前,都会先发布到灰度环境。通过灰度识别验证灰度环境,等到开发/测试人员对灰度环境的应用测试没有问题后,再手动发布管道到实际的线上发布部署阶段。
操作实践
先决条件
1)激活Cloud Effect高级版(免费试用1个月),并确保Cloud Effect应用交付AppStack中研发流程功能[1]开启。
2)激活MSE微服务治理[2]。
3.1 启用MSE微服务治理
1)将ACK微服务应用连接到MSE治理中心。具体操作参见ACK微服务应用接入MSE治理中心[3]。
3.2 在云霄AppStack中创建三个应用并部署应用基线版本
在云雪AppStack中创建三个应用,并部署应用基线版本。
我们以spring-cloud-a应用为例,详细介绍一个应用的配置过程:
步骤1:应用关联的代码库,并导入Cloud Effect Codeup中的示例代码:https://github.com/aliyun/alibabacloud-microservice-demo.git
步骤2:应用环境配置。一个应用程序通常可以分为测试环境(test)、预发布环境(pre)、灰色环境(gray)和生产环境(prod)。环境关联不同的部署资源(如K8s集群),部署服务用于不同阶段的测试和验证,最终提供线上服务。
步骤3:应用Kubernetes 部署编排YAML 配置。
将容器镜像定义为占位符{{ .AppStack.image.backend }},并在管道运行时传入构建的镜像。在应用配置中的spec.template.metadata.labels下添加MSE基本配置和灰度相关信息。阐明:
msePilotCreateAppName 是连接MSE服务管理的应用程序名称; msePilotAutoEnable是接入MSE业务管理的开关。 on表示打开,off表示关闭; alicloud.service.tag是MSE灰度发布使用的节点标签。您可以在MSE服务管理控制台的节点详情页面查看节点的标签状态。更多信息请参见ACK微服务应用接入MSE治理中心微服务治理[7]和节点详情[8]。 {{if eq .AppStack.envName ‘gray’ }}基于GO模板方法来识别Cloud Effect当前发布的应用环境。如果环境名称为gray,则为灰度服务。有关更多信息,请参阅Kubernetes 部署编排[9]。 nacos-server需要替换为上面创建的Nacos内网域名。 apiVersion:apps/v1kind:Deploymentmetadata:name:spring-cloud-a-{{.AppStack.envName}}labels:run:spring-cloud-a-{{.AppStack.envName}}namespace: {{ .Values.namespace }}spec:selector:matchLab els:app :spring-cloud-a-{{.AppStack 。 envName}}template:metadata:labels:app:spring-cloud-a-{{.AppStack.envName}}# MSE灰度相关配置msePilotCreateAppName:spring-cloud-amsePilotAutoEnable:’on'{{ ifeq.AppStack.envName’gray’ }}alicloud.service.tag: grey{{ end }}spec:containers:-name:spring-cloud-aimage: {{ .AppStack.image.backend }} # 应用程序镜像占位符,由管道运行时传入imagePullPolicy:Alwaysports:-containerPort:20001livenessProbe:tcpSocket:port :20 001initialDelaySeconds:30periodSeconds:60env:-name:spring.cloud.nacos.discovery.server-addrvalue:’nacos- server’# nacos-server 替换为上面创建的Nacos 内网域名-name:dubbo.registry.addressvalue:’nacos://nacos-server:8848’# nacos-server 替换为上面创建的Nacos 内网域名第四步:应用研发流程配置,通常一个应用程序的开发过程可以分为测试阶段、预发布阶段和生产阶段。
生产阶段通常包括镜像构建(也可以选择发布现有镜像)、发布审核和生产发布。
镜像构建:选择“镜像构建”组件,配置要推送到的镜像仓库,标签默认为${DATETIME},以及构建时使用的Dockerfile路径。此示例是mse-simple-demo/A/Dockerfile。手动卡点:配置生产发布的审批人。生产环境部署:选择“AppStack Deployment”组件,应用程序会自动填充当前应用程序和环境,选择“生产环境-prod”,选择产品构建的镜像。
步骤5:点击“运行”,触发生产发布流程,触发应用镜像构建。镜像构建成功后,会推送到目标镜像仓库。
手动审批通过后,触发正式环境的部署。点击查看“部署订单详情”,可查看部署进度。部署命令成功后,正式(基线)环境部署完成。
输入环境详细信息以查看部署资源状态和详细信息。
以上完成了应用spring-cloud-a代码、环境、编排YAML、研发流程等的配置,并完成了spring-cloud-a基线环境的部署。 spring-cloud-b和spring-cloud-c的应用配置和上线流程是一样的。
注意:当应用较多时,建议使用应用模板来完成应用的批量初始化(具体参见应用模板[10])。
3.3 配置灰度流程
3.3.1 创建MSE全链路灰度泳道
创建全链路灰度泳道组:进入MSE治理中心全链路灰度,点击+创建泳道组和泳道(如果您已经创建泳道组,点击+创建泳道组) )。入口类型选择“MSE云原生网关”,泳道组流量入口选择目标云原生网关,泳道选择spring-cloud-a、spring-cloud-b或spring-cloud-c涉及应用程序的组。
创建分割泳道:将泳道标签设置为灰色,在路由规则条件列表中添加参数group=gray,则携带group=gray的请求参数将进入灰色泳道。
3.3.2 AppStack应用添加灰度流程
进入云霄AppStack应用-设置-研发流程,编辑“生产阶段”流程:
在手动卡顿任务后添加“Gray Environment Deployment”任务:选择“AppStack Deployment”组件,应用会自动填充当前应用,环境选择“Gray Environment-灰色”,产品选择构建好的镜像。
在生产发布任务后添加“灰色环境清理”任务:选择“AppStack清理环境”组件,应用程序会自动填写当前应用程序,环境选择“Gray Environment-灰色”,选择“仅清理资源和保留环境元数据”,接下来灰度服务资源可以在第一次发布时重新部署和拉起。
配置完成后,保存生产阶段流程,进入下一步。
3.4 新需求发布、灰度环境部署、灰度验证
3.4.1 灰度环境部署
当收到新的业务需求时,会涉及到spring-cloud-a 和spring-cloud-c 应用程序的更改。两个应用程序A和C完成代码开发、测试和预发布验证后,进入生产发布阶段。 A、C的生产阶段研发流程分别点击“运行”,触发A、C灰度环境的部署。点击查看“部署订单详情”。部署订单成功后,A、C灰度环境部署完成。
3.4.2 开始灰度验证
当发起带有灰度标识的请求时,结果如下(A、C进行了灰度发布,B没有进行灰度发布,所以请求到了B的基线环境):
curl 获取A、B 和C 的基线环境:
curl -X GET http://47.96.XX.XXX/A/a?group=xxxA[192.168.110.162][config=base] – B[192.168.110.57] – C[192.168.110.62] 刚才在MSE控制台上可以看到发起灰度请求:
3.5 灰度验证通过,生产环境发布
上述灰度验证通过后,即可继续发布生产环境。点击手动触发生产环境发布,查看生产发布批次,观察新旧版本号,观察部署完成后的生产监控日志。
3.6 生产发布成功后,销毁灰度环境
生产发布成功后,灰度环境资源被销毁,所有流量进入生产环境。
至此,应用基线环境准备、灰度流程配置、灰度发布验证、生产发布、灰度销毁的完整流程已经完成。
相关链接:
[1] 确保云高效应用交付AppStack中开启研发流程功能
https://help.aliyun.com/document_detail/2399732.html
[2]激活MSE微服务治理
https://help.aliyun.com/zh/mse/getting-started/activate-microservices-governance#task-2140253
[3] ACK微服务应用接入MSE治理中心
https://help.aliyun.com/zh/mse/getting-started/enable-microservices-governance-for-microservice-applications-in-an-ack-cluster
[4] 创建Nacos引擎
https://help.aliyun.com/zh/mse/getting-started/create-a-nacos-engine#task-2261346
[5]创建MSE云原生网关
https://help.aliyun.com/zh/mse/getting-started/create-a-cloud-native-gateway#task-2140895
https://help.aliyun.com/zh/mse/user-guide/add-a-service-source#task-2081169
[7]ACK微服务应用接入MSE治理中心微服务治理
https://help.aliyun.com/zh/mse/user-guide/enable-microservices-governance-for-microservice-applications-in-an-ack-cluster-1
[8] 节点详细信息
https://help.aliyun.com/zh/mse/user-guide/node-details
[9]Kubernetes部署编排
https://help.aliyun.com/document_detail/461384.html
原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/188615.html
用户评论
淡抹烟熏妆丶
这篇文章太棒了!我一直想找个办法实现应用的全链路灰度发布,终于找到了! AppStack+MSE这个组合真的不错啊,效率提高了不少。最重要的是降低风险,对测试人员来说真是福音呀!
有5位网友表示赞同!
莫名的青春
说的太对了!公司最近一直在推广微服务架构,应用全链路灰度就成了一项关键需求,现在终于有个解决方案了。阿里云的工具一直都很强大,希望能有更详细的教程指导实践流程。
有20位网友表示赞同!
一别经年
我觉得这篇文章写的有点浅显,对 AppStack 的功能描述太缺乏细节了。我想要深入了解如何利用这种技术实现具体的灰度策略,比如根据不同用户的标签进行个性化灰度的配置和管理,或者根据应用行为表现动态调整灰度的比例等等。
有18位网友表示赞同!
秘密
阿里云的 MSE 每次都有新的更新,一直关注着。这个 AppStack 和 MSE 的结合的确很有意思。希望以后能看到更多关于应用全链路灰度案例的分享,特别是针对不同行业和场景的解决方案。
有9位网友表示赞同!
眼角有泪°
终于知道现在流行的全链路灰度为啥这么重要了!以前总是感觉发布应用风险太大,而这篇文章让我看到了新的思路,可以更好地控制风险,而且这个 AppStack + MSE 的组合听起来很有潜力。
有9位网友表示赞同!
抓不住i
全链路灰度的概念还是比较新奇的,对于我这种传统的开发模式来说需要更多的学习成本。希望文章可以提供一些通俗易懂的案例进行讲解,帮助我更直观的理解其过程和使用方式。
有7位网友表示赞同!
优雅的叶子
这篇文章写得很有深度,对我来说非常有价值。阿里云的产品越来越强大,已经能够覆盖到各种应用场景,相信以后会有更多创新性的解决方案出来,期待看到更多的技术分享!
有8位网友表示赞同!
来自火星的我
我觉得这个 AppStack + MSE 的组合还是比较适合大型企业的需求,对于中小企业来说可能成本太高或者操作难度太大的。希望能有更轻量的方案供参考。
有7位网友表示赞同!
此生一诺
文章描述的优势确实很吸引人,全链路灰度能够提高发布效率和降低风险,但实际运用过程中是否会存在一些瓶颈?需要考虑的因素有哪些?
有6位网友表示赞同!
权诈
应用服务全链路灰度听起来很复杂的概念,这篇文章能让我了解到核心要点,但还需要深入学习才能真正的理解其运作机制。希望能看到更多的技术细节和实战案例分析。
有19位网友表示赞同!
Hello爱情风
我一直都在寻找更高效安全的方法进行应用发布,这篇博客揭示了阿里云 AppStack 的巨大潜力!期待尽快尝试这个全链路灰度部署模式。
有5位网友表示赞同!
初阳
对于微服务架构来说,全链路灰度确实非常重要,可以有效提升交付速度和控制风险,希望能看到更多针对此方案的最佳实践分享。
有16位网友表示赞同!
君临臣
文章写的不错,让我对阿列云的AppStack有了更深的理解。希望以后能有更多关于AppStack+MSE的使用案例和教程,以便更好地学习和应用。
有9位网友表示赞同!
無極卍盜
我正在思考如何将全链路灰度纳入公司发布流程中,这篇文章给到我很多启示,尤其是关于安全性控制部分的阐述非常有帮助。
有17位网友表示赞同!
虚伪了的真心
希望阿里云可以提供更丰富的资源支持,例如专门的培训课程和在线文档,帮助开发者更好地掌握 AppStack 和 MSE 的应用全链路灰度功能。
有8位网友表示赞同!
残留の笑颜
文章提到MSE的一些新功能很感兴趣,希望能看到更详细介绍,比如如何进行大规模数据处理和自动化运维?
有20位网友表示赞同!
又落空
我公司正在逐步转型云原生架构,这篇关于AppStack+MSE的文章很有帮助,可以为提升应用交付效率提供有力支撑。
有16位网友表示赞同!