东莞网站公司推广技巧,什么可以放置网站内容,本地备份wordpress,做刷网站流量犯法吗本文介绍通过 Jenkins 构建流水线的方式实现全链路灰度功能。在发布过程中#xff0c;为了整体稳定性#xff0c;我们总是希望能够用小部分特定流量来验证下新发布应用是否正常。
即使新版本有问题#xff0c;也能及时发现#xff0c;控制影响面#xff0c;保障了整体的稳…本文介绍通过 Jenkins 构建流水线的方式实现全链路灰度功能。在发布过程中为了整体稳定性我们总是希望能够用小部分特定流量来验证下新发布应用是否正常。
即使新版本有问题也能及时发现控制影响面保障了整体的稳定性。
整体架构
我们以如下 Demo 为例 为了保证稳定我们约定如下上线流程 其中在灰度验证中有几种不同的策略
直接使用线上小部分流量来测试按照百分比放量从线上按照特定规则选择流量比如特定的 header、特定的 cookie 等在客户端或浏览器上标识出流量是否灰度比如通过 header 传递
部署应用创建泳道
按照参考文档部署应用后我们首先要区分线上流量和灰度流量。
创建泳道组将整个链路涉及到的应用全选 然后创建泳道组将符合规则的应用划入 gray 泳道 注没有匹配的流量会走到基线环境也就是没有打标的应用节点上。配置完成后访问网关如果不符合灰度规则走基线环境 如何符合灰度规则走灰度环境 配置 Jenkins 流水线
本文实践需要将源码打包后执行镜像推送请确保 Jenkins 有权限推送到镜像仓库中。具体操作请参见使用 kaniko 构建和推送容器镜像。
在 Jenkins 命名空间下使用生成的 config.json 文件创建名为 jenkins-docker-cfg 的 Secret。 在 Jenkins 中创建全链路灰度发布流水线
基于 Jenkins 实现自动化发布的流水线通过该流水线可以使应用发布具备可灰度、可观测、可回滚的安全生产三板斧能力。
1. 在 Jenkins 控制台左侧导航栏单击新建任务。
2. 输入任务名称选择流水线然后单击确定
3. 在顶部菜单栏单击流水线页签在流水线区域配置相关参数选择输入脚本路径然后单击保存。 定义选择 Pipeline script from SCM。SCM选择 Git。Repository URL输入 Git 仓库的 URL。脚本路径输入 Jenkinsfile。
您可以参考以下的文件填写好指定的参数当然您也可以根据需求编写 Jenkinsfile 并上传至 Git 的指定路径下流水线中指定的脚本路径。 构建 Jenkins 流水线
1. 在 Jenkins 控制台单击流水线右侧的图标。
2. 单击流水线的开始构建。
说明第一次构建因为需要从 Git 仓库拉取配置并初始化流水线所以可能会报错再次执行 Build with Parameters生成相关的参数填写相关的参数再次执行构建。查看部署状态代码打包镜像构建及发布灰度部署阶段都已经完成结束灰度阶段等待确认。 如果验证结果符合预期则执行全量发布请参见后文的全量发布应用。如果验证结果不符合预期时则执行回滚请参见后文的回滚应用。
结果验证
1. 登录容器服务控制台在控制台左侧导航栏中单击集群。
2. 在集群列表页面中单击目标集群名称或者目标集群右侧操作列下的详情。
3. 在集群管理页面左侧导航栏选择工作负载 无状态。
4. 在无状态应用列表页面spring-cloud-a-gray应用已经自动创建并且它的镜像已经替换为spring-cloud-a:gray版本。 5. 在集群管理页面左侧导航栏选择网络 服务选择设置的命名空间单击zuul-slb服务的外部端点查看真实的调用情况。 不带灰度 Header 进行调用发现路由到 A 的正常节点。 Curl 命令执行结果如下带上符合条件的参数进行访问路由到 A 的灰度节点中。 Curl 命令执行结果如下6. 登录 MSE 治理中心控制台在应用详情页面可以看到灰度流量已经进入到灰度的 Pod 中。 全量发布应用
结果验证通过之后确认全量发布。
1. 在 Jenkins 控制台中单击目标流水线名称。
2. 单击需要全量发布的阶段在请确认是否全量发布对话框中输入 true然后单击确认。 3. 在容器服务控制台发现 spring-cloud-a-gray 应用已经被删除并且 spring-cloud-a 应用的镜像已经替换为 spring-cloud-a:gray 版本。 4. 在 MSE治理中心控制台发现灰度流量已经消失。 回滚应用
如果发现验证结果不符合预期时则回滚应用。
1. 在 Jenkins 控制台中单击目标流水线名称。
2. 单击需要全量发布的阶段在请确认是否全量发布对话框中输入 false然后单击确认。 3. 在容器服务控制台发现 spring-cloud-a-gray 应用已经被删除并且 spring-cloud-a 应用的镜像仍然是老版本。 4. 在 MSE 治理中心控制台发现灰度流量已经消失。 总结
在微服务治理架构中全链路灰度功能能提供虚拟泳道极大的方便了测试、发布时的快速验证能够帮助 DevOPs 提升线上稳定性。
阿里云微服务引擎MSE能够给您带来全生命周期的、全方位的微服务治理能力保障您的线上稳定性、提升开发、运维效率。
相关链接
参考文档
https://github.com/aliyun/alibabacloud-microservice-demo/blob/master/mse-simple-demo/helm/mse-simple-demo/README.md
示例代码仓库地址
https://gitee.com/mse-group/alibabacloud-microservice-demo/tree/master/mse-simple-demo
容器服务控制台
https://cs.console.aliyun.com/#/k8s/cluster/list
MSE治理中心控制台
https://mse.console.aliyun.com/#/overview
使用 kaniko 构建和推送容器镜像
https://help.aliyun.com/document_detail/106712.htm
作者卜比
原文链接
本文为阿里云原创内容未经允许不得转载。