通过云效 CI/CD 实现微服务全链路灰度

本文涉及的产品
应用实时监控服务-应用监控,每月50GB免费额度
可观测监控 Prometheus 版,每月50GB免费额度
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
简介: 在微服务治理架构中,MSE 全链路灰度提供了虚拟泳道能力,极大的方便了测试、发布时的快速验证,能够帮助 Devops 同学减少保障半径、提升线上稳定性。同时,阿里云微服务引擎(MSE)也能给您带来全生命周期的、全方位的微服务治理、流量防护能力,保障您的线上稳定性,提升开发、运维效率。

作者:卜比


在发布过程中,为了产品整体稳定性,我们总是希望能够用小部分特定流量来验证下新版本应用是否能正常工作。


即使新版本有问题,也能及时发现,控制影响面,保障了整体的稳定性。


整体架构


我们以如下 Demo 例:


1.png


为了保证稳定,我们约定如下上线流程:


2.png


其中,在灰度验证中,有几种不同的策略:


  • 直接使用线上小部分流量来测试(按照百分比放量)
  • 从线上按照特定规则选择流量(比如特定的 header、特定的 cookie 等)
  • 在客户端或浏览器上标识出流量是否灰度(比如通过 header 传递)


部署应用&创建泳道


按照参考文档在 Kubernetes 集群中部署应用后,我们首先要区分线上流量和灰度流量。

部署文档:
https://github.com/aliyun/alibabacloud-microservice-demo/blob/master/mse-simple-demo/helm/mse-simple-demo/README.md


创建泳道组,选择入口应用以及整个链路涉及到的应用:


3.png


然后创建泳道,将符合规则的流量划入 gray 泳道:


4.png


注:没有匹配的流量,会走到基线环境,也就是没有打标的应用节点上。


配置完成后,访问网关,如果不符合灰度规则,走基线环境:


5.png


如何符合灰度规则,走灰度环境:


6.png


配置云效流水线


在本例中,使用“其他 · 空模板”创建云效流水线,创建后,需要进行四部分配置:


流水线源


配置好流水线的来源,比如代码仓库等。


7.png

  • 代码仓库:https://gitee.com/mse-group/alibabacloud-microservice-demo.git(为了避免网络延迟,所以采用 gitee 仓库)
  • 默认分支:master
  • 服务连接:可以通过添加服务连接按钮添加,由于本例中代码仓库为公开代码仓库,所以只需要按照默认值创建即可。 


配置完成后,添加到流水线中。


构建阶段配置


此阶段配置云效如何构建 docker 镜像。


删除原有的阶段和空任务,手动添加新任务“镜像构建”:


8.png

9.png


配置参数如下:


  • 构建集群:就近选择,国内可以选择“北京构建集群”
  • 服务连接:您可以按照提示添加 ACR 的服务连接,通过 RAM 授权的方式,让云效可以推送镜像到 ACR 中
  • 仓库:选择您需要推送、部署的镜像仓库
  • 标签:保留默认${DATETIME}即可。
  • Dockerfile 路径:mse-simple-demo/A/Dockerfile 


配置好后,添加即可。


部署 gray 阶段配置


本步骤指示云效如何部署 gray 节点。由于云效可以直接替换 Kubernetes 中的 workload 镜像,我们可以直接使用此机制来发布。


10.png


配置参数如下:


  • 集群连接:用来授权云效修改 ACK 集群中 workload 配置。按照授权添加对应 ACK 集群连接即可
  • Kubectl 版本:选择相近版本即可
  • 命名空间:按照实际情况选择
  • Workloads 类型:本例中是 Deployment
  • Workloads 名称:本例中是 spring-cloud-a-gray
  • 容器名称:本例中是 spring-cloud-a-gray
  • 镜像:选择上一步构建的结果,可以选择“镜像公网地址” 


部署线上阶段配置

11.png


类似上一阶段的配置:


  • Workloads 名称:和上一步不同,这儿是基线环境的 workloads,值为 spring-cloud-a
  • 容器名称:spring-cloud-a 


最后,将部署 gray 阶段和部署线上阶段的的触发模式改为“手动触发”。


完整配置好后的效果如图:


12.png


流水线运行


配置好流水线后,我们可以按照发布流程来一步步运行流水线:


13.png


打包构建


我们手动运行刚刚的创建好的流水线,观察构建状态。


运行成功效果如下:


14.png


您也可以查看日志来确定运行状态、排查问题等:


15.png


完成镜像构建后,接着就开始开始部署 gray 了。


部署 gray 并验证


点击部署 gray 阶段的手动触发按钮,开始部署 gray:


16.png


部署结束后,可以在 Kubernetes 控制台确认下部署后容器镜像是不是符合预期:


17.png


如上图,可以看到对应镜像已经部署到 gray 了。


我们可以尝试用小流量进行验证,按照之前在 MSE 全链路灰度上的配置,访问只需要带上参数 name=xiaoming 即可访问到 gray 节点:


18.png


可以看到请求到达了 Agray 节点,同时新的代码也生效了。


我们不妨观察下此时线上的流量:


19.png


没有带灰度参数的流量,走基线环境,同时新版本的修改也还未生效。


在验证完 gray 环境后,我们就可以开始发布线上了。


如果此时验证不通过,我们可以中止流水线运行,排查问题后重新运行流水线。


部署线上


点击部署线上阶段的手动触发按钮,开始部署线上:


20.png


线上部署成功后,也可以在容器控制台查看,看下是否符合预期:


21.png


此时我们开始观察线上流量,看下修改是否生效:


22.png


可以看到,新版本的修改此时就完全发布到线上了。


总结


在微服务治理架构中,MSE 全链路灰度提供了虚拟泳道能力,极大的方便了测试、发布时的快速验证,能够帮助 Devops 同学减少保障半径、提升线上稳定性。


同时,阿里云微服务引擎(MSE)也能给您带来全生命周期的、全方位的微服务治理、流量防护能力,保障您的线上稳定性,提升开发、运维效率。


相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
SVN版本控制系统
SVN是现在软件开发之中的主流软件版本控制工具,在工作之中利用SVN可以有效的解决多人开发的代码管理问题,本课程将为读者讲解SVN服务器的配置以及基于MyEclipse的SVN客户端插件的配置与使用,并且在讲解之中着重讲解了冲突的产生于解决。
相关文章
|
1月前
|
弹性计算 监控 JavaScript
云效Flow:打造高效、稳定的CI/CD流程实战指南
【10月更文挑战第7天】本文介绍了“云效Flow”这一CI/CD工具,通过实际案例展示了其在Node.js项目中的应用,包括自动化构建、测试及部署流程。云效Flow支持多种开发语言与框架,集成第三方服务,提供详尽的新手引导,简化了CI/CD流程的搭建,提升了开发效率与软件质量,特别适合初创团队和大型企业使用。
99 4
|
4月前
|
Kubernetes 测试技术 数据库
详解微服务应用灰度发布最佳实践
相对于传统软件研发,微服务架构下典型的需求交付最大的区别在于有了能够小范围真实验证的机制,且交付单位较小,风险可控,灰度发布可以弥补线下测试的不足。本文从 DevOps 视角概述灰度发布实践,介绍如何将灰度发布与 DevOps 工作融合,快来了解吧~
31137 19
|
3月前
|
弹性计算 监控 JavaScript
【颠覆传统!】云效Flow——让你的CI/CD流程如虎添翼,轻松驾驭高效稳定的自动化部署之旅!
【8月更文挑战第8天】现代软件开发中,持续集成(CI)与持续部署(CD)至关重要。我最近使用了“云效Flow”,一款专为高效稳定的CI/CD流程设计的工具。它支持多种语言与框架,并易于集成第三方服务。只需注册并创建项目,平台便提供新手引导。以Node.js项目为例,代码托管在GitHub上后,在云效Flow中设置流水线,通过YAML自定义构建与测试步骤。代码提交后,构建自动执行。部署环节可利用内置策略,如一键发布到阿里云ECS,并支持蓝绿部署确保平滑切换。此外,云效Flow还具备监控与告警功能。总之,云效Flow简化了CI/CD流程,提高了开发效率与软件质量,适合各种规模的团队使用。
88 2
|
4月前
|
弹性计算 缓存 Linux
私网环境下使用云效流水线进行 CI/CD的方法
云效流水线可以托管用户的私网环境内的机器,并将构建任务调度到这些机器上,从而确保整个构建过程,和代码库和制品库的交互在私网环境下进行。
46725 18
|
6月前
|
Java jenkins 测试技术
云效Flow:打造高效、稳定的CI/CD流程实战指南
云效流水线Flow评测展示新建流水线步骤,包括选择模板、添加源、Java构建、主机部署及自定义任务。通过图形界面逐项配置,如代码扫描,保存后运行流水线。虽然Flow易于上手,功能丰富,支持多环境部署,但复杂项目管理稍显繁琐,社区支持需加强。对比其他CI/CD工具,Flow在成本、功能和性能上有竞争力,适合作为团队选择。
云效Flow:打造高效、稳定的CI/CD流程实战指南
|
6月前
|
负载均衡 Java 测试技术
面试官:说说微服务灰度发布的底层实现?
面试官:说说微服务灰度发布的底层实现?
139 1
面试官:说说微服务灰度发布的底层实现?
|
6月前
|
Cloud Native 测试技术 Nacos
云效 AppStack + 阿里云 MSE 实现应用服务全链路灰度
本文介绍了如何通过阿里云 MSE 微服务引擎和云效应用交付平台 AppStack 实现灰度发布。
91193 4
|
6月前
|
Cloud Native 测试技术 Nacos
云效AppStack+阿里云MSE实现应用服务全链路灰度
在应用开发测试验证通过后、进行生产发布前,为了降低新版本发布带来的风险,期望能够先部署到灰度环境,用小部分业务流量进行全链路灰度验证,验证通过后再全量发布生产。本文主要介绍如何通过阿里云MSE 微服务引擎和云效应用交付平台AppStack 实现灰度发布。
121592 3
|
Serverless 开发者
SAE+云效,10分钟快速打通CI/CD流水线
亲手体验如何快速从0到1搭建云上CI/CD流水线。
|
3月前
|
敏捷开发 缓存 前端开发
阿里云云效产品使用合集之前端打包时npm安装卡住一般是什么导致的
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
下一篇
无影云桌面