一种基于容器技术的自动化蓝绿发布方法与流程

文档序号:20699041发布日期:2020-05-12 15:24阅读:268来源:国知局
一种基于容器技术的自动化蓝绿发布方法与流程

本发明涉及云计算技术领域,具体地说是一种基于容器技术的自动化蓝绿发布方法。



背景技术:

目前,随着云计算技术趋于成熟,特别是docker容器技术在各个行业中被广泛应用,在诸多云计算厂商和社区的推动下,各个行业内的业务系统已经逐渐迁入到云平台中部署、运行。在业务上云之后,为了保证在版本发布过程中能够平滑过渡,一般会采用蓝绿发布的策略。蓝绿发布是最常见的一种零宕机的部署方式,不停老版本,部署新版本进行测试,确认ok,将流量切到新版本。始终有两个版本同时在线,有问题可以快速切换,是一种以可预测的方式发布应用的技术,目的是通过冗余来减少发布过程中服务停止的时间。目前,行业内蓝绿发布方式基本上都是由运维工程师团队通过人工手动来操作完成,但是人工手动操作过程中容易出现差错,极有可能会出现参数配置错误,从而导致生产故障。因此,就需要一种自动化的蓝绿发布方式,来降低人工操作的风险,保障升级过程中业务平滑过渡。



技术实现要素:

本发明的目的是针对以上不足,提供一种降低运行风险的基于容器技术的自动化蓝绿发布方法。

本发明所采用技术方案是:

一种基于容器技术的自动化蓝绿发布方法,包括如下步骤:

s1、搭建发布系统,选择“蓝绿发布”策略,默认创建蓝版本部署和绿版本部署,将蓝版本部署的副本数设置为0,并将流量全部导入到绿版本部署中;

s2、当存在镜像更新时,通过镜像更新事件触发自动化蓝绿发布,将新版本的镜像更新蓝版本部署中,并将蓝版本部署的副本数伸缩为1;

s3、蓝版本部署测试稳定后,发布蓝版本部署,并将蓝版本部署与绿版本部署进行交换,将变更后的蓝版本部署的副本数伸缩为0,并将全部流量导入至变更后的绿版本部署中;

s4、当存在新的镜像更新时,重复执行步骤s2-s3。

作为进一步的优化,本发明在步骤s1中,默认创建蓝版本部署和绿版本工作负载,并在每个工作负载上打上相应注解,用以标识蓝版本部署和绿版本部署,并创建相应的virtualservice和destinationrule资源。

作为进一步的优化,本发明在步骤s1中,将蓝版本部署的副本数为0,绿版本部署的副本数为由用户预先设置的等于或者大于1的副本数,且在步骤s3中,蓝版本部署与绿版本部署交换后,变更后的绿版本部署的副本数伸缩至用户预先设置的原绿版本部署的副本数。

作为进一步的优化,本发明在步骤s1中,在创建蓝版本部署与绿版本部署相应的destinationrule资源时,destinationrule的subset依据蓝版本部署和绿版本部署注解建立路由规则,在步骤s3中,蓝版本部署与绿版本部署交换后,自动修改destinationrule的subset。

作为进一步的优化,本发明在步骤s3中,在蓝版本部署测试稳定后,进行蓝版本部署发布,将蓝版本部署和绿版本部署进行交换,自动修改蓝版本部署和绿版本部署的注解,原蓝版本部署变更为新绿版本部署,原绿版本部署变更为新蓝版本部署,将变更后的蓝版本的副本数伸缩为0并进行下线,自动更新virtualservice的流量规则,将流量全部导入到变更后的绿版本部署中。

作为进一步的优化,本发明在步骤s3中,在设定时间段内,当变更后的绿版本部署服务出现故障时,通过回退机制蓝版本部署与绿版本部署回退至交换之前的状态。

作为进一步的优化,本发明在步骤s3中,蓝版本部署与绿版本部署交换后,在设定时间段内,保留变更后的蓝版本部署,当变更后的绿版本部署出现故障时,人工将全部流量导入至变更后的蓝版本部署中。

本发明还提供一种基于容器技术的自动化蓝绿发布系统,包括部署网络、流量导入网络和自动触发网络,其中:

部署网络在搭建部分系统时,选择“蓝绿发布”策略,创建蓝版本部署和绿版本部署,并对蓝版本部署和绿版本部署打上注解,virtualservice和destinationrule资源,且destinationrule的subset依据蓝版本部署和绿版本部署注解建立路由规则,将蓝版本部署的副本数设置为0,绿版本部署的副本数为预先设置的等于或大于1的副本数,流量导入网络将流量全部导入到绿版本部署中;

当存在镜像更新时,自动触发网络通过镜像更新时间触发自动化蓝绿发布,将新版的镜像更新至蓝版本部署中,并将蓝版本部署的副本数伸缩为1;

当蓝版本部署测试稳定后,部署网络发布蓝版本部署,并将蓝本版部署与绿版本部署进行交换,自动修改蓝版本部署和绿版本部署的注解,将变更后的蓝版本部署的副本数伸缩为0,流量导入网络将流量全部导入到更新后的绿版本部署中。

本发明具有以下优点:

1、本发明的蓝绿发布过程中不需要人工手动修改相关蓝绿策略配置,防止运维人员手动操作过程中出现错误,降低运维人员手动操作的风险;

2、本发明当存在新版本的镜像更新时,能够自动触发镜像更新事件,会自动将新版本的镜像更新至流量为0的蓝版本部署中,降低人工操作的风险;

3、本发明在蓝绿版本切换过程中,用户无感知,保障升级过程中业务平滑过渡。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

下面结合附图对本发明进一步说明:

图1为本发明的流程示意图。

具体实施方式

下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定,在不冲突的情况下,本发明实施例以及实施例中的技术特征可以相互结合。

需要理解的是,在本发明实施例的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。在本发明实施例中的“多个”,是指两个或两个以上。

本发明实施例中的属于“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,单独存在b,同时存在a和b这三种情况。另外,本文中字符“/”一般表示前后关联对象是一种“或”关系。

实施例一

本实施例提供一种基于容器技术的自动化蓝绿发布系统,包括部署网络、流量导入网络和自动触发网络,其中:

部署网络在搭建发布系统时,选择“蓝绿发布”策略,创建蓝版本部署和绿版本部署,并对蓝版本部署和绿版本部署打上注解,virtualservice和destinationrule资源,且destinationrule的subset依据蓝版本部署和绿版本部署注解建立路由规则,创建对应的并将蓝版本部署的副本数设置为0,绿版本部署的副本数为预先设置的等于或大于1的副本数,流量导入网络将流量全部导入到绿版本部署中;

当存在镜像更新时,自动触发网络通过镜像更新时间触发自动化蓝绿发布,将新版的镜像更新至蓝版本部署中,并将蓝版本部署的副本数伸缩为1;

当蓝版本部署测试稳定后,部署网络发布蓝版本部署,并将蓝本版部署与绿版本部署进行交换,自动修改蓝版本部署和绿版本部署的注解,将变更后的蓝版本部署的副本数伸缩为0,流量导入网络将流量去哪不导入到更新后的绿版本部署中。

基于上述所述自动化蓝绿发布系统,本实施例还提供一种基于容器技术的自动化蓝绿发布方法,如图1所示,包括如下步骤:

s1、搭建发布系统,选择“蓝绿发布”策略,默认创建蓝版本部署和绿版本部署,并在每个工作部署上打上相应注解,用以标识蓝版本部署和绿版本部署,并创建相应的virtualservice和destinationrule资源,且destinationrule的subset依据蓝版本部署和绿版本部署注解建立路由规则,将蓝版本部署的副本数设置为0,绿版本部署的副本数为由用户预先设置的等于或者大于1的副本数,并将流量全部导入到绿版本部署中;

s2、当存在镜像更新时,通过镜像更新事件触发自动化蓝绿发布,将新版本的镜像更新蓝版本部署中,并将蓝版本部署的副本数伸缩为1;

s3、在蓝版本部署测试稳定后,进行蓝版本发布,将蓝版本部署和绿版本部署进行交换,自动修改蓝版本部署和绿版本部署的注解,自动修改destinationrule的subset,原蓝版本部署变更为新的绿版本部署,原绿版本部署变更为新的蓝版本部署,将新蓝版本的副本数伸缩为0并进行下线,变更后的绿版本部署的副本数伸缩至用户预先设置的原绿版本部署的副本数,自动更新virtualservice的流量规则,将流量全部导入到新绿版本部署中。

s4、当存在新的镜像更新时,重复执行步骤s2-s3。

下面以浪潮某一业务系统需要进行自动化蓝绿发布为例,利用本实施例的方法具体过程如下:

步骤一

发布初始版本应用:在发布初始版本应用实例时,选择“蓝绿发布”策略,默认创建蓝版本工作负载和绿版本工作负载,并在蓝版本工作负载和绿版本工作负载上均打上注解deployment.inspur.com/role,用以标识蓝版本部署和绿版本部署,蓝版本部署注解为deployment.inspur.com/role:blue,绿版本部署注解为deployment.inspur.com/role:green,并对蓝版本部署和绿版本部署创建对应的virtualservice和destinationrule资源,destinationrule的subset使用deployment作为label标签,工作负载的name作为标签值,并将蓝版本部署的副本数设置为0,绿版本部署的副本数由用户预先设定为等于或大于1的副本数,最后使用流量规则将流量默认100%导入到绿版本部署中。destinationrule的subset规则如下所示:

步骤二

镜像更新事件触发自动化蓝绿发布:当系统存在镜像更新时,产生镜像推送事件,通过镜像更新事件触发自动化蓝绿发布,使用新版本的镜像更新至蓝版本部署中,并将蓝版本部署的副本数伸缩为1。

步骤三

在蓝版本部署测试稳定后,进行蓝版本部署发布,将蓝版本部署和绿版本部署进行交换,原来的绿版本部署变更为蓝版本部署,自动修改蓝版本部署和绿版本部署的注解,自动修改destinationrule的subset,蓝版本部署变更为绿版部署,同时将变更后的蓝版本部署副本数伸缩为0,并且修改virtualservice流量规则,将流量全部导入到切换到绿版本部署中,流量切换过程中用户无感知。

步骤四

当有新的镜像更新,触发自动化蓝绿发布,重复执行(二)、(三)步骤。

实施例二

本实施例提供一种基于容器技术的自动化蓝绿发布系统,包括部署网络、流量导入网络和自动触发网络,其中:

部署网络在搭建部分系统时,选择“蓝绿发布”策略,创建蓝版本部署和绿版本部署,并对蓝版本部署和绿版本部署打上注解,virtualservice和destinationrule资源,且destinationrule的subset依据蓝版本部署和绿版本部署注解建立路由规则,将蓝版本部署的副本数设置为0,绿版本部署的副本数为预先设置的等于或大于1的副本数,流量导入网络将流量全部导入到绿版本部署中;

当存在镜像更新时,自动触发网络通过镜像更新时间触发自动化蓝绿发布,将新版的镜像更新至蓝版本部署中,并将蓝版本部署的副本数伸缩为1;

当蓝版本部署测试稳定后,部署网络发布蓝版本部署,并将蓝本版部署与绿版本部署进行交换,自动修改蓝版本部署和绿版本部署的注解,将变更后的蓝版本部署的副本数伸缩为0,流量导入网络将流量全部导入到更新后的绿版本部署中。

本实施例提供一种基于容器技术的自动化蓝绿发布方法,包括如下步骤:

s1、搭建发布系统,选择“蓝绿发布”策略,默认创建蓝版本部署和绿版本部署,并在每个工作负载上打上相应注解,用以标识蓝版本部署和绿版本部署,并创建相应的virtualservice和destinationrule资源,且destinationrule的subset依据蓝版本部署和绿版本部署注解建立路由规则,将蓝版本部署的副本数设置为0,绿版本部署的副本数为由用户预先设置的等于或者大于1的副本数,并将流量全部导入到绿版本部署中;

s2、当存在镜像更新时,通过镜像更新事件触发自动化蓝绿发布,将新版本的镜像更新蓝版本部署中,并将蓝版本部署的副本数伸缩为1;

s3、在蓝版本部署测试稳定后,进行蓝版本发布,将蓝版本部署和绿版本部署进行交换,自动修改蓝版本部署和绿版本部署的注解,自动修改destinationrule的subset,原蓝版本部署变更为新绿版本部署,原绿版本部署变更为新蓝版本部署,蓝版本部署与绿版本部署交换后,在设定时间段内,保留变更后的蓝版本部署,当变更后的绿版本部署出现故障时,人工将全部流量导入至变更后的蓝版本部署中,当在设定时间内,变更后的绿版本部署未发生故障时,将变更后的蓝版本部署的副本数伸缩为0并进行下线,释放出资源,变更后的绿版本部署的副本数伸缩至用户预先设置的原来的绿版本部署的副本数,自动更新virtualservice的流量规则,将流量全部导入到变更后的绿版本部署中。

s4、当存在新的镜像更新时,重复执行步骤s2-s3。

以上所述实施例仅是为充分说明本发明而所举的较佳的实施例,本发明的保护范围不限于此。本技术领域的技术人员在本发明基础上所作的等同替代或变换,均在本发明的保护范围之内。本发明的保护范围以权利要求书为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1