一种云环境下快速克隆软件环境的平台及方法与流程

文档序号:22845043发布日期:2020-11-06 16:49阅读:273来源:国知局
一种云环境下快速克隆软件环境的平台及方法与流程

本发明涉及计算机技术领域,特别是一种云环境下快速克隆软件环境的平台及方法。



背景技术:

kuberntes,简称k8s,是用8代替8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,kuberntes的目标是让部署容器化的应用简单并且高效(powerful),kuberntes提供了应用部署,规划,更新,维护的一种机制。kuberntes在某种程度上让系统环境与应用一一对应,并且达到在测试、开发、生产环境从基础系统和应用高度一致。kuberntes使容器最大优势是可以复用,通过不断优化容器最终形成一个镜像可以无限克隆到任意一个环境。

互联网发展迭代快速,为满足复杂的应用架构场景微服务的架构越来越普及,即将应用服务实现高内聚低耦合,拆分越来越细,实现自由组合及服务编排,从而构建业务中台、数据中台,但同时,复杂的架构设计也带来了运维和软件发布层面的成本和复杂度,使用传统的服务器、虚拟主机、云主机已经无法支撑频繁的微服务发布,一般的企业级应用所需要的服务从几十个到上百个不等,使用传统方式从代码到发布运行的过程将是漫长、复杂、配置易错及低效率的,随着数量级应用服务的增长,运维成本成正比例增长,交付周期漫长而且不现实,这将会复杂架构的运维瓶颈,本发明本着将数量级的应用从已有的自动化部署平台快速克隆过程,从而,去除搭建重复新环境运维投入。



技术实现要素:

本发明的目的在于提供一种云环境下快速克隆软件环境的平台及方法,将软件项目从已有软件部署基础上重新部署一套软件环境,整个进行过程去掉重复操作,去除搭建重复新环境的运维投入,降低运维人员的投入成本。

为实现上述技术目的,达到上述技术效果,本发明公开了一种云环境下快速克隆软件环境的平台,基于kuberntes云环境下,包括了服务端server、控制端patrol、流程执行端process和插件端plugin,服务端server负责配置软件项目对应的gitlab地址、账号信息、上传项目初始化数据库脚本,构建软件环境,并向控制端patrol下达快速克隆请求指令,控制端patrol负责实现用户使用交互,在收到项目快速克隆请求指令后通过复制初始化数据库中已有的kuberntes部署好的namespace的配置信息和调用插件端plugin,快速克隆出一个新的namespace;并通过调用流程执行端process执行项目的软件环境发布。

其中,服务端server部署有gitlab、docker、maven、nodejs、registry、kuberntes、matrics-server、nfs及数据mysql服务,kuberntes中在同一个namespace下拥有唯一应用别名,应用别名作为环境变量,通过配置的项目gitlab地址、初始化数据库,项目之间使用docker的环境变量,用应用别名来取代原传统方式的固定ip配置,使得应用之间的相互访问无状态化。即自动化平台每启动一个应用都将ip绑定到固定的应用别名,别名作为环境变量。应用之间的数据交换地址都采用固定的应用别名。

其中,插件端plugin包含git、maven、docker、kuberntes、nfs、matrics-server服务api调用;插件端plugin使用gitapi通过配置的gitlab地址抓取软件项目的代码、编译、打包、制作镜像、上传镜像至镜像仓库及发布服务到kuberntes和docker的集群中。

其中,流程执行端process负责将从软件项目的代码抓取到发布应用的多种流程编排并触发执行。

优选的,gitlab用于保存开发人员的源代码的日常管理、版本迭代、分支管理及代码存储。

优选的,maven管理java语言的依赖包关系,分析源代码的第三方包依赖情况分析及本地仓库、第三方仓库和中央仓库的包存储和下载。

优选的,matrics-server基于docker实例运行,采集集群服务的cpu、内存和硬盘数据,所述mysql服务存储源代码地址、应用配置信息、镜像数据信息、资源分配信息。

一种云环境下快速克隆软件环境的方法,具体方法步骤如下:

s1:搭建服务端server,配置gitlab、docker、maven、nodejs、registry、kuberntes、matrics-server、nfs及数据mysql服务;

s2:搭建部署控制端patrol、流程执行端process、插件端plugin;

s3:服务端server在已有的kuberntes部署好的namespace执行快速克隆操作,并向控制端patrol下达快速克隆请求指令;

s4:控制端patrol收到快速克隆请求指令后,复制初始化数据库中已有的kuberntes部署好的namespace的配置信息,快速克隆出一个新的namespace,新的namespace含有初始化软件环境的第三方软件,控制端patrol调用流程执行端process执行项目的软件环境发布;

s5:控制端patrol通过调用插件端plugin使用初始化软件环境的第三方软件,发布服务到kuberntes和docker的集群中;并于控制端patrol可视化展现。

其中,s5中插件端plugin将软件项目的代码抓取到本地,插件端plugin的maven对后端语言的代码进行编译、打包,插件端plugin对前端类代码使用nodejs自带的npm进行编译,插件端plugin的docker配置引用初始化数据库中已有的namespace的镜像,不需要重新制作镜像,并上传到镜像仓库中,插件端plugin利用用户已有配置数据及kuberntesapi生成deployment、svc实现软件项目资源的自动化部署。

一种可读存储介质,可读存储介质上存储上述快速克隆软件环境的平台,该快速克隆软件环境的平台用于实现一种云环境下快速克隆软件环境的方法的步骤。

本发明具有以下有益效果:

1.本发明将软件项目从已有软件部署基础上重新部署一套软件环境,整个进行过程去掉重复操作,去除搭建重复新环境的运维投入,降低运维人员的投入成本。

2.本发明通过软硬件资源有效利用,从项目开发、测试、生产阶段缩短交付周期,促进软件项目每个环境的效率从而提高项目研发成本,可以发布数量级的服务应用,并能正常运行服务,从而支撑数量级的应用服务发布和运维以解决背景技术提到的运维瓶颈。

3.本发明通过横向伸缩,在某些场景需求如:访问爆发、应用缩减、负载高峰期等快速响应,大大降低了软件生命周期的成本投入。

附图说明

图1为本发明提出的一种云环境快速克隆软件环境的方法的操作流程示意图;

图2为本发明提出的一种云环境快速克隆软件环境的方法中自动化部署资源的执行流程示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。

如图1-2所示,本发明公开了一种云环境下快速克隆软件环境的平台及方法,将软件项目从已有软件部署基础上重新部署一套软件环境,整个进行过程去掉重复操作,去除搭建重复新环境的运维投入,降低运维人员的投入成本。

为实现上述技术目的,达到上述技术效果,本发明公开了一种云环境下快速克隆软件环境的平台,基于kuberntes云环境下,从一个kuberntes的namespace克隆出一个新的namespace,无需修改软件配置信息,即可完成一个一模一样,物理隔离的新部署。包括了服务端server、控制端patrol、流程执行端process和插件端plugin,服务端server负责配置软件项目对应的gitlab地址、账号信息、上传项目初始化数据库脚本,构建软件环境,并向控制端patrol下达快速克隆请求指令,控制端patrol负责实现用户使用交互,在收到项目快速克隆请求指令后通过复制初始化数据库中已有的kuberntes部署好的namespace的配置信息和调用插件端plugin,快速克隆出一个新的namespace;含软件应用的数据库、activemq、reids、mongodb等第三方软件,并通过调用流程执行端process执行项目的软件环境发布。

服务端server部署有gitlab、docker、maven、nodejs、registry、kuberntes、matrics-server、nfs及数据mysql服务,通过配置的项目gitlab地址、初始化数据库,项目之间使用docker的环境变量,用应用别名来取代原传统方式的固定ip配置,使得应用之间的相互访问无状态化。即自动化平台每启动一个应用都将ip绑定到固定的应用别名,别名作为环境变量。应用之间的数据交换地址都采用固定的应用别名。例如,用户中心应用${u-center}、业务应用${business},那么业务应用要连接用户中心权限接口一直固定访问${u-center.ip},由kuberntes的环境变量去取值,自动化平台在新建一套应用部署都会自动对用户中心应用${u-center}、业务应用${business}赋环境变量值,及实际应用的ip地址。如此一来,应用之间、程序之内、配置中心都无需关心每个应用的具体ip地址。开发环境、测试环境、生产环境应用镜像包保持文件hash值不用任何修改。从而到达几乎不用修改任何配置,来支持快速搭建一套环境和快速克隆。

通过预先生成kuberntes集群的master节点的ip下的端口资源,用于分配至kuberntes的新克隆namespace下所有pod实例(包括软件服务和第三方软件)的映射出来的svc服务的ip和端口;生成kuberntes的deployment的yaml文件,并配置引用已有的原namespace的镜像,不需要重新制作镜像,并调用kuberntes执行;优先启动第三方软件,如数据库的pod实例,并根据复制的配置信息,将数据库初始化脚本初始化至克隆的namespace下的数据库实例,实现自动初始化动作。

插件端plugin包含git、maven、docker、kuberntes、nfs、matrics-server服务api调用;插件端plugin使用gitapi通过配置的gitlab地址抓取软件项目的代码、编译、打包、制作镜像、上传镜像至镜像仓库及发布服务到kuberntes和docker的集群中。具体为:java语言软件通过apachemaven的mvnpackage命令实现软件自动打包;打包后将软件包通过自动生成的dockerfile制作成带版本号docker镜像,并push至registry镜像仓库;将已推送的镜像信息自动生成到kuberntes的depolyment的yaml文件信息中,并将整个namespace下的所有kuberntes实例的信息已环境变量方式传递到deployment的yaml文件中,用于软件获取关联的配置信息的实际ip地址和端口,从而免去用户的ip信息配置,部署剩余的软件应用deployment和svc。

流程执行端process负责将从软件项目的代码抓取到发布应用的多种流程编排并触发执行。

gitlab用于保存开发人员的源代码的日常管理、版本迭代、分支管理及代码存储。

maven管理java语言的依赖包关系,分析源代码的第三方包依赖情况分析及本地仓库、第三方仓库和中央仓库的包存储和下载。

matrics-server基于docker实例运行,采集集群服务的cpu、内存和硬盘数据,mysql服务存储源代码地址、应用配置信息、镜像数据信息、资源分配信息;通过metrics-server监控namespace下的所用pod应用实例的cpu、内存和硬盘负载情况。

一种云环境下快速克隆软件环境的方法,具体方法步骤如下:

s1:搭建服务端server,配置gitlab、docker、maven、nodejs、registry、kuberntes、matrics-server、nfs及数据mysql服务;

s2:搭建部署控制端patrol、流程执行端process、插件端plugin;

s3:服务端server在已有的kuberntes部署好的namespace执行快速克隆操作,并向控制端patrol下达快速克隆请求指令;

s4:控制端patrol收到快速克隆请求指令后,复制初始化数据库中已有的kuberntes部署好的namespace的配置信息,快速克隆出一个新的namespace,新的namespace含有初始化软件环境的第三方软件,控制端patrol调用流程执行端process执行项目的软件环境发布;

s5:控制端patrol通过调用插件端plugin使用初始化软件环境的第三方软件,发布服务到kuberntes和docker的集群中;并于控制端patrol可视化展现。

s5中插件端plugin将软件项目的代码抓取到本地,插件端plugin的maven对后端语言的代码进行编译、打包,插件端plugin对前端类代码使用nodejs自带的npm进行编译,插件端plugin的docker配置引用初始化数据库中已有的namespace的镜像,不需要重新制作镜像,并上传到镜像仓库中,插件端plugin利用用户已有配置数据及kuberntesapi生成deployment、svc实现软件项目资源的自动化部署。

一种可读存储介质,可读存储介质上存储上述快速克隆软件环境的平台,该快速克隆软件环境的平台用于实现一种云环境下快速克隆软件环境的方法的步骤。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。

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