云效AppStack+阿里云MSE实现全链路灰度应用服务

以 SpringCloud 应用为例,了解全链路灰度场景及其工作原理;如何基于云效 Appstack 完成应用基线环境的部署,实时观测环境部署进度;如何平滑为存

本篇文章给大家谈谈云效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:点击“运行”,触发生产发布流程,触发应用镜像构建。镜像构建成功后,会推送到目标镜像仓库。

手动审批通过后,触发正式环境的部署。点击查看“部署订单详情”,可查看部署进度。部署命令成功后,正式(基线)环境部署完成。

云效AppStack+阿里云MSE实现全链路灰度应用服务

输入环境详细信息以查看部署资源状态和详细信息。

以上完成了应用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 生产发布成功后,销毁灰度环境

云效AppStack+阿里云MSE实现全链路灰度应用服务

生产发布成功后,灰度环境资源被销毁,所有流量进入生产环境。

至此,应用基线环境准备、灰度流程配置、灰度发布验证、生产发布、灰度销毁的完整流程已经完成。

相关链接:

[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

用户评论

云效AppStack+阿里云MSE实现全链路灰度应用服务
淡抹烟熏妆丶

这篇文章太棒了!我一直想找个办法实现应用的全链路灰度发布,终于找到了! AppStack+MSE这个组合真的不错啊,效率提高了不少。最重要的是降低风险,对测试人员来说真是福音呀!

    有5位网友表示赞同!

云效AppStack+阿里云MSE实现全链路灰度应用服务
莫名的青春

说的太对了!公司最近一直在推广微服务架构,应用全链路灰度就成了一项关键需求,现在终于有个解决方案了。阿里云的工具一直都很强大,希望能有更详细的教程指导实践流程。

    有20位网友表示赞同!

云效AppStack+阿里云MSE实现全链路灰度应用服务
一别经年

我觉得这篇文章写的有点浅显,对 AppStack 的功能描述太缺乏细节了。我想要深入了解如何利用这种技术实现具体的灰度策略,比如根据不同用户的标签进行个性化灰度的配置和管理,或者根据应用行为表现动态调整灰度的比例等等。

    有18位网友表示赞同!

云效AppStack+阿里云MSE实现全链路灰度应用服务
秘密

阿里云的 MSE 每次都有新的更新,一直关注着。这个 AppStack 和 MSE 的结合的确很有意思。希望以后能看到更多关于应用全链路灰度案例的分享,特别是针对不同行业和场景的解决方案。

    有9位网友表示赞同!

云效AppStack+阿里云MSE实现全链路灰度应用服务
眼角有泪°

终于知道现在流行的全链路灰度为啥这么重要了!以前总是感觉发布应用风险太大,而这篇文章让我看到了新的思路,可以更好地控制风险,而且这个 AppStack + MSE 的组合听起来很有潜力。

    有9位网友表示赞同!

云效AppStack+阿里云MSE实现全链路灰度应用服务
抓不住i

全链路灰度的概念还是比较新奇的,对于我这种传统的开发模式来说需要更多的学习成本。希望文章可以提供一些通俗易懂的案例进行讲解,帮助我更直观的理解其过程和使用方式。

    有7位网友表示赞同!

云效AppStack+阿里云MSE实现全链路灰度应用服务
优雅的叶子

这篇文章写得很有深度,对我来说非常有价值。阿里云的产品越来越强大,已经能够覆盖到各种应用场景,相信以后会有更多创新性的解决方案出来,期待看到更多的技术分享!

    有8位网友表示赞同!

云效AppStack+阿里云MSE实现全链路灰度应用服务
来自火星的我

我觉得这个 AppStack + MSE 的组合还是比较适合大型企业的需求,对于中小企业来说可能成本太高或者操作难度太大的。希望能有更轻量的方案供参考。

    有7位网友表示赞同!

云效AppStack+阿里云MSE实现全链路灰度应用服务
此生一诺

文章描述的优势确实很吸引人,全链路灰度能够提高发布效率和降低风险,但实际运用过程中是否会存在一些瓶颈?需要考虑的因素有哪些?

    有6位网友表示赞同!

云效AppStack+阿里云MSE实现全链路灰度应用服务
权诈

应用服务全链路灰度听起来很复杂的概念,这篇文章能让我了解到核心要点,但还需要深入学习才能真正的理解其运作机制。希望能看到更多的技术细节和实战案例分析。

    有19位网友表示赞同!

云效AppStack+阿里云MSE实现全链路灰度应用服务
Hello爱情风

我一直都在寻找更高效安全的方法进行应用发布,这篇博客揭示了阿里云 AppStack 的巨大潜力!期待尽快尝试这个全链路灰度部署模式。

    有5位网友表示赞同!

云效AppStack+阿里云MSE实现全链路灰度应用服务
初阳

对于微服务架构来说,全链路灰度确实非常重要,可以有效提升交付速度和控制风险,希望能看到更多针对此方案的最佳实践分享。

    有16位网友表示赞同!

云效AppStack+阿里云MSE实现全链路灰度应用服务
君临臣

文章写的不错,让我对阿列云的AppStack有了更深的理解。希望以后能有更多关于AppStack+MSE的使用案例和教程,以便更好地学习和应用。

    有9位网友表示赞同!

云效AppStack+阿里云MSE实现全链路灰度应用服务
無極卍盜

我正在思考如何将全链路灰度纳入公司发布流程中,这篇文章给到我很多启示,尤其是关于安全性控制部分的阐述非常有帮助。

    有17位网友表示赞同!

云效AppStack+阿里云MSE实现全链路灰度应用服务
虚伪了的真心

希望阿里云可以提供更丰富的资源支持,例如专门的培训课程和在线文档,帮助开发者更好地掌握 AppStack 和 MSE 的应用全链路灰度功能。

    有8位网友表示赞同!

云效AppStack+阿里云MSE实现全链路灰度应用服务
残留の笑颜

文章提到MSE的一些新功能很感兴趣,希望能看到更详细介绍,比如如何进行大规模数据处理和自动化运维?

    有20位网友表示赞同!

云效AppStack+阿里云MSE实现全链路灰度应用服务
又落空

我公司正在逐步转型云原生架构,这篇关于AppStack+MSE的文章很有帮助,可以为提升应用交付效率提供有力支撑。

    有16位网友表示赞同!

原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/188615.html

(0)
小su's avatar小su
上一篇 2024年9月23日 下午8:01
下一篇 2024年9月23日 下午8:04

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注