分享好友 最新动态首页 最新动态分类 切换频道
canary-注解方式
2024-12-26 20:59

当对服务进行版本更新升级时,需要使用到滚动升级、分批暂停发布、蓝绿发布以及灰度发布等发布方式。本文将介绍在云容器引擎集群中如何通过Nginx Ingress Controller来实现应用服务的灰度发布。

灰度及蓝绿发布是为新版本创建一个与老版本完全一致的生产环境,在不影响老版本的前提下,按照一定的规则把部分流量切换到新版本,当新版本试运行一段时间没有问题后,将用户的全量流量从老版本迁移至新版本。

其中AB测试就是一种灰度发布方式,一部分用户继续使用老版本的服务,将一部分用户的流量切换到新版本,如果新版本运行稳定,则逐步将所有用户迁移到新版本。

云容器引擎控制台灰度发布功能的用法如下。

canary-注解方式:使用canary- Annotation配置蓝绿发布与灰度发布,canary-* Annotation是社区官方实现的灰度发布方式。

基于客户端请求的流量切分场景:假设当前线上环境,您已经有一套服务Service A对外提供7层服务,此时上线了一些新的特性,需要发布上线一个新的版本Service A'。但又不想直接替换Service A服务,而是希望将请求头中包含foo=bar或者Cookie中包含foo=bar的客户端请求转发到Service A'服务中。待运行一段时间稳定后,可将所有的流量从Service A切换到Service A'服务中,再平滑地将Service A服务下线。

基于服务权重的流量切分场景:假设当前线上环境,您已经有一套服务Service B对外提供7层服务,此时修复了一些问题,需要发布上线一个新的版本Service B'。但又不想将所有客户端流量切换到新版本Service B'中,而是希望将20%的流量切换到新版本Service B'中。待运行一段时间稳定后,再将所有的流量从Service B切换到Service B'服务中,再平滑地将Service B服务下线。

针对以上多种不同的应用发布需求,天翼云容器云服务引擎Ingress Controller支持了多种流量切分方式:基于Request Header的流量切分,适用于灰度发布以及AB测试场景。基于Cookie的流量切分,适用于灰度发布以及AB测试场景。基于Query Param的流量切分,适用于灰度发布以及AB测试场景。基于服务权重的流量切分,适用于蓝绿发布场景。

Nginx Ingress Controller通过下列canary-* Annotation来支持应用服务的灰度发布机制。

步骤一:部署服务。部署Nginx服务并通过Nginx Ingress Controller对外提供7层域名访问。创建Deployment和Service。创建nginx.yaml。


执行以下命令,创建Deployment和Service。


部署Ingress,创建ingress.yaml。


执行以下命令,部署Ingress。


测试访问情况。执行以下命令,获取外部IP。


执行以下命令,查看路由访问情况。


期望输出:


步骤二:灰度发布新版本服务

发布一个新版本的Nginx服务并配置路由规则。部署新版本的Deployment和Service。创建nginx1.yaml。


执行以下命令,创建Deployment和Service。


设置访问新版本服务的路由规则。容器支持设置以下三种路由规则,您可以根据实际情况选择路由规则。设置满足特定规则的客户端才能访问新版本服务。以下示例仅请求头中满足foo=bar的客户端请求才能路由到新版本服务。按照以上条件,创建新的Ingress资源gray-release-canary。


查看路由访问情况。执行以下命令,访问服务。


预期输出:


执行以下命令,请求头中满足foo=bar的客户端请求访问服务。


预期输出:


在满足特定规则的基础上设置一定比例的请求被路由到新版本服务中。以下示例要求请求头中满足foo=bar的客户端请求,且仅允许其中50%的流量被路由到新版本服务中。按照以下内容,修改步骤2中创建的Ingress。


查看路由访问情况。执行以下命令,访问服务。


预期输出:


执行以下命令,请求头中满足foo=bar的客户端请求访问服务。


预期输出:


重复执行以上命令。可以看到,仅请求头中满足foo=bar的客户端请求,且只有50%的流量才能路由到新版本服务。重复执行以上命令。可以看到,仅请求头中满足foo=bar的客户端请求,且只有50%的流量才能路由到新版本服务。按照以下内容,修改步骤2创建的Ingress。


执行以下命令,查看路由访问情况。


重复执行以上命令,可以看到仅50%的流量路由到新版本服务。

步骤三:删除老版本服务基于Helm的发布管理

系统运行一段时间后,当新版本服务已经稳定并且符合预期后,需要下线老版本的服务,仅保留新版本服务在线上运行。为了达到该目标,需要将旧版本的Service指向新版本服务的Deployment,并且删除旧版本的Deployment和新版本的Service。修改旧版本Service,使其指向新版本服务。


执行以下命令,请求头中满足foo=bar的客户端请求访问服务。


预期输出:


重复执行以上命令,可以看到请求全部被路由到了新版本的服务。执行以下命令,删除Canary Ingress资源gray-release-canary。


删除旧版本的Deployment和新版本的Service。执行以下命令,删除旧版本的Deployment。


执行以下命令,删除新版本的Service。

最新文章
适当使用关键词,避免堆砌,优化独立站的SEO
在当今数字化时代,拥有一个独立网站已成为许多企业和个人展现自我的重要途径。然而,创建一个成功的网站仅仅是第一步,如何提升其可见性,尤其是在搜索引擎中的排名,显得尤为重要。这就是搜索引擎优化(SEO)的魅力所在。小编今天将为大
网购的口气清新剂竟是电子烟?电子烟乱象难禁,未成年人成最大受害者
未成年的儿子在正规网购平台购买了一款名为“口腔喷雾清新剂”的产品,吸食后直呼“味道真甜”,并吐出香精味的烟雾。陈女士仔细检查才发现,这竟是一款伪装成清新剂的电子烟。近年来,电子烟因其“低门槛”和隐蔽性成为市场乱象的重灾区。
许昌网站排名优化软件,提升网站排名的利器,许昌正规网站优化公司
许昌网站排名优化软件是提升网站排名的利器,通过专业的优化技巧和策略,帮助网站在搜索引擎中获得更好的排名。许昌正规网站优化公司则提供全方位的网站优化服务,包括关键词研究、内容优化、链接建设等,确保网站在搜索引擎中获得更高的曝
小米Note 3与小米6全面对比:升级澎湃OS后的差异体验(2024版)
从价格维度来看,小米Note3和小米6的价格水平大体相当。但当我们深入探讨其硬件配置时,便会发现两者之间存在诸多差异。在硬件核心方面,小米Note3和小米6主要区别在于屏幕大小、处理器、前置摄像头、电池容量以及人脸解锁功能。简单来说,
如何刷机vivo手机?最新的刷机教程分享
刷机是改变手机系统的一种方法,可以给手机带来更多的功能和自定义选项。如果你拥有一部vivo手机,想要尝试刷机,下面是一个简单的教程,帮助你完成这个过程。在刷机之前,务必备份好手机中的重要数据,包括联系人、短信、照片等。刷机过程
京东小店入驻流程?京东小店怎么开?
  下面是详细的入驻流程:  1.注册京东小店账号:  进入京东小店的首页,点击“注 册”按钮,在输入个人信息后点击“注册”按钮。  2.提交企业资料:  在注册完成后,需要在“店 家管理”中点击“填写企业资料”将企业相关信息填
搜索引擎的Query自动纠错技术和架构详解
如今,搜索引擎是人们的获取信息最重要的方式之一,在搜索页面小小的输入框中,只需输入几个关键字,就能找到你感兴趣问题的相关网页。搜索巨头Google,甚至已经使Google这个创造出来的单词成为动词,
高绩效的秘密,不靠奖惩
最近微信改版经常有读者朋友错过推送星标
运筹优化算法常用求解器
运筹学从形成到发展,在此过程中积累的大量理论和方法在国防、能源、制造、交通、金融、通信等各个领域发挥着越来越重要的作用。我们在生产生活中遇到的很多实际问题,都可以通过运筹学所涉及的优化方法对其进行数学建模࿰
猫眼智能锁24小时售后服务热线-官方400热线报修中心 - 农业 - 百科知识-蓝心网
猫眼智能锁售后24小时维修服务热线:400-658-8618。猫眼智能锁全市各区售后服务点热线号码。☎:400-658-8618猫眼智能锁售后服务,秉承“诚信为本、客户至上”的服务态度和“以客户为中心”的服务指导思想,不仅真诚地为用户提供先进、高质
相关文章
推荐文章
发表评论
0评