CN111090437B - 应用部署方法、装置及计算机可读存储介质 - Google Patents
应用部署方法、装置及计算机可读存储介质 Download PDFInfo
- Publication number
- CN111090437B CN111090437B CN201911139848.1A CN201911139848A CN111090437B CN 111090437 B CN111090437 B CN 111090437B CN 201911139848 A CN201911139848 A CN 201911139848A CN 111090437 B CN111090437 B CN 111090437B
- Authority
- CN
- China
- Prior art keywords
- application
- deployment
- helm
- deployed
- applications
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 41
- 241000380131 Ammophila arenaria Species 0.000 claims abstract description 138
- 238000012856 packing Methods 0.000 claims abstract description 23
- 238000001514 detection method Methods 0.000 claims description 28
- 230000004048 modification Effects 0.000 claims description 8
- 238000012986 modification Methods 0.000 claims description 8
- 238000004806 packaging method and process Methods 0.000 description 8
- 238000012545 processing Methods 0.000 description 7
- 238000011161 development Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000007547 defect Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
Abstract
本发明公开了一种应用部署方法,该方法包括:获取由多个待部署应用的可执行程序打包得到的多个Docker镜像;将多个Docker镜像保存至Docker镜像仓库;获取用户在客户端选取的与多个待部署应用对应的多个Helm应用模板;将多个Helm应用模板保存至应用模板仓库;获取对多个Helm应用模板的集合部署任务信息,根据集合部署任务信息创建集合部署任务;接收执行集合部署任务的部署指令,基于部署指令调用Helm CLI向Kubernetes集群发送部署请求,以使Kubernetes集群中的kube‑apiserver调用Helm的Tiller,所述Tiller基于应用模板仓库中的Helm应用模板和Docker镜像对多个待部署应用进行部署。本发明还提出一种应该部署装置以及一种计算机可读存储介质。本发明可以提高对多个应用进行部署的效率。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种应用部署方法、装置及计算机可读存储介质。
背景技术
随着业务容器化以及系统架构向微服务架构转变,将巨大的单体应用分解为多个服务的方式已成为一种开发趋势,这种方式分解了单体应用的复杂性,使每个微服务都可以独立部署和扩展,有利于敏捷开发和快速迭代。然而,在将巨大的单体应用分解为多个服务时,由于应用被拆分成多个服务(或组件),导致服务数量大幅增加,而每个服务通常有自己的资源文件,因此在部署时需要管理、编辑、安装每个服务所需的各种文件(镜像、依赖等),这使得目前在做较多数量的服务部署时效率不高。
发明内容
本发明提供一种应用部署方法、装置及计算机可读存储介质,其主要目的在于提高对多个应用进行部署的效率。
为实现上述目的,本发明还提供一种应用部署方法,该方法包括:
获取由多个待部署应用的可执行程序打包得到的多个Docker镜像;
将所述多个Docker镜像保存至Docker镜像仓库;
获取用户在客户端选取的与所述多个待部署应用对应的多个Helm应用模板,每个Helm应用模板包含对应的Docker镜像的信息;
将所述多个Helm应用模板保存至应用模板仓库;
获取对所述多个Helm应用模板的集合部署任务信息,根据所述集合部署任务信息创建集合部署任务;
接收执行所述集合部署任务的部署指令,基于所述部署指令调用HelmCLI向Kubernetes集群发送部署请求,以使所述Kubernetes集群中的kube-apiserver调用Helm的Tiller,所述Tiller基于所述应用模板仓库中的所述Helm应用模板和所述Docker镜像对所述多个待部署应用进行部署。
可选地,所述获取用户在客户端选取的与所述多个待部署应用对应的多个Helm应用模板包括:
获取用户从应用模板仓库包含的预设应用模板中选取的多个应用模板为所述待部署应用对应的多个Helm应用模板;或者
获取用户从应用模板仓库包含的预设应用模板中选取的至少一个应用模板为待修改应用模板,获取用户基于所述待修改应用模板进行修改之后得到的多个应用模板为所述待部署应用对应的Helm应用模板。
可选地,所述获取由多个待部署应用的可执行程序打包得到的多个Docker镜像包括:
若检测到向代码仓库提交所述多个待部署应用的源码的提交指令,对所述多个待部署应用的源码进行质量检测;
若所述多个待部署应用的源码通过所述质量检测,对所述多个待部署应用的源码进行编译并将编译后得到的多个可执行程序打包成多个Docker镜像。
可选地,所述获取对所述多个Helm应用模板的集合部署任务信息包括:
获取集合部署任务文件,所述集合部署任务文件为XML格式的文件;
解析所述集合部署任务文件,得到对所述多个Helm应用模板的集合部署任务信息。
可选地,所述方法还包括:
接收对所述集合部署任务的显示指令,显示所述集合部署任务的部署进度。
此外,为实现上述目的,本发明还提供一种应用部署装置,该装置包括存储器和处理器,所述存储器中存储有可在所述处理器上运行的应用部署程序,所述应用部署程序被所述处理器执行时实现如下步骤:
获取由多个待部署应用的可执行程序打包得到的多个Docker镜像;
将所述多个Docker镜像保存至Docker镜像仓库;
获取用户在客户端选取的与所述多个待部署应用对应的多个Helm应用模板,每个Helm应用模板包含对应的Docker镜像的信息;
将所述多个Helm应用模板保存至应用模板仓库;
获取对所述多个Helm应用模板的集合部署任务信息,根据所述集合部署任务信息创建集合部署任务;
接收执行所述集合部署任务的部署指令,基于所述部署指令调用HelmCLI向Kubernetes集群发送部署请求,以使所述Kubernetes集群中的kube-apiserver调用Helm的Tiller,所述Tiller基于所述应用模板仓库中的所述Helm应用模板和所述Docker镜像对所述多个待部署应用进行部署。
可选地,所述获取用户在客户端选取的与所述多个待部署应用对应的多个Helm应用模板包括:
获取用户从应用模板仓库包含的预设应用模板中选取的多个应用模板为所述待部署应用对应的多个Helm应用模板;或者
获取用户从应用模板仓库包含的预设应用模板中选取的至少一个应用模板为待修改应用模板,获取用户基于所述待修改应用模板进行修改之后得到的多个应用模板为所述待部署应用对应的Helm应用模板。
可选地,所述获取由多个待部署应用的可执行程序打包得到的多个Docker镜像包括:
若检测到向代码仓库提交所述多个待部署应用的源码的提交指令,对所述多个待部署应用的源码进行质量检测;
若所述多个待部署应用的源码通过所述质量检测,对所述多个待部署应用的源码进行编译并将编译后得到的多个可执行程序打包成多个Docker镜像。
可选地,所述获取对所述多个Helm应用模板的集合部署任务信息包括:
获取集合部署任务文件,所述集合部署任务文件为XML格式的文件;
解析所述集合部署任务文件,得到对所述多个Helm应用模板的集合部署任务信息。
可选地,所述应用部署程序可被所述处理器执行,还实现如下步骤:
接收对所述集合部署任务的显示指令,显示所述集合部署任务的部署进度。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有应用部署程序,所述应用部署程序可被一个或者多个处理器执行,以实现如上所述的应用部署方法的步骤。
本发明提出的应用部署方法、装置及计算机可读存储介质,获取由多个待部署应用的可执行程序打包得到的多个Docker镜像;将所述多个Docker镜像保存至Docker镜像仓库;获取用户在客户端选取的与所述多个待部署应用对应的多个Helm应用模板,每个Helm应用模板包含对应的Docker镜像的信息;将所述多个Helm应用模板保存至应用模板仓库;获取对所述多个Helm应用模板的集合部署任务信息,根据所述集合部署任务信息创建集合部署任务;接收执行所述集合部署任务的部署指令,基于所述部署指令调用Helm CLI向Kubernetes集群发送部署请求,以使所述Kubernetes集群中的kube-apiserver调用Helm的Tiller,所述Tiller基于所述应用模板仓库中的所述Helm应用模板和所述Docker镜像对所述多个待部署应用进行部署。由于用户选取Helm应用模板进行应用的部署,使得用户可以方便快捷的操作,无需通过命令行的形式进行部署;同时由于Helm应用模板是将运行应用所需的资源打包而成的模板,因此这种形式使得每个待部署应用的文件统一好管理,有利于快速应用的快速部署;并且通过将多个待部署应用组合成一个部署任务进行部署,无需将每个待部署应用分别部署,进一步提高了部署的速度,实现了提高对多个应用进行部署的效率的目的。
附图说明
图1为本发明一实施例提供的应用部署方法的流程示意图;
图2为本发明一实施例提供的应用部署装置的内部结构示意图;
图3为本发明一实施例提供的应用部署装置中应用部署程序的模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明提供一种应用部署方法。参照图1所示,为本发明一实施例提供的应用部署方法的流程示意图。该方法可以由一个电子装置执行。
在本实施例中,应用部署方法包括:
步骤S11,获取由多个待部署应用的可执行程序打包得到的多个Docker镜像。
本实施例中,所述待部署应用是指要部署到Kubernetes中的应用,所述多个待部署应用的数量为至少两个。
Docker镜像是一个只读的模板,一个独立的文件系统,包括运行容器所需的数据,可以用来创建新的容器。
可选的,在本发明另一实施例中,所述获取由多个待部署应用的可执行程序打包得到的多个Docker镜像包括:
若检测到向代码仓库提交所述多个待部署应用的源码的提交指令,对所述多个待部署应用的源码进行质量检测;
若所述多个待部署应用的源码通过所述质量检测,对所述多个待部署应用的源码进行编译并将编译后得到的多个可执行程序打包成多个Docker镜像。
所述代码仓库可以是Github、Gitlab等可以进行代码管理的系统。
一种可选实施例中,可以通过SonarQube等第三方代码检测工具对源码进行质量检测,从而避免部署的应用存在较大的质量缺陷。
当对多个待部署应用的源码进行质量检测时,若存在没有通过质量检测的待部署应用的源码,则不对该待部署应用的源码进行编译。例如,若有5个待部署应用,对这5个待部署应用的源码进行质量检测,若都通过质量检测,则对这5个待部署应用的源码进行编译,并将编译后得到的5个可执行程序打包成5个Docker镜像;若对这5个待部署应用的源码进行质量检测之后,存在2个待部署应用的源码未通过质量检测,则对其他3个通过质量检测的待部署应用的源码进行编译,并将编译后得到的3个可执行程序打包成3个Docker镜像。
本实施例中,在打包生成Docker镜像时,可以基于Dockerfile来打包生成Docker。
在本发明另一实施例中,用户通过应用部署平台的集成开发环境编写或修改多个待部署应用的源码,以及通过集成开发环境编译源码得到可执行程序,并打包成Docker镜像。获取用户在应用部署平台的客户端配置的Docker镜像的路径,进而通过该Docker镜像的路径获取该Docker镜像。
步骤S12,将所述多个Docker镜像保存至Docker镜像仓库。
Docker镜像的结构是:Docker镜像的最底端是一个文件引导系统,即bootfs。Docker镜像的第二层是root文件系统rootfs,通常是一种或多种操作系统,例如ubuntu等。在Docker中,文件系统永远都是只读的,在每次修改时,都是进行拷贝叠加从而形成最终的文件系统。Docker称这样的文件为镜像。一个镜像可以迭代在另一个镜像的顶部。位于下方的镜像称之为父镜像,最底层的镜像称之为基础镜像。最后,当从一个镜像启动容器时,Docker会在最顶层加载一个读写文件系统作为容器。
本实施例中,所述Docker镜像仓库用于保存待部署应用的Docker镜像。
一种可选实施例中,将所述多个Docker镜像保存至Docker镜像仓库包括:获取Docker镜像仓库的地址,基于获取到的Docker镜像仓库的地址将所述多个Docker镜像保存至Docker镜像仓库。
步骤S13,获取用户在客户端选取的与所述多个待部署应用对应的多个Helm应用模板,每个Helm应用模板包含对应的Docker镜像的信息。
本实施例中,客户端提供可供进行交互的窗口。
一种可选实施例中,所述客户端是应用部署平台的客户端。例如,获取在浏览器的网页中选取的与多个待部署应用对应的多个应用模板。
本实施例中,Helm应用模板又称为Helm包,也可称为一个chart,一个Helm应用模板包含了运行一个应用所需要的镜像、依赖和资源定义等,还可以包含Kubernetes集群中的服务定义。Helm应用模板采用go模板语言编写Go template language,模板的值记录在values.yaml文件中。
在本实施例中与待部署应用对应的Helm应用模板包含运行该待部署应用所需的镜像、依赖和资源定义等。
每个Helm应用模板包含对应的Docker镜像的信息,即每个Helm应用模板包含对应的Docker镜像的镜像名,镜像版本等信息。
在本实施例中,例如,待部署应用为5个,则获取到的待部署应用对应的Helm应用模板也为5个。或者,当待部署应用运行时所需的资源包存在重叠时,待部署应用对应的Helm应用模板的数量可以少于5个,比如待部署应用为5个,获取到的待部署应用对应的Helm应用模板为3个。
进一步的,在本发明另一实施例中,所述获取用户在客户端选取的与所述多个待部署应用对应的多个Helm应用模板包括:
获取用户从应用模板仓库包含的预设应用模板中选取的多个应用模板为所述待部署应用对应的多个Helm应用模板。
本实施例中,所述应用模板仓库中包含预设应用模板。例如,预设应用模板为公有云厂商提供的常见应用或中间件的应用模板,如Redis/Zookeeper/RabbitMQ/Eureka等。
例如,在浏览器的网页中显示可选择的预设应用模板,确定用户选取的预设应用模板为待部署应用对应的Helm应用模板。
通过本实施例,可以快速的获取待部署应用的应用模板进而有利于快速部署待部署应用。
或者,在本发明其他实施例中,所述获取用户在客户端选取的与所述多个待部署应用对应的多个Helm应用模板包括:
获取用户从应用模板仓库包含的预设应用模板中选取的至少一个应用模板为待修改应用模板,获取用户基于所述待修改应用模板进行修改之后得到的多个应用模板为所述待部署应用对应的Helm应用模板。
例如,用户选取一个应用模板,并基于该应用模板进行多次修改得到不同的多个应用模板,则修改后得到的多个应用模板为待部署应用对应的Helm应用模板。
在本实施例中,用户可以复制已有的公有模板进行修改,从而生成私有应用模板。例如,修改镜像名。
该私有应用模板可以持久化保存,并且仅供该用户使用。或者,用户可以设置该私有模板可共享给其他用户使用。
通过本实施例,可以快速的基于应该用模板创建适用于待部署应用的Helm应用模板,提高了Helm应该用模板获取的速度,实现了便捷化定制Helm应用模板。
步骤S14,将所述多个Helm应用模板保存至应用模板仓库。
一种可选实施例中,应用模板仓库可存放公有应用模板和私有应用模板。
步骤S15,获取对所述多个Helm应用模板的集合部署任务信息,根据所述集合部署任务信息创建集合部署任务。
本实施例中,部署任务包含但不限于应用模板名,模板版本号,将部署到的集群的信息。则集合部署任务包括每个Helm应用模板、每个模板版本号、以及每个要部署到的集群的信息(如集群名称)。
例如,待部署应用为5个时,集合部署任务信息中分别包括这5个待部署应用的部署信息,创建的集合部署任务可以用于部署这5个待部署应用。
比如,a应用的b版本要部署到c集群,d应用的e版本要保护到f集群,则部署任务信息这两个应用的部署信息。
其他可选实施例中,所述集合部署任务信息为用户在浏览器的web页面输入的信息,如应用模板名、模板版本号、集群名称等。
可选的,在本发明另一实施例中国,所述获取对所述多个Helm应用模板的集合部署任务信息包括:
获取集合部署任务文件,所述集合部署任务文件为XML格式的文件;
解析所述集合部署任务文件,得到对所述多个Helm应用模板的集合部署任务信息。
步骤S16,接收执行所述集合部署任务的部署指令,基于所述部署指令调用HelmCLI向Kubernetes集群发送部署请求,以使所述Kubernetes集群中的kube-apiserver调用Helm的Tiller,所述Tiller基于所述应用模板仓库中的所述Helm应用模板和所述Docker镜像对所述多个待部署应用进行部署。
本实施例中,所述Helm CLI为Helm的客户端,所述Tiller为Helm的服务器端,该Tiller运行于Kubernetes集群中。
在本实施例中,当集合部署任务包含多个待部署应用时,并发部署待部署应用。
通过本实施例创建集合部署任务进而执行集合部署任务可以快速地对多个应用进行部署,无需对单个应用进行一一部署,提高了应用部署的效率。
可选的,在本发明另一实施例中,所述应用部署方法还包括:
接收对所述集合部署任务的显示指令,显示所述集合部署任务的部署进度。
例如,显示部署进度为3/5,表示共有5个需要部署,已经完成部署3个。
在本发明其他实施例中,通过web页面显示部署列表,该部署列表包括已完成的部署任务。有利于用快速便捷地了解部署进度与部署状态。
本实施例提出的应用部署方法,获取由多个待部署应用的可执行程序打包得到的多个Docker镜像;将所述多个Docker镜像保存至Docker镜像仓库;获取用户在客户端选取的与所述多个待部署应用对应的多个Helm应用模板,每个Helm应用模板包含对应的Docker镜像的信息;将所述多个Helm应用模板保存至应用模板仓库;获取对所述多个Helm应用模板的集合部署任务信息,根据所述集合部署任务信息创建集合部署任务;接收执行所述集合部署任务的部署指令,基于所述部署指令调用Helm CLI向Kubernetes集群发送部署请求,以使所述Kubernetes集群中的kube-apiserver调用Helm的Tiller,所述Tiller基于所述应用模板仓库中的所述Helm应用模板和所述Docker镜像对所述多个待部署应用进行部署。由于用户选取Helm应用模板进行应用的部署,使得用户可以方便快捷的操作,无需通过命令行的形式进行部署;同时由于Helm应用模板是将运行应用所需的资源打包而成的模板,因此这种形式使得每个待部署应用的文件统一好管理,有利于快速应用的快速部署;并且通过将多个待部署应用组合成一个部署任务进行部署,无需将每个待部署应用分别部署,进一步提高了部署的速度,实现了提高对多个应用进行部署的效率的目的。
本发明还提供一种应用部署装置。参照图2所示,为本发明一实施例提供的应用部署装置的内部结构示意图。
在本实施例中,应用部署装置1可以是PC(Personal Computer,个人电脑),也可以是智能手机、平板电脑、便携计算机等终端设备。该应用部署装置1至少包括存储器11、处理器12,网络接口13以及通信总线14。
其中,存储器11至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、磁性存储器、磁盘、光盘等。存储器11在一些实施例中可以是应用部署装置1的内部存储单元,例如该应用部署装置1的硬盘。存储器11在另一些实施例中也可以是应用部署装置1的外部存储设备,例如应用部署装置1上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器11还可以既包括应用部署装置1的内部存储单元也包括外部存储设备。存储器11不仅可以用于存储安装于应用部署装置1的应用软件及各类数据,例如应用部署程序01的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。
处理器12在一些实施例中可以是一中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行存储器11中存储的程序代码或处理数据,例如执行应用部署程序01等。
网络接口13可选的可以包括标准的有线接口、无线接口(如WI-FI接口),通常用于在该装置1与其他电子设备之间建立通信连接。
通信总线14用于实现这些组件之间的连接通信。
可选地,该装置1还可以包括用户接口,用户接口可以包括显示器(Display)、输入单元比如键盘(Keyboard),可选的用户接口还可以包括标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在应用部署装置1中处理的信息以及用于显示可视化的用户界面。
图2仅示出了具有组件11-14以及应用部署程序01的应用部署装置1,本领域技术人员可以理解的是,图2示出的结构并不构成对应用部署装置1的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
在图2所示的装置1实施例中,存储器11中存储有应用部署程序01;处理器12执行存储器11中存储的应用部署程序01时实现如下步骤:
获取由多个待部署应用的可执行程序打包得到的多个Docker镜像。
本实施例中,所述待部署应用是指要部署到Kubernetes中的应用,所述多个待部署应用的数量为至少两个。
Docker镜像是一个只读的模板,一个独立的文件系统,包括运行容器所需的数据,可以用来创建新的容器。
可选的,在本发明另一实施例中,所述获取由多个待部署应用的可执行程序打包得到的多个Docker镜像包括:
若检测到向代码仓库提交所述多个待部署应用的源码的提交指令,对所述多个待部署应用的源码进行质量检测;
若所述多个待部署应用的源码通过所述质量检测,对所述多个待部署应用的源码进行编译并将编译后得到的多个可执行程序打包成多个Docker镜像。
所述代码仓库可以是Github、Gitlab等可以进行代码管理的系统。
一种可选实施例中,可以通过SonarQube等第三方代码检测工具对源码进行质量检测,从而避免部署的应用存在较大的质量缺陷。
当对多个待部署应用的源码进行质量检测时,若存在没有通过质量检测的待部署应用的源码,则不对该待部署应用的源码进行编译。例如,若有5个待部署应用,对这5个待部署应用的源码进行质量检测,若都通过质量检测,则对这5个待部署应用的源码进行编译,并将编译后得到的5个可执行程序打包成5个Docker镜像;若对这5个待部署应用的源码进行质量检测之后,存在2个待部署应用的源码未通过质量检测,则对其他3个通过质量检测的待部署应用的源码进行编译,并将编译后得到的3个可执行程序打包成3个Docker镜像。
本实施例中,在打包生成Docker镜像时,可以基于Dockerfile来打包生成Docker。
在本发明另一实施例中,用户通过应用部署平台的集成开发环境编写或修改多个待部署应用的源码,以及通过集成开发环境编译源码得到可执行程序,并打包成Docker镜像。获取用户在应用部署平台的客户端配置的Docker镜像的路径,进而通过该Docker镜像的路径获取该Docker镜像。
将所述多个Docker镜像保存至Docker镜像仓库。
Docker镜像的结构是:Docker镜像的最底端是一个文件引导系统,即bootfs。Docker镜像的第二层是root文件系统rootfs,通常是一种或多种操作系统,例如ubuntu等。在Docker中,文件系统永远都是只读的,在每次修改时,都是进行拷贝叠加从而形成最终的文件系统。Docker称这样的文件为镜像。一个镜像可以迭代在另一个镜像的顶部。位于下方的镜像称之为父镜像,最底层的镜像称之为基础镜像。最后,当从一个镜像启动容器时,Docker会在最顶层加载一个读写文件系统作为容器。
本实施例中,所述Docker镜像仓库用于保存待部署应用的Docker镜像。
一种可选实施例中,将所述多个Docker镜像保存至Docker镜像仓库包括:获取Docker镜像仓库的地址,基于获取到的Docker镜像仓库的地址将所述多个Docker镜像保存至Docker镜像仓库。
获取用户在客户端选取的与所述多个待部署应用对应的多个Helm应用模板,每个Helm应用模板包含对应的Docker镜像的信息。
本实施例中,客户端提供可供进行交互的窗口。
一种可选实施例中,所述客户端是应用部署平台的客户端。例如,获取在浏览器的网页中选取的与多个待部署应用对应的多个应用模板。
本实施例中,Helm应用模板又称为Helm包,也可称为一个chart,一个Helm应用模板包含了运行一个应用所需要的镜像、依赖和资源定义等,还可以包含Kubernetes集群中的服务定义。Helm应用模板采用go模板语言编写Go template language,模板的值记录在values.yaml文件中。
在本实施例中与待部署应用对应的Helm应用模板包含运行该待部署应用所需的镜像、依赖和资源定义等。
每个Helm应用模板包含对应的Docker镜像的信息,即每个Helm应用模板包含对应的Docker镜像的镜像名,镜像版本等信息。
在本实施例中,例如,待部署应用为5个,则获取到的待部署应用对应的Helm应用模板也为5个。或者,当待部署应用运行时所需的资源包存在重叠时,待部署应用对应的Helm应用模板的数量可以少于5个,比如待部署应用为5个,获取到的待部署应用对应的Helm应用模板为3个。
进一步的,在本发明另一实施例中,所述获取用户在客户端选取的与所述多个待部署应用对应的多个Helm应用模板包括:
获取用户从应用模板仓库包含的预设应用模板中选取的多个应用模板为所述待部署应用对应的多个Helm应用模板。
本实施例中,所述应用模板仓库中包含预设应用模板。例如,预设应用模板为公有云厂商提供的常见应用或中间件的应用模板,如Redis/Zookeeper/RabbitMQ/Eureka等。
例如,在浏览器的网页中显示可选择的预设应用模板,确定用户选取的预设应用模板为待部署应用对应的Helm应用模板。
通过本实施例,可以快速的获取待部署应用的应用模板进而有利于快速部署待部署应用。
或者,在本发明其他实施例中,所述获取用户在客户端选取的与所述多个待部署应用对应的多个Helm应用模板包括:
获取用户从应用模板仓库包含的预设应用模板中选取的至少一个应用模板为待修改应用模板,获取用户基于所述待修改应用模板进行修改之后得到的多个应用模板为所述待部署应用对应的Helm应用模板。
例如,用户选取一个应用模板,并基于该应用模板进行多次修改得到不同的多个应用模板,则修改后得到的多个应用模板为待部署应用对应的Helm应用模板。
在本实施例中,用户可以复制已有的公有模板进行修改,从而生成私有应用模板。例如,修改镜像名。
该私有应用模板可以持久化保存,并且仅供该用户使用。或者,用户可以设置该私有模板可共享给其他用户使用。
通过本实施例,可以快速的基于应该用模板创建适用于待部署应用的Helm应用模板,提高了Helm应该用模板获取的速度,实现了便捷化定制Helm应用模板。
将所述多个Helm应用模板保存至应用模板仓库。
一种可选实施例中,应用模板仓库可存放公有应用模板和私有应用模板。
获取对所述多个Helm应用模板的集合部署任务信息,根据所述集合部署任务信息创建集合部署任务。
本实施例中,部署任务包含但不限于应用模板名,模板版本号,将部署到的集群的信息。则集合部署任务包括每个Helm应用模板、每个模板版本号、以及每个要部署到的集群的信息(如集群名称)。
例如,待部署应用为5个时,集合部署任务信息中分别包括这5个待部署应用的部署信息,创建的集合部署任务可以用于部署这5个待部署应用。
比如,a应用的b版本要部署到c集群,d应用的e版本要保护到f集群,则部署任务信息这两个应用的部署信息。
其他可选实施例中,所述集合部署任务信息为用户在浏览器的web页面输入的信息,如应用模板名、模板版本号、集群名称等。
可选的,在本发明另一实施例中国,所述获取对所述多个Helm应用模板的集合部署任务信息包括:
获取集合部署任务文件,所述集合部署任务文件为XML格式的文件;
解析所述集合部署任务文件,得到对所述多个Helm应用模板的集合部署任务信息。
接收执行所述集合部署任务的部署指令,基于所述部署指令调用HelmCLI向Kubernetes集群发送部署请求,以使所述Kubernetes集群中的kube-apiserver调用Helm的Tiller,所述Tiller基于所述应用模板仓库中的所述Helm应用模板和所述Docker镜像对所述多个待部署应用进行部署。
本实施例中,所述Helm CLI为Helm的客户端,所述Tiller为Helm的服务器端,该Tiller运行于Kubernetes集群中。
在本实施例中,当集合部署任务包含多个待部署应用时,并发部署待部署应用。
通过本实施例创建集合部署任务进而执行集合部署任务可以快速地对多个应用进行部署,无需对单个应用进行一一部署,提高了应用部署的效率。
可选的,在本发明另一实施例中,所述应用部署方法还包括:
接收对所述集合部署任务的显示指令,显示所述集合部署任务的部署进度。
例如,显示部署进度为3/5,表示共有5个需要部署,已经完成部署3个。
在本发明其他实施例中,通过web页面显示部署列表,该部署列表包括已完成的部署任务。有利于用快速便捷地了解部署进度与部署状态。
本实施例提出的应用部署装置,获取由多个待部署应用的可执行程序打包得到的多个Docker镜像;将所述多个Docker镜像保存至Docker镜像仓库;获取用户在客户端选取的与所述多个待部署应用对应的多个Helm应用模板,每个Helm应用模板包含对应的Docker镜像的信息;将所述多个Helm应用模板保存至应用模板仓库;获取对所述多个Helm应用模板的集合部署任务信息,根据所述集合部署任务信息创建集合部署任务;接收执行所述集合部署任务的部署指令,基于所述部署指令调用Helm CLI向Kubernetes集群发送部署请求,以使所述Kubernetes集群中的kube-apiserver调用Helm的Tiller,所述Tiller基于所述应用模板仓库中的所述Helm应用模板和所述Docker镜像对所述多个待部署应用进行部署。由于用户选取Helm应用模板进行应用的部署,使得用户可以方便快捷的操作,无需通过命令行的形式进行部署;同时由于Helm应用模板是将运行应用所需的资源打包而成的模板,因此这种形式使得每个待部署应用的文件统一好管理,有利于快速应用的快速部署;并且通过将多个待部署应用组合成一个部署任务进行部署,无需将每个待部署应用分别部署,进一步提高了部署的速度,实现了提高对多个应用进行部署的效率的目的。
可选地,在其他实施例中,应用部署程序还可以被分割为一个或者多个模块,一个或者多个模块被存储于存储器11中,并由一个或多个处理器(本实施例为处理器12)所执行以完成本发明,本发明所称的模块是指能够完成特定功能的一系列计算机程序指令段,用于描述应用部署程序在应用部署装置中的执行过程。
例如,参照图3所示,为本发明应用部署装置一实施例中的应用部署程序的程序模块示意图,该实施例中,应用部署程序可以被分割为第一获取模块10、第一保存模块20、第二获取模块30、第二保存模块40、创建模块50和处理模块60,示例性地:
第一获取模块10用于:获取由多个待部署应用的可执行程序打包得到的多个Docker镜像;
第一保存模块20用于:将所述多个Docker镜像保存至Docker镜像仓库;
第二获取模块30用于:获取用户在客户端选取的与所述多个待部署应用对应的多个Helm应用模板,每个Helm应用模板包含对应的Docker镜像的信息;
第二保存模块40用于:将所述多个Helm应用模板保存至应用模板仓库;
创建模块50用于:获取对所述多个Helm应用模板的集合部署任务信息,根据所述集合部署任务信息创建集合部署任务;
处理模块60用于:接收执行所述集合部署任务的部署指令,基于所述部署指令调用Helm CLI向Kubernetes集群发送部署请求,以使所述Kubernetes集群中的kube-apiserver调用Helm的Tiller,所述Tiller基于所述应用模板仓库中的所述Helm应用模板和所述Docker镜像对所述多个待部署应用进行部署。
上述第一获取模块10、第一保存模块20、第二获取模块30、第二保存模块40、创建模块50和处理模块60等程序模块被执行时所实现的功能或操作步骤与上述实施例大体相同,在此不再赘述。
此外,本发明实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有应用部署程序,所述应用部署程序可被一个或多个处理器执行,以实现如下操作:
获取由多个待部署应用的可执行程序打包得到的多个Docker镜像;
将所述多个Docker镜像保存至Docker镜像仓库;
获取用户在客户端选取的与所述多个待部署应用对应的多个Helm应用模板,每个Helm应用模板包含对应的Docker镜像的信息;
将所述多个Helm应用模板保存至应用模板仓库;
获取对所述多个Helm应用模板的集合部署任务信息,根据所述集合部署任务信息创建集合部署任务;
接收执行所述集合部署任务的部署指令,基于所述部署指令调用HelmCLI向Kubernetes集群发送部署请求,以使所述Kubernetes集群中的kube-apiserver调用Helm的Tiller,所述Tiller基于所述应用模板仓库中的所述Helm应用模板和所述Docker镜像对所述多个待部署应用进行部署。
本发明计算机可读存储介质具体实施方式与上述应用部署装置和方法各实施例基本相同,在此不作累述。
需要说明的是,上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。并且本文中的术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (6)
1.一种应用部署方法,其特征在于,所述方法包括:
获取由多个待部署应用的可执行程序打包得到的多个Docker镜像,包括:若检测到向代码仓库提交所述多个待部署应用的源码的提交指令,对所述多个待部署应用的源码进行质量检测,若所述多个待部署应用的源码通过所述质量检测,对所述多个待部署应用的源码进行编译并将编译后得到的多个可执行程序打包成多个Docker镜像;
将所述多个Docker镜像保存至Docker镜像仓库;
获取用户在客户端选取的与所述多个待部署应用对应的多个Helm应用模板,包括:获取用户从应用模板仓库包含的预设应用模板中选取的多个应用模板为所述待部署应用对应的多个Helm应用模板,或者获取用户从应用模板仓库包含的预设应用模板中选取的至少一个应用模板为待修改应用模板,获取用户基于所述待修改应用模板进行修改之后得到的多个应用模板为所述待部署应用对应的Helm应用模板,每个Helm应用模板包含对应的Docker镜像的信息;
将所述多个Helm应用模板保存至应用模板仓库;
获取对所述多个Helm应用模板的集合部署任务信息,根据所述集合部署任务信息创建集合部署任务;
接收执行所述集合部署任务的部署指令,基于所述部署指令调用Helm CLI向Kubernetes集 群发送部署请求,以使所述Kubernetes集群中的kube-apiserver调用Helm的Tiller,所述Tiller基于所述应用模板仓库中的所述Helm应用模板和所述Docker镜像对所述多个待部署应用进行部署,所述Helm CLI为Helm的客户端,所述Tiller为Helm的服务器端。
2.如权利要求1所述的应用部署方法,其特征在于,所述获取对所述多个Helm应用模板的集合部署任务信息包括:
获取集合部署任务文件,所述集合部署任务文件为XML格式的文件;
解析所述集合部署任务文件,得到对所述多个Helm应用模板的集合部署任务信息。
3.如权利要求1至2中任一项所述的应用部署方法,其特征在于,所述方法还包括:
接收对所述集合部署任务的显示指令,显示所述集合部署任务的部署进度。
4.一种应用部署装置,其特征在于,所述装置包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的应用部署程序,所述应用部署程序被所述处理器执行时实现如下步骤:
获取由多个待部署应用的可执行程序打包得到的多个Docker镜像,包括:若检测到向代码仓库提交所述多个待部署应用的源码的提交指令,对所述多个待部署应用的源码进行质量检测,若所述多个待部署应用的源码通过所述质量检测,对所述多个待部署应用的源码进行编译并将编译后得到的多个可执行程序打包成多个Docker镜像;
将所述多个Docker镜像保存至Docker镜像仓库;
获取用户在客户端选取的与所述多个待部署应用对应的多个Helm应用模板,包括:获取用户从应用模板仓库包含的预设应用模板中选取的多个应用模板为所述待部署应用对应的多个Helm应用模板,或者获取用户从应用模板仓库包含的预设应用模板中选取的至少一个应用模板为待修改应用模板,获取用户基于所述待修改应用模板进行修改之后得到的多个应用模板为所述待部署应用对应的Helm应用模板,每个Helm应用模板包含对应的Docker镜像的信息;
将所述多个Helm应用模板保存至应用模板仓库;
获取对所述多个Helm应用模板的集合部署任务信息,根据所述集合部署任务信息创建集合部署任务;
接收执行所述集合部署任务的部署指令,基于所述部署指令调用Helm CLI向Kubernetes集 群发送部署请求,以使所述Kubernetes集群中的kube-apiserver调用Helm的Tiller,所述Tiller基于所述应用模板仓库中的所述Helm应用模板和所述Docker镜像对所述多个待部署应用进行部署,所述Helm CLI为Helm的客户端,所述Tiller为Helm的服务器端。
5.如权利要求4所述的应用部署装置,其特征在于,所述应用部署程序可被所述处理器执行,还实现如下步骤:
接收对所述集合部署任务的显示指令,显示所述集合部署任务的部署进度。
6.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有应用部署程序,所述应用部署程序可被一个或者多个处理器执行,以实现如权利要求1至3中任一项所述的应用部署方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911139848.1A CN111090437B (zh) | 2019-11-19 | 2019-11-19 | 应用部署方法、装置及计算机可读存储介质 |
PCT/CN2020/119215 WO2021098392A1 (zh) | 2019-11-19 | 2020-09-30 | 应用部署方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911139848.1A CN111090437B (zh) | 2019-11-19 | 2019-11-19 | 应用部署方法、装置及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111090437A CN111090437A (zh) | 2020-05-01 |
CN111090437B true CN111090437B (zh) | 2024-03-12 |
Family
ID=70393535
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911139848.1A Active CN111090437B (zh) | 2019-11-19 | 2019-11-19 | 应用部署方法、装置及计算机可读存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN111090437B (zh) |
WO (1) | WO2021098392A1 (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111090437B (zh) * | 2019-11-19 | 2024-03-12 | 平安科技(深圳)有限公司 | 应用部署方法、装置及计算机可读存储介质 |
CN111596927B (zh) * | 2020-05-15 | 2023-08-18 | 北京金山云网络技术有限公司 | 服务部署方法、装置及电子设备 |
CN112558987A (zh) * | 2020-12-16 | 2021-03-26 | 中盈优创资讯科技有限公司 | 一种基于helm的自动化部署方法及装置 |
CN112817674B (zh) * | 2021-01-20 | 2023-12-26 | 上海浪潮云计算服务有限公司 | 一种在kubernetes集群中部署X窗口系统的工具及方法 |
CN113094151A (zh) * | 2021-04-23 | 2021-07-09 | 汇能云科技(宁波)有限公司 | 一种基于Helm的微服务应用部署系统及方法 |
CN113238763A (zh) * | 2021-05-17 | 2021-08-10 | 京东数字科技控股股份有限公司 | 应用部署的方法、设备、存储介质及程序产品 |
CN113377346B (zh) * | 2021-06-10 | 2023-01-31 | 北京滴普科技有限公司 | 集成环境搭建方法、装置、电子设备及存储介质 |
CN113485795B (zh) * | 2021-07-26 | 2024-03-26 | 四川万益能源科技有限公司 | 一种基于多种类型项目的自动化容器启动方法 |
CN114840225B (zh) * | 2022-04-26 | 2023-09-19 | 光大科技有限公司 | 一种应用部署方法、装置、存储介质及电子装置 |
CN116431277A (zh) * | 2023-03-13 | 2023-07-14 | 浙江海规技术有限公司 | 多地运维容器化方法、装置、计算机设备及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017143548A1 (zh) * | 2016-02-25 | 2017-08-31 | 华为技术有限公司 | 用于应用自动化部署的方法和云管理节点 |
US9983891B1 (en) * | 2017-03-21 | 2018-05-29 | Veritas Technologies Llc | Systems and methods for distributing configuration templates with application containers |
CN108959030A (zh) * | 2018-07-02 | 2018-12-07 | 郑州云海信息技术有限公司 | 一种集群管理方法及系统 |
CN109634621A (zh) * | 2018-11-30 | 2019-04-16 | 武汉烽火信息集成技术有限公司 | Openstack平台部署方法、存储介质、电子设备及系统 |
WO2019095936A1 (zh) * | 2017-11-15 | 2019-05-23 | 腾讯科技(深圳)有限公司 | 容器镜像的构建方法、系统、服务器、装置及存储介质 |
CN109799998A (zh) * | 2018-12-18 | 2019-05-24 | 深圳先进技术研究院 | OpenStack集群配置及批量部署方法及系统 |
CN109981351A (zh) * | 2019-03-06 | 2019-07-05 | 浪潮通用软件有限公司 | 一种私有云部署方法 |
CN110286885A (zh) * | 2019-06-27 | 2019-09-27 | 江苏满运软件科技有限公司 | 自动化初始开发方法、系统、计算机设备和存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10379835B2 (en) * | 2016-12-19 | 2019-08-13 | International Business Machines Corporation | Optimized creation of distributed storage and distributed processing clusters on demand |
CN110058863A (zh) * | 2019-03-16 | 2019-07-26 | 平安城市建设科技(深圳)有限公司 | Docker容器的构建方法、装置、设备及存储介质 |
CN111090437B (zh) * | 2019-11-19 | 2024-03-12 | 平安科技(深圳)有限公司 | 应用部署方法、装置及计算机可读存储介质 |
-
2019
- 2019-11-19 CN CN201911139848.1A patent/CN111090437B/zh active Active
-
2020
- 2020-09-30 WO PCT/CN2020/119215 patent/WO2021098392A1/zh active Application Filing
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017143548A1 (zh) * | 2016-02-25 | 2017-08-31 | 华为技术有限公司 | 用于应用自动化部署的方法和云管理节点 |
US9983891B1 (en) * | 2017-03-21 | 2018-05-29 | Veritas Technologies Llc | Systems and methods for distributing configuration templates with application containers |
WO2019095936A1 (zh) * | 2017-11-15 | 2019-05-23 | 腾讯科技(深圳)有限公司 | 容器镜像的构建方法、系统、服务器、装置及存储介质 |
CN108959030A (zh) * | 2018-07-02 | 2018-12-07 | 郑州云海信息技术有限公司 | 一种集群管理方法及系统 |
CN109634621A (zh) * | 2018-11-30 | 2019-04-16 | 武汉烽火信息集成技术有限公司 | Openstack平台部署方法、存储介质、电子设备及系统 |
CN109799998A (zh) * | 2018-12-18 | 2019-05-24 | 深圳先进技术研究院 | OpenStack集群配置及批量部署方法及系统 |
CN109981351A (zh) * | 2019-03-06 | 2019-07-05 | 浪潮通用软件有限公司 | 一种私有云部署方法 |
CN110286885A (zh) * | 2019-06-27 | 2019-09-27 | 江苏满运软件科技有限公司 | 自动化初始开发方法、系统、计算机设备和存储介质 |
Non-Patent Citations (1)
Title |
---|
应用Snap Deploy实现图书馆OS的快速部署;陈思义;;图书馆研究与工作;20100915(第03期);第44-47页 * |
Also Published As
Publication number | Publication date |
---|---|
CN111090437A (zh) | 2020-05-01 |
WO2021098392A1 (zh) | 2021-05-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111090437B (zh) | 应用部署方法、装置及计算机可读存储介质 | |
CN110990731B (zh) | 一种静态网页的渲染方法、装置、设备及计算机存储介质 | |
CN107491329B (zh) | Docker镜像构建方法、设备、存储介质以及电子装置 | |
CN108845839B (zh) | 应用页面加载方法、装置及计算机可读存储介质 | |
US11403146B2 (en) | Method, apparatus, and server for managing image across cloud servers | |
CN107656729B (zh) | 列表视图的更新装置、方法及计算机可读存储介质 | |
WO2019227715A1 (zh) | 数据处理方法、装置及计算机可读存储介质 | |
US20170052764A1 (en) | Pluggable components for runtime-image generation | |
CN110705237B (zh) | 文档的自动生成方法、数据处理设备及存储介质 | |
CN108762767B (zh) | 应用发布方法、装置及计算机可读存储介质 | |
CN111068328A (zh) | 游戏广告配置表格的生成方法、终端设备及介质 | |
US11409631B2 (en) | Verification automation apparatus, verification automation method, and computer-readable recording medium | |
CN112416458A (zh) | 基于ReactNative的预加载方法、装置、计算机设备及存储介质 | |
CN108197024B (zh) | 嵌入式浏览器调试方法、调试终端及计算机可读存储介质 | |
CN110688096A (zh) | 包含插件的应用程序的构建方法、装置、介质及电子设备 | |
CN113268245A (zh) | 代码分析方法、装置及存储介质 | |
CN102193818B (zh) | 虚拟应用程序包重构 | |
CN111596951A (zh) | 一种工程文件的配置方法及装置 | |
CN111580804B (zh) | 一种软件项目开发的方法和装置 | |
CN112083925A (zh) | 基于h5页面开发的数据获取方法、装置、设备及存储介质 | |
US20050268219A1 (en) | Method and system for embedding context information in a document | |
CN112835568A (zh) | 一种项目构建方法和装置 | |
CN110764746A (zh) | 脚本生成方法、装置及计算机可读存储介质 | |
CN116302054A (zh) | 一种软件项目的开发方法、装置、存储介质及电子设备 | |
CN115248680A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |