CN110427204B - 一种基于容器和服务网格技术的自动化灰度发布方法 - Google Patents

一种基于容器和服务网格技术的自动化灰度发布方法 Download PDF

Info

Publication number
CN110427204B
CN110427204B CN201910730577.0A CN201910730577A CN110427204B CN 110427204 B CN110427204 B CN 110427204B CN 201910730577 A CN201910730577 A CN 201910730577A CN 110427204 B CN110427204 B CN 110427204B
Authority
CN
China
Prior art keywords
canary
version
deployment
stable
version deployment
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910730577.0A
Other languages
English (en)
Other versions
CN110427204A (zh
Inventor
徐军
王刚
高传集
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Inspur Cloud Information Technology Co Ltd
Original Assignee
Inspur Cloud Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Inspur Cloud Information Technology Co Ltd filed Critical Inspur Cloud Information Technology Co Ltd
Priority to CN201910730577.0A priority Critical patent/CN110427204B/zh
Publication of CN110427204A publication Critical patent/CN110427204A/zh
Application granted granted Critical
Publication of CN110427204B publication Critical patent/CN110427204B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Abstract

本发明公开一种基于容器和服务网格技术的自动化灰度发布方法,涉及数据识别技术领域;通过容器技术和服务网格技术,通过镜像推送触发灰度发布,达到以自动化的方式进行灰度发布,简化灰度发布操作的目的,与现有技术相比,灰度发布过程中不需要人工手动修改相关灰度策略配置,防止运维人员手动操作过程中出现错误,降低运维人员手动操作的风险;可预先定义金丝雀规则,在进行灰度发布时,会自动使用预设的金丝雀规则将流量分配到金丝雀版本和稳定版部署;在流量切换过程中,通过自动修改DestinationRule的subset,将金丝雀版本部署和稳定版部署进行交换,并且修改VirtualService为流量规则,用户无感知,保障升级过程中业务平滑过渡。

Description

一种基于容器和服务网格技术的自动化灰度发布方法
技术领域
本发明公开一种基于容器和服务网格技术的自动化灰度发布方法,涉及数据识别技术领域。
背景技术
目前,云计算已经趋于成熟,并在各个行业中被广泛应用。在诸多云计算厂商和社区的推动下,各个行业内的业务系统已经逐渐迁入到云平台中部署运行。在业务上云之后,为了保证在版本发布过程中能够平滑过渡,一般会采用灰度发布的策略,目前行业内灰度发布方式基本上都是由运维工程师团队手动来操作完成,但是人工手动操作容易出现差错,尤其极易出现参数配置错误,导致生产故障。
本发明提供一种基于容器和服务网格技术的自动化灰度发布方法,旨在通过容器技术和服务网格技术,利用镜像推送触发灰度发布,达到以自动化的方式进行灰度发布,简化灰度发布操作的目的,并且实现业务从老版本到新版本的平滑过渡,避免在升级过程中出现问题对用户造成影响。
发明内容
本发明针对现有技术的问题,提供一种基于容器和服务网格技术的自动化灰度发布方法,来降低人工操作的风险,保障升级过程中业务平滑过渡。
本发明提出的具体方案是:
一种基于容器和服务网格技术的自动化灰度发布方法:
发布初始版本应用实例时,发布金丝雀版本部署和稳定版部署,金丝雀版本部署的副本数为0,流量全部导入到稳定版部署,
利用镜像更新事件触发自动更新金丝雀版本部署,使用预置的金丝雀版本规则将流量导入到金丝雀部署中,
金丝雀版本测试完成,进行金丝雀版本发布,将金丝雀版本部署变更为现有稳定版部署,将原来的稳定版部署变更为现有金丝雀版本部署,并将现有金丝雀版本部署的副本数置为0,流量全部导入到现有稳定版部署中。
所述的方法中创建两个工作负载,分别进行金丝雀版本规则和稳定版规则的注解,用以标识金丝雀版本部署和稳定版部署,并创建对应的VirtualService和DestinationRule资源。
所述的方法中利用镜像更新事件触发自动更新金丝雀版本部署时,判断VirtualServices中是否存在金丝雀版本规则,若存在表示金丝雀版本部署仍在线运行则使用金丝雀版本规则更新金丝雀版本部署,若不存在表示金丝雀版本下线,将金丝雀版本副本数置为1,使用当前触发镜像更新金丝雀版本部署,使用预置的金丝雀版本规则更新VirtualService,将流量分别导入到金丝雀版本部署和稳定版部署。
所述的方法中金丝雀版本测试完成,进行金丝雀版本发布时,自动修改金丝雀版本规则和稳定版规则的注解,金丝雀版本部署变更为现有稳定版部署,稳定版部署变更为现有金丝雀版本部署,同时将现有金丝雀版本部署副本数置为0,自动修改DestinationRule的subset,并修改流量规则,将流量全部导入到现有稳定版部署。
一种基于容器和服务网格技术的自动化灰度发布系统,包括发布单元、流量导入单元及触发单元,各单元依据需求进行通信,
发布单元发布初始版本应用实例时,发布金丝雀版本部署和稳定版部署,金丝雀版本部署的副本数为0,流量导入单元将流量全部导入到稳定版部署,
触发单元利用镜像更新事件触发自动更新金丝雀版本部署,流量导入单元使用预置的金丝雀版本规则将流量导入到金丝雀部署中,
金丝雀版本测试完成,发布单元进行金丝雀版本发布,将金丝雀版本部署变更为现有稳定版部署,将原来的稳定版部署变更为现有金丝雀版本部署,并将现有金丝雀版本部署的副本数置为0,流量导入单元将流量全部导入到现有稳定版部署中。
所述的系统中发布单元创建两个工作负载,分别进行金丝雀版本规则和稳定版规则的注解,用以标识金丝雀版本部署和稳定版部署,并创建对应的VirtualService和DestinationRule资源。
所述的系统中触发单元利用镜像更新事件触发自动更新金丝雀版本部署时,发布单元判断VirtualServices中是否存在金丝雀版本规则,若存在表示金丝雀版本部署仍在线运行则使用金丝雀版本规则更新金丝雀版本部署,若不存在表示金丝雀版本下线,将金丝雀版本副本数置为1,使用当前触发镜像更新金丝雀版本部署,使用预置的金丝雀版本规则更新VirtualService,流量导入单元将流量分别导入到金丝雀版本部署和稳定版部署。
所述的系统中金丝雀版本测试完成,发布单元进行金丝雀版本发布时,自动修改金丝雀版本规则和稳定版规则的注解,金丝雀版本部署变更为现有稳定版部署,稳定版部署变更为现有金丝雀版本部署,同时将现有金丝雀版本部署副本数置为0,自动修改DestinationRule的subset,并修改流量规则,流量导入单元将流量全部导入到现有稳定版部署。
本发明的有益之处是:
本发明提供一种基于容器和服务网格技术的自动化灰度发布方法,通过容器技术和服务网格技术,通过镜像推送触发灰度发布,达到以自动化的方式进行灰度发布,简化灰度发布操作的目的,与现有技术相比,灰度发布过程中不需要人工手动修改相关灰度策略配置,防止运维人员手动操作过程中出现错误,降低运维人员手动操作的风险;可预先定义金丝雀规则,在进行灰度发布时,会自动使用预设的金丝雀规则将流量分配到金丝雀版本和稳定版部署;在流量切换过程中,通过自动修改DestinationRule的subset,将金丝雀版本部署和稳定版部署进行交换,并且修改VirtualService为流量规则,用户无感知,保障升级过程中业务平滑过渡。
附图说明
图1是本发明方法流程示意图。
具体实施方式
本发明提供一种基于容器和服务网格技术的自动化灰度发布方法:
发布初始版本应用实例时,发布金丝雀版本部署和稳定版部署,金丝雀版本部署的副本数为0,流量全部导入到稳定版部署,
利用镜像更新事件触发自动更新金丝雀版本部署,使用预置的金丝雀版本规则将流量导入到金丝雀部署中,
金丝雀版本测试完成,进行金丝雀版本发布,将金丝雀版本部署变更为现有稳定版部署,将原来的稳定版部署变更为现有金丝雀版本部署,并将现有金丝雀版本部署的副本数置为0,流量全部导入到现有稳定版部署中。
同时提供与上述方法相对应的一种基于容器和服务网格技术的自动化灰度发布系统,包括发布单元、流量导入单元及触发单元,各单元依据需求进行通信,
发布单元发布初始版本应用实例时,发布金丝雀版本部署和稳定版部署,金丝雀版本部署的副本数为0,流量导入单元将流量全部导入到稳定版部署,
触发单元利用镜像更新事件触发自动更新金丝雀版本部署,流量导入单元使用预置的金丝雀版本规则将流量导入到金丝雀部署中,
金丝雀版本测试完成,发布单元进行金丝雀版本发布,将金丝雀版本部署变更为现有稳定版部署,将原来的稳定版部署变更为现有金丝雀版本部署,并将现有金丝雀版本部署的副本数置为0,流量导入单元将流量全部导入到现有稳定版部署中。
下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定。
以浪潮某一业务系统需要进行灰度发布为例,利用本发明方法具体过程如下:
步骤一:发布初始版本应用实例,
步骤二:发布初始版本应用实例时,可默认创建两个工作负载,在工作负载上打上注解deployment.inspur.com/role,用以标识金丝雀版本部署和稳定版部署,其中金丝雀版本部署注解为deployment.inspur.com/role:canary,稳定版版本注解为deployment.inspur.com/role:stable,创建对应的VirtualService和DestinationRule资源,DestinationRule的subset使用deployment作为label标签,工作负载的name作为标签值,金丝雀版本副本数伸缩为0,稳定版部署副本数可由用户预先设定,并且大于等于1,使用流量规则将流量默认100%导入到稳定版本部署,DestinationRule的subset规则如下所示:
步骤三:镜像更新事件触发自动灰度发布,
当有镜像更新后,通过镜像更新事件触发自动化灰度发布:
当VirtualServices中不存在canary规则金丝雀版,即表示金丝雀版本已经下线,将金丝雀版本副本数伸缩为1,使用当前触发镜像更新金丝雀版本部署,并使用预先定义的默认金丝雀规则更新VirtualService,将流量分别导入到金丝雀版本部署和稳定版部署;
当VirtualServices中存在canary规则,即金丝雀版本部署仍然在线运行时,直接使用金丝雀版本规格更新金丝雀版本部署;
步骤四:金丝雀版本发布,
在金丝雀版本测试稳定后,进行金丝雀版本发布,自动修改金丝雀版本部署和稳定版部署的注解,金丝雀版本部署变更为稳定版部署,稳定版部署变更为金丝雀版本部署,同时将修改后的金丝雀版本部署副本数伸缩为0,自动修改DestinationRule的subset,将金丝雀版本部署和稳定版部署进行交换,修改VirtualService为流量规则,将流量全部导入到切换后的稳定版部署,流量切换过程中用户无感知。上述过程的场景可见表1及图1。
表1
而当有新的镜像更新时,触发自动化灰度发布,重复执行(二)、(三)步骤即可。
利用本发明自动化灰度发布系统时,仍以上述浪潮某一业务系统需要进行灰度发布为例,具体过程如下:
步骤一:发布单元发布初始版本应用实例,
步骤二:发布单元发布初始版本应用实例时,可默认创建两个工作负载,在工作负载上打上注解deployment.inspur.com/role,用以标识金丝雀版本部署和稳定版部署,其中金丝雀版本部署注解为deployment.inspur.com/role:canary,稳定版版本注解为deployment.inspur.com/role:stable,创建对应的VirtualService和DestinationRule资源,DestinationRule的subset使用deployment作为label标签,工作负载的name作为标签值,金丝雀版本副本数伸缩为0,稳定版部署副本数可由用户预先设定,并且大于等于1,流量导入单元使用流量规则将流量默认100%导入到稳定版本部署,DestinationRule的subset规则如下所示:
步骤三:触发单元因镜像更新事件触发自动灰度发布,
当有镜像更新后,触发单元通过镜像更新事件触发发布单元进行自动化灰度发布:
当VirtualServices中不存在canary规则金丝雀版,即表示金丝雀版本已经下线,发布单元将金丝雀版本副本数伸缩为1,使用当前触发镜像更新金丝雀版本部署,并使用预先定义的默认金丝雀规则更新VirtualService,流量导入单元将流量分别导入到金丝雀版本部署和稳定版部署;
当VirtualServices中存在canary规则,即金丝雀版本部署仍然在线运行时,发布单元直接使用金丝雀版本规则更新金丝雀版本部署;
步骤四:发布单元进行金丝雀版本发布,
在金丝雀版本测试稳定后,发布单元进行金丝雀版本发布,自动修改金丝雀版本部署和稳定版部署的注解,金丝雀版本部署变更为稳定版部署,稳定版部署变更为金丝雀版本部署,同时将修改后的金丝雀版本部署副本数伸缩为0,自动修改DestinationRule的subset,将金丝雀版本部署和稳定版部署进行交换,修改VirtualService为流量规则,流量导入单元将流量全部导入到切换后的稳定版部署,流量切换过程中用户无感知。上述过程的场景可见表1及图1。
而当有新的镜像更新时,触发单元触发发布单元进行自动化灰度发布,重复执行(二)、(三)步骤即可。
以上所述实施例仅是为充分说明本发明而所举的较佳的实施例,本发明的保护范围不限于此。本技术领域的技术人员在本发明基础上所作的等同替代或变换,均在本发明的保护范围之内。本发明的保护范围以权利要求书为准。

Claims (2)

1.一种基于容器和服务网格技术的自动化灰度发布方法,其特征是发布初始版本应用实例时,发布金丝雀版本部署和稳定版部署,金丝雀版本部署的副本数为0,流量全部导入到稳定版部署,
利用镜像更新事件触发自动更新金丝雀版本部署,使用预置的金丝雀版本规则将流量导入到金丝雀部署中,
金丝雀版本测试完成,进行金丝雀版本发布,将金丝雀版本部署变更为现有稳定版部署,将原来的稳定版部署变更为现有金丝雀版本部署,并将现有金丝雀版本部署的副本数置为0,流量全部导入到现有稳定版部署中,
具体过程为:
创建两个工作负载,分别进行金丝雀版本规则和稳定版规则的注解,用以标识金丝雀版本部署和稳定版部署,并创建对应的VirtualService和DestinationRule资源,
利用镜像更新事件触发自动更新金丝雀版本部署时,判断VirtualServices中是否存在金丝雀版本规则,若存在表示金丝雀版本部署仍在线运行则使用金丝雀版本规则更新金丝雀版本部署,若不存在表示金丝雀版本下线,将金丝雀版本副本数置为1,使用当前触发镜像更新金丝雀版本部署,使用预置的金丝雀版本规则更新VirtualService,将流量分别导入到金丝雀版本部署和稳定版部署,
金丝雀版本测试完成,进行金丝雀版本发布时,自动修改金丝雀版本规则和稳定版规则的注解,金丝雀版本部署变更为现有稳定版部署,稳定版部署变更为现有金丝雀版本部署,同时将现有金丝雀版本部署副本数置为0,自动修改DestinationRule的subset,并修改流量规则,将流量全部导入到现有稳定版部署。
2.一种基于容器和服务网格技术的自动化灰度发布系统,其特征是包括发布单元、流量导入单元及触发单元,各单元依据需求进行通信,
发布单元发布初始版本应用实例时,发布金丝雀版本部署和稳定版部署,金丝雀版本部署的副本数为0,流量导入单元将流量全部导入到稳定版部署,
触发单元利用镜像更新事件触发自动更新金丝雀版本部署,流量导入单元使用预置的金丝雀版本规则将流量导入到金丝雀部署中,
金丝雀版本测试完成,发布单元进行金丝雀版本发布,将金丝雀版本部署变更为现有稳定版部署,将原来的稳定版部署变更为现有金丝雀版本部署,并将现有金丝雀版本部署的副本数置为0,流量导入单元将流量全部导入到现有稳定版部署中,
具体过程为:
发布单元创建两个工作负载,分别进行金丝雀版本规则和稳定版规则的注解,用以标识金丝雀版本部署和稳定版部署,并创建对应的VirtualService和DestinationRule资源,
触发单元利用镜像更新事件触发自动更新金丝雀版本部署时,发布单元判断VirtualServices中是否存在金丝雀版本规则,若存在表示金丝雀版本部署仍在线运行则使用金丝雀版本规则更新金丝雀版本部署,若不存在表示金丝雀版本下线,将金丝雀版本副本数置为1,使用当前触发镜像更新金丝雀版本部署,使用预置的金丝雀版本规则更新VirtualService,流量导入单元将流量分别导入到金丝雀版本部署和稳定版部署,
金丝雀版本测试完成,发布单元进行金丝雀版本发布时,自动修改金丝雀版本规则和稳定版规则的注解,金丝雀版本部署变更为现有稳定版部署,稳定版部署变更为现有金丝雀版本部署,同时将现有金丝雀版本部署副本数置为0,自动修改DestinationRule的subset,并修改流量规则,流量导入单元将流量全部导入到现有稳定版部署。
CN201910730577.0A 2019-08-08 2019-08-08 一种基于容器和服务网格技术的自动化灰度发布方法 Active CN110427204B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910730577.0A CN110427204B (zh) 2019-08-08 2019-08-08 一种基于容器和服务网格技术的自动化灰度发布方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910730577.0A CN110427204B (zh) 2019-08-08 2019-08-08 一种基于容器和服务网格技术的自动化灰度发布方法

Publications (2)

Publication Number Publication Date
CN110427204A CN110427204A (zh) 2019-11-08
CN110427204B true CN110427204B (zh) 2023-09-19

Family

ID=68413302

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910730577.0A Active CN110427204B (zh) 2019-08-08 2019-08-08 一种基于容器和服务网格技术的自动化灰度发布方法

Country Status (1)

Country Link
CN (1) CN110427204B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111142920A (zh) * 2019-12-31 2020-05-12 浪潮云信息技术有限公司 一种基于容器技术的自动化蓝绿发布方法
CN111290768B (zh) * 2020-01-22 2023-10-20 北京百度网讯科技有限公司 一种容器化应用系统的更新方法、装置、设备和介质
CN111399855B (zh) * 2020-03-09 2023-10-20 山东省电子口岸有限公司 一种基于容器技术的自动化应用实例发布方法
CN111949311B (zh) * 2020-08-12 2023-08-25 中国工商银行股份有限公司 灰度发布方法及系统
CN112000343B (zh) * 2020-08-24 2024-02-20 浪潮云信息技术股份公司 使用Devops在Kubernetes中部署多版本服务的方法及系统
CN112199104B (zh) * 2020-10-10 2024-03-01 卫宁健康科技集团股份有限公司 一种软件升级方法、装置、电子设备和存储介质
CN114205280B (zh) * 2021-11-17 2023-03-31 广州云擎互动信息技术有限公司 基于容器云和服务网格的应用发布方法及流量路由方法
CN114594999B (zh) * 2022-01-28 2023-09-12 阿里巴巴(中国)有限公司 发布文件的方法、装置、存储介质及系统
CN116132284B (zh) * 2022-12-19 2023-09-08 江苏红网技术股份有限公司 一种服务接口在服务网格中实现灰度发布的方法及其系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108279921A (zh) * 2018-01-22 2018-07-13 广州欧赛斯信息科技有限公司 一种基于容器平台的自动灰度发布方法、系统及装置
CN109981789A (zh) * 2019-04-03 2019-07-05 山东浪潮云信息技术有限公司 一种基于代理模式的微服务引擎

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070118295A1 (en) * 2005-03-02 2007-05-24 Al-Murrani Samer Waleed Khedhe Methods and Systems for Designing Animal Food Compositions
CN109032755B (zh) * 2018-06-29 2020-12-01 优刻得科技股份有限公司 一种容器服务托管系统及提供容器服务的方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108279921A (zh) * 2018-01-22 2018-07-13 广州欧赛斯信息科技有限公司 一种基于容器平台的自动灰度发布方法、系统及装置
CN109981789A (zh) * 2019-04-03 2019-07-05 山东浪潮云信息技术有限公司 一种基于代理模式的微服务引擎

Also Published As

Publication number Publication date
CN110427204A (zh) 2019-11-08

Similar Documents

Publication Publication Date Title
CN110427204B (zh) 一种基于容器和服务网格技术的自动化灰度发布方法
US9075633B2 (en) Configuration of life cycle management for configuration files for an application
CN111666189B (zh) 一种声明式可视化配置Prometheus监控告警的方法和系统
US10726042B2 (en) Replication control using eventually consistent meta-data
CN108664239A (zh) 一种基于微服务的跨技术栈web前端开发系统及方法
CN111198814A (zh) 一种持续集成持续交付的验收系统
CN111399855B (zh) 一种基于容器技术的自动化应用实例发布方法
CN101442591B (zh) 一种性能业务模型差异自检与升级的方法及系统
CN114202027B (zh) 执行配置信息的生成方法、模型训练方法和装置
CN102025548B (zh) 一种用户自定义的性能指标多版本平滑升级的方法及装置
CN103077022A (zh) 一种作业流程可视化的作业配置方法和装置
CN109542438A (zh) 一种基于可视化的图表开发方法
CN102857949A (zh) 一种规划数据一致性保证的方法和装置
CN100547971C (zh) 一种控制网络通讯软件功能的方法
CN112597123B (zh) 数据多版本动态切换方法及装置
CN111897643A (zh) 线程池配置系统、方法、装置和存储介质
CN109117199A (zh) 分布式程序的配置管理方法和装置
CN114331135B (zh) 一种工艺流程管理方法、装置、设备及存储介质
CN104881455B (zh) 一种基于mysql的结构差异处理方法及系统
CN106462421A (zh) 电信设备以及用于更新电信设备中的软件的方法
CN112433783A (zh) 一种配置方法及相关设备
CN106648648B (zh) 基于Zookeeper的配置管理方法及系统
CN111142920A (zh) 一种基于容器技术的自动化蓝绿发布方法
CN109710293B (zh) 文件的处理方法、装置、电子设备及存储介质
CN112363696B (zh) 增强现实快速开发系统及方法、电子设备及可读存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information

Address after: 250100 No. 1036 Tidal Road, Jinan High-tech Zone, Shandong Province, S01 Building, Tidal Science Park

Applicant after: Inspur cloud Information Technology Co.,Ltd.

Address before: 250100 No. 1036 Tidal Road, Jinan High-tech Zone, Shandong Province, S01 Building, Tidal Science Park

Applicant before: Tidal Cloud Information Technology Co.,Ltd.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant