分享好友 最新动态首页 最新动态分类 切换频道
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。

最新文章
荣耀x50i什么档次
荣耀X50i:中档手机的专业选择荣耀X50i是一款外观设计精良、配置强大的中档手机。其独特的外观采用了高清全面屏设计,屏占比高达91.46%,呈现出令人难以置信的视觉效果。机身正面和背面都经过弧面处理,使得手机更加舒适美观。此外,荣耀X5
金舟文件夹加密大师
  金舟文件夹加密大师是一款专业强劲的数据,采用一种区块加密标准-AES加密,加密速度快、安全性高、资源消耗低,不仅拥有文件/文件夹加密、解密、打开等功能,而且本地加密/解密,更安全,更高效,同时界面简洁,操作方便,一用即会,主
麻省理工学院揭示了一种可生物降解的微塑料珠子替代品
塑料回收行业作为全球可持续发展努力的重要支柱,当前正面临诸多困境。尽管长期前景乐观,近期的不确定性和结构性挑战却为塑料回收企业创造了艰难的经营环境。因此,许多回收企业相继破产(如Umincorp、TRH、Ecocircle和Ioniqa),包括部分
百度竞价:如何快速获得商机
在互联网时代,搜索引擎营销成为了企业提升品牌知名度和销量的重要手段之一。百度作为全球最大的中文搜索引擎,其广告投放服务——百度竞价,更是受到了广大企业的青睐。想要通过百度竞价成功推广自己的产品或服务,首先需要明确的是,百度
打造独特而强大的织梦大气网站源码
织梦(DedeCMS)是一款出色的开源多用户内容管理系统,其源码可以用于搭建各种规模和类型的网站。借助织梦大气网站源码,您可以打造独特而强大的网站,为您的业务和品牌带来更多曝光和发展机会。在选择织梦大气网站源码之前,首先要明确自己
百度收录一篇文章需要多久?
百度收录一篇文章需要多久?责任编辑 :李飞文章来源 :星翼创想(www.iswweb.com)发布时间 :2012-06-29阅读次数:4784深圳网站建设所见过的最快收录时间是5分钟。原创的文章,基本都在2-4个小时左右被收录,如果运气好,赶上百度蜘蛛正好来你的
玩堡垒之夜高配手机 你与高手间就差它了
随着性能和网速的不断增进,手机上的游戏变得越来越有趣,人们对手机的配置也越来越挑剔,时下大热的《》和《刺激战场》你是否已经玩腻了呢?不要难过一款大热的PC端游戏即将登陆安卓端,它就是众多玩家期待已久的《堡垒之夜》! 据悉官方
经验分享|手把手教!使用AI帮你求职:写简历/准备面试/写方案
请大家尽量花10-15分钟先看完,避免看完标题直接放在收藏夹里吃灰~不局限于这几种例子,只是通过几个和生活相关的典型实践,让大家会写prompt(提示词/指令),帮助AI识别我们的意图,输出我们期待的结果。学会并习惯以后,就可以用AI做更
[山东大联考]山东省2025届高三年级上学期12月联考历史
[山东大联考]山东省2025届高三年级上学期12月联考历史试卷答案,我们目前收集并整理关于[山东大联考]山东省2025届高三年级上学期12月联考历史得系列试题及其答案,更多试题答案请关注本网站以下是该试卷的部分内容或者是答案亦或者啥也
通信行业专题研究:字节持续推动AI产业布局,重视产业链核心标的.pdfVIP
行业报告|行业专题研究通信证券研究报告2024年12月14日投资评级字节持续推动AI产业布局,重视产业链核心标的行业评级强于大市(维持评级)上次评级强于大市字节持续布局AI作者字节跳动自2023年开始布局AI大模型,至今已上线了超过10款AI应用
相关文章
推荐文章
发表评论
0评