一种基于容器平台的自动灰度发布方法、系统及装置与流程

文档序号:14940723发布日期:2018-07-13 20:40阅读:438来源:国知局

本发明涉及计算机软件技术领域,尤其涉及一种基于容器平台的自动灰度发布方法、系统及装置。



背景技术:

互联网产品有一个特点,就是不停的升级,升级,再升级,但是系统升级总是伴随着风险,新旧版本兼容的风险,用户使用习惯突然改变而造成用户流失的风险,系统down机的风险。为了避免这些风险,很多产品都采用了灰度发布的策略,其主要思想就是把影响集中到一个点,然后再发散到一个面,出现意外情况后很容易就回退。

传统的灰度发布主要有两大方向:

1、在代码中做。一套线上环境,代码中做开关,对于不同的用户走不同的逻辑。

2、在接入层做。多套(隔离的)线上环境,接入层针对不同用户转发到不同的环境中

一般上传统灰度发布的处理方法采用第二种方向,是将应用的稳定代码和灰度代码分别发布到不同服务器上,并加载该应用的灰度配置信息;接收请求,并从请求的参数信息中提取用于灰度判断的灰度数据;根据所述灰度配置信息对所述灰度数据进行判断,确定该请求是否参与灰度发布;若参与,则将该请求分配到灰度代码所在的服务器处理;若不参与,则将该请求分配到稳定代码所在的服务器处理。

然而,若在代码中做,则需要在灰度发布逻辑中侵入代码,工作量较大;若在接入层中做,则配置复杂,需维护多套线上环境,运维成本高。



技术实现要素:

为了解决上述技术问题,本发明的目的是提供一种能减少工作量,且基于容器平台的自动灰度发布方法、系统及装置。

本发明所采取的技术方案是:

一种基于容器平台的自动灰度发布方法,包括以下步骤:

对新版本软件进行预部署配置;

当监控到新版本镜像时,生成新版本软件;

根据预部署配置,将新版本软件通过k8s系统的pod的形式分布式部署在集群中。

作为所述的一种基于容器平台的自动灰度发布方法的进一步改进,所述的对新版本软件进行预部署配置,其具体包括:

配置流水线,并使其处于工作状态;

对新版本的流量规则进行预设置。

作为所述的一种基于容器平台的自动灰度发布方法的进一步改进,所述的根据预部署配置,将新版本软件通过k8s系统的pod的形式分布式部署在集群中,这一步骤具体包括:

在同一个服务网格内各个代理构成的网络中截获用户请求的业务流量,并通过在每个pod中自动注入服务网格的代理容器接替该业务流量;

通过不同版本预设置的流量规则,将新版本软件通过k8s系统将流量规则分配到不同的pod上。

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

一种基于容器平台的自动灰度发布系统,包括:

配置单元,用于对新版本软件进行预部署配置;

监控单元,用于当监控到新版本镜像时,生成新版本软件;

发布单元,用于根据预部署配置,将新版本软件通过k8s系统的pod的形式分布式部署在集群中。

作为所述的一种基于容器平台的自动灰度发布系统的进一步改进,所述的配置单元具体包括:

流水线配置单元,用于配置流水线,并使其处于工作状态;

流量规则设置单元,用于对新版本的流量规则进行预设置。

作为所述的一种基于容器平台的自动灰度发布系统的进一步改进,所述的发布单元具体包括:

注入单元,用于在同一个服务网格内各个代理构成的网络中截获用户请求的业务流量,并通过在每个pod中自动注入服务网格的代理容器接替该业务流量;

分配单元,用于通过不同版本预设置的流量规则,将新版本软件通过k8s系统将流量规则分配到不同的pod上。

本发明所采用的再一个技术方案是:

一种基于容器平台的自动灰度发布装置,包括:

存储器,用于存放程序;

处理器,用于执行所述程序,所述程序使得所述处理器执行所述的基于容器平台的自动灰度发布方法。

本发明的有益效果是:

本发明一种基于容器平台的自动灰度发布方法、系统及装置通过将新版本软件自动部署新版本到集群上,无需嵌入服务代码,也无需维护多重环境,并能在生产环境或测试环境上完成灰度发布,只需简单配置即可与持续交付流程相结合,能有效减少工作量,并且大大提高了开发效率。

附图说明

图1是本发明一种基于容器平台的自动灰度发布方法的步骤流程图;

图2是本发明一种基于容器平台的自动灰度发布系统的模块方框图。

具体实施方式

下面结合附图对本发明的具体实施方式作进一步说明:

参考图1,本发明一种基于容器平台的自动灰度发布方法,包括以下步骤:

对新版本软件进行预部署配置;

当监控到新版本镜像时,生成新版本软件;

根据预部署配置,将新版本软件通过k8s系统的pod的形式分布式部署在集群中。

进一步作为优选的实施方式,所述的对新版本软件进行预部署配置,其具体包括:

配置流水线,并使其处于工作状态;

对新版本的流量规则进行预设置。

进一步作为优选的实施方式,所述的根据预部署配置,将新版本软件通过k8s系统的pod的形式分布式部署在集群中,这一步骤具体包括:

在同一个服务网格内各个代理构成的网络中截获用户请求的业务流量,并通过在每个pod中自动注入服务网格的代理容器接替该业务流量;

通过不同版本预设置的流量规则,将新版本软件通过k8s系统将流量规则分配到不同的pod上。

本实施例中,需要将servicea中的新版本软件发布到serviceb中,第一步中serviceb只有一个版本,第二步则通过发布serviceb的新版本软件在pod4上,与前一版本共存,通过配置服务网格的代理将少量流量分发到canary版本上。

其中pod表示k8s的最小部署单元,承载着服务的容器以及服务网格的代理容器。service表示k8s的服务抽象,用户请求的流量统一发给service对外公布的服务地址和端口。

参考图2,本发明一种基于容器平台的自动灰度发布系统,包括:

配置单元,用于对新版本软件进行预部署配置;

监控单元,用于当监控到新版本镜像时,生成新版本软件;

发布单元,用于根据预部署配置,将新版本软件通过k8s系统的pod的形式分布式部署在集群中。

进一步作为优选的实施方式,所述的配置单元具体包括:

流水线配置单元,用于配置流水线,并使其处于工作状态;

流量规则设置单元,用于对新版本的流量规则进行预设置。

进一步作为优选的实施方式,所述的发布单元具体包括:

注入单元,用于在同一个服务网格内各个代理构成的网络中截获用户请求的业务流量,并通过在每个pod中自动注入服务网格的代理容器接替该业务流量;

分配单元,用于通过不同版本预设置的流量规则,将新版本软件通过k8s系统将流量规则分配到不同的pod上。

本发明一种基于容器平台的自动灰度发布装置,包括:

存储器,用于存放程序;

处理器,用于执行所述程序,所述程序使得所述处理器执行所述的基于容器平台的自动灰度发布方法。

从上述内容可知,本发明通过将新版本软件自动部署新版本到集群上,无需嵌入服务代码,也无需维护多重环境,并能在生产环境或测试环境上完成灰度发布,只需简单配置即可与持续交付流程相结合,能有效减少工作量,并且大大提高了开发效率。

以上是对本发明的较佳实施进行了具体说明,但本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做作出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。

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