阿里云 MSE + Zadig,面向开发者的全链路灰度发布解决方案
发布策略是企业软件开发和交付过程中的一项关键管理实践,有助于平衡创新、风险和业务需求,提高软件发布的成功率和效果。
在云原生的背景下,企业在选择和实施发布策略时,往往会面临以下困境:
- 云原生能力缺失: 企业由传统部署转变为云原生模式,需要拥有相关能力的人才。这使得企业在发布策略方面难以入手。
- 缺乏自动化平台支持: 即使找到适合产品现状的发布策略,仍然依赖手工逐步执行。这可能导致流程遗漏或人工操作失误,增加了生产事故的风险。
- 发布效率低下: 仅实现了服务级别的灰度能力,逐个发布服务耗时较长,导致发布过程缓慢,验证效果不佳。
为了解决这些问题,Zadig 借助阿里云 MSE 微服务引擎,推出 MSE 全链路灰度发布方案,助力企业高效、安全、平稳的发布。
在本文中,我们将详细探讨 Zadig 如何利用阿里云 MSE 实现的全链路灰度发布方案,包括方案原理的深入介绍、管理员配置的详细讲解以及工程师在日常使用中的实际操作等方面的细节。
01-工作原理介绍
工作原理图示:
工作流程描述:
MSE 灰度发布任务
- 复制一份基准环境中服务的 YAML
- 自动为 YAML 中的资源名称 metadata.name 添加后缀 -mse-<grayTag>
- 自动为 YAML 中的资源添加 MSE 全链路灰度发布所需的相关 label
- 用户可以设置灰度镜像、副本数,此外可以直接在渲染后的 YAML 中修改其他需要改动的字段(不可删除灰度过程中使用的 label)
- 根据最终的 YAML 生成灰度版本资源
下线 MSE 灰度服务
- 删除所有带灰度标的 Kubernetes 资源
02-前置操作
MSE 全链路灰度能力可以支持任意 K8S 集群,全链路灰度场景需基于网关能力建设,下面以 MSE 自带的云原生网关为例介绍场景,用户可以根据自身情况选择合适的网关。
安装 MSE 组件
在阿里云 ACK 集群中安装 MSE 组件,安装方式参考文档:安装 ack-onepilot 组件 [1]。
安装 MSE Ingress 云原生网关
安装方式参考文档
下面以 spring-a 、spring-b 、spring-c 、nacos 这几个服务为例,结合 MSE 云原生网关演示项目初始化和 MSE 灰度发布过程。
03-管理员做项目初始化
运维或者 DevOps 工程师在 Zadig 上进行项目的初始化,包括新建项目、新建服务、新建环境并启用 MSE、新建灰度发布工作流等步骤。以下操作是一次性操作,后续只需按需配置执行工作流即可。
步骤一:新建项目
在 Zadig 上新建项目,输入项目名称,项目类型选择 「K8s YAML」项目。
步骤二:新建服务
在 Zadig 服务-生产服务模块新建 nacos 、spring-a 、spring-b 、spring-c 服务并配置对应的 YAML。具体配置参考 示例项目 YAML 配置 [4]。
注意:在服务 deployment 中需添加以下 selector 和 template.metadata.labels:
zadigx-release-version: original
步骤三:新建环境并启用 MSE
1. 在 Zadig 上新建生产环境
2. 执行以下命令启用 MSE,对灰度过程涉及到的命名空间(上图中为:mse-prod) 打上 mse-enable 标签。
1 kubectl label namespacemse-enable=enabled
3. 在生产环境中添加服务 spring-a 、spring-b 、spring-c 、nacos 。
4. 检查服务是否成功接入 MSE。在 Zadig 环境中选择服务,比如 spring-a ,检查 Pod YAML 中是否成功注入 one-pilot-initcontainer ,如下图所示。
步骤四:配置 MSE 灰度发布工作流
1. 新建发布工作流 mse-gray-workflow,添加任务,配置如下。
- MSE 灰度发布:用于部署灰度服务
- [可选] 通用任务 :用于验证灰度后的新版本
- 下线 MSE 灰度:用于下线灰度服务
2. 新建发布工作流 prod-workflow ,添加 部署 任务,用于执行生产发布,配置如下图所示。
04-工程师执行 MSE 灰度发布
多个灰度服务部署
执行 mse-gray-workflow,选择服务组件 spring-cloud-a 和 spring-cloud-c ,设置灰度标,选择对应的灰度镜像、副本数量、修改灰度服务 YAML 配置,点击执行即可完成灰度服务部署。
此处 spring-cloud-a 为流量入口,因此需要在灰度服务 YAML 中手动添加/修改 Service 和 MSE Ingress 资源的一些相关字段:
1. 通过 MSE Ingress 的 annotations 设置灰度流量规则,并为灰度流量带上灰度标 Header。
MSE Ingress 云原生网关支持按请求头、Cookie、权重三个维度进行配置,三者可以只配置一种,若同时配置生效规则按请求头、Cookie、权重顺序匹配
- 按请求头:基于 Request Header 的流量切分,添加注解 nginx.ingress.kubernetes.io/canary-by-header、nginx.ingress.kubernetes.io/canary-by-header-value 或 nginx.ingress.kubernetes.io/canary-by-header-pattern。
- 按 Cookie:基于 Cookie 的流量切分,添加注解 nginx.ingress.kubernetes.io/canary-by-cookie。
- 按权重:设置请求到指定服务的百分比(值为0~100的整数),添加注解 nginx.ingress.kubernetes.io/canary-weight 。
2. 设置灰度路由规则的 backend.service.name 为其下的灰度 Service 名称。
具体改动内容如下:
部署完成后,可在生产环境中查看灰度服务的运行状态和基本信息。
灰度结果验证
灰度服务部署完成后,自动执行新版本功能验证或通过其他业务方法验证灰度结果。
正式发布生产服务
灰度服务验证没有问题后,执行 prod-workflow 工作流,选择更新的服务及对应的镜像,即可更新生产服务。
灰度服务清理与下线
生产发布成功后,执行 mse-gray-workflow 工作流,选择需要下线的灰度标,即可下线对应的灰度服务。
后续版本将持续优化用户体验,为发布人员提供更易懂、更方便的操作界面,敬请期待……
立即体验 Zadig V2.0 新架构,开启高效交付之旅!🚀
Zadig 开放,链接,专业
阅读原文 / Zadig 在 Github / Zadig 在 Gitee
推荐阅读 : 只有大厂才可以有 DevOps 平台? / 基于 Istio + Zadig,零负担实现云原生全链路灰度发布 / Zadig vs. Jenkins 详细比对:时代的选择与开发者之选 / ZADIG 专家版倾情上线:一键高效发布,119元/人月起,社区老友享年终福利!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
实时数仓投放主备链路Diff测试工具落地实践
一、背景 目前实时数仓提供的投放实时指标优先级别越来越重要,特别下游为规则引擎提供的数仓数据,直接对投放运营的广告投放产生直接影响,数据延迟或者异常均可能产生直接或者间接的资产损失;从投放管理平台的链路全景图投放全景图来看,目前投放是一个闭环的运行流程,实时数仓处于数据链路中的关键节点,实时数据直接支持规则引擎的自动化操作,以及投放管理平台的手动控盘;实时节点事故,将可能导致整个投放链路无法正常运行;为使投放链路达到99.9%的稳定性,需要对链路任务做相关的稳定性提升,优先级提升。 研发测试综合评估方案对投放实时链路增加一条备链路,投放需求迭代,通过备链路进行迭代修改,完成修改后进行主备链路Diff,确保Diff通过率99.9%,即可上线。 二、实现方案 数据准备:主备链路产出的数据分别实时写入到ODPS中。 数据采集:测试工具服务同时采集主备链路数据切片,保留2份同一个时间周期的数据。 数据降噪&Diff:工具采集数据后将进行第一步的降噪处理;主备数据开始对比&第二步降噪处理。 数据Diff结果:加工数据对比的结果,判断出每个字段的差异量,再最终判断出整体数据的差异量...
- 下一篇
【直播预告】99元的云虚拟机× 9毛9的云原生架构√
当考虑云计算资源成本时,云虚拟机的价格常常难倒不少小企业。这时,有人认为,选择云原生架构可能是一个更经济高效的选择。云原生架构可以通过容器化技术和服务器无状态设计来提高资源利用率,从而降低成本。此外,云原生架构还可以实现更快的部署速度、更高的可伸缩性和更好的性能,有助于降低长期成本。 那么,你怎么看呢?此次直播,我们邀请了3位嘉宾,一起来探讨一下,云原生架构替代云虚拟机,到底可不可行? 一、直播信息 直播主题:99元的云虚拟机× 9毛9的云原生架构√ 直播时间:1 月 10 日 19:00 - 20:30 直播平台:“OSC 开源社区”视频号 主办方:开源中国 特邀嘉宾:马工 直播亮点: 1、云虚拟机贵得有道理吗? 2、云原生架构 VS 云虚拟机,优势在哪?我们摊开来算 3、云原生架构 & 云虚拟机,各有哪些坑? 4、对普通的厂商而言,该怎么选择? 直播嘉宾: 主持人: 马工,在北欧从事 Infra 工程师,公众号《瑞典马工》主理人。 嘉宾: 李令辉,云原生数据库 clapdb 创始人,前乘法云 CTO,美洽 CTO,滴滴出行首席架构师。目前致力于基于云上的基础设施新范式...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8编译安装MySQL8.0.19
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Red5直播服务器,属于Java语言的直播服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7