CN115658237A - 一种容器应用自动部署方法、设备、装置、设备及介质 - Google Patents
一种容器应用自动部署方法、设备、装置、设备及介质 Download PDFInfo
- Publication number
- CN115658237A CN115658237A CN202211391294.6A CN202211391294A CN115658237A CN 115658237 A CN115658237 A CN 115658237A CN 202211391294 A CN202211391294 A CN 202211391294A CN 115658237 A CN115658237 A CN 115658237A
- Authority
- CN
- China
- Prior art keywords
- container
- mirror image
- environment
- deployment
- mirror
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 49
- 238000004806 packaging method and process Methods 0.000 claims abstract description 68
- 238000013515 script Methods 0.000 claims abstract description 39
- 238000004590 computer program Methods 0.000 claims description 17
- 230000001360 synchronised effect Effects 0.000 claims description 13
- 238000001514 detection method Methods 0.000 claims 2
- 230000005540 biological transmission Effects 0.000 abstract description 7
- 238000002955 isolation Methods 0.000 abstract description 7
- 230000003993 interaction Effects 0.000 abstract description 6
- 238000011161 development Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 238000004519 manufacturing process Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 238000012546 transfer Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000010276 construction Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种容器应用自动部署方法、设备、装置、设备及介质,涉及容器技术领域,该方法包括:利用打包工具将发送至代码仓库的代码进行编译打包以得到容器镜像,并将容器镜像发送至第一环境的镜像仓库;代码包括应用代码以及位于部署文件目录中的主执行脚本和符合部署需求数量的部署描述文件;利用基于部署触发工具确定的镜像同步触发逻辑对第二环境的镜像仓库与第一环境的镜像仓库进行镜像同步操作,以便于第二环境的镜像仓库获取述容器镜像;利用部署执行工具执行第二环境获取到的容器镜像中包含的所述主执行脚本,实现容器应用在容器集群中的自动部署。通过上述方案,将跨环境的交互简化为容器镜像文件的传输,有效提高了隔离性与安全性。
Description
技术领域
本发明涉及容器技术领域,特别涉及一种容器应用自动部署方法、设备、装置、设备及介质。
背景技术
容器技术的发展,使得应用的部署方式发生了较大改变,以Docker(开源的应用容器引擎)为代表的容器技术,将应用的运行环境封装成一个镜像,屏蔽了外部环境的差异性,极大的提高了应用在多个环境(如开发、测试、生产)的部署效率。随着容器规模的增长,又诞生了以Kubernetes(以下简称K8S)为代表的容器编排管理工具,它对多个复杂的容器应用的部署形式,通过一种声明式的YAML(Yet Another Markup Language,一种标记语言)文件进行描述(以下简称部署描述文件),部署描述文件定义了应用部署的各种信息,如应用部署的副本数、容器规格、镜像版本、启动参数、健康检查方式等。因此,基于容器(如Docker)及容器编排管理(如K8S)等技术,在容器化时代可以实现应用的快速部署。但是,应用部署往往存在多个环境(如开发、测试、生产),尤其在金融行业,这些环境都是有隔离要求或安全管控的,如何在多个环境之间实现统一管理及简化部署,是一个值得研究的问题。
发明内容
有鉴于此,本发明的目的在于提供一种容器应用自动部署方法、设备、装置、设备及介质,能够在多个环境之间实现统一管理及简化部署,将跨环境的交互简化为容器镜像文件的传输,有效提高了隔离性及安全性,降低了部署风险。其具体方案如下:
第一方面,本申请公开了一种容器应用自动部署方法,包括:
利用打包工具将发送至代码仓库的代码进行编译打包以得到容器镜像,并将所述容器镜像发送至第一环境的镜像仓库;所述代码包括应用代码以及位于部署文件目录中的主执行脚本和符合部署需求数量的部署描述文件;
利用基于部署触发工具确定的镜像同步触发逻辑对第二环境的镜像仓库与所述第一环境的镜像仓库进行镜像同步操作,以便于所述第二环境的镜像仓库获取所述第一环境的镜像仓库推送的所述容器镜像;
利用部署执行工具执行所述第二环境获取到的所述容器镜像中包含的所述主执行脚本,以实现容器应用在容器集群中的自动部署。
可选的,所述利用打包工具将发送至代码仓库的代码进行编译打包以得到容器镜像,包括:
利用打包工具对发送至所述代码仓库的所述代码进行编译打包后得到相应的制品,并利用所述打包工具中部署的预设容器镜像定义文件模板生成与所述制品对应的容器镜像。
可选的,所述利用打包工具对发送至所述代码仓库的所述代码进行编译打包后得到相应的制品,并利用所述打包工具中部署的预设容器镜像定义文件模板生成与所述制品对应的容器镜像,还包括:
利用打包工具对所述应用代码进行编译打包以得到所述应用代码的制品,并利用所述打包工具中部署的预设容器镜像定义文件模板对得到的所述应用代码的制品以及所述部署文件目录进行打包以得到所述容器镜像。
可选的,所述利用基于部署触发工具确定的镜像同步触发逻辑对第二环境的镜像仓库与所述第一环境的镜像仓库进行镜像同步操作,以便于所述第二环境的镜像仓库获取所述第一环境的镜像仓库推送的所述容器镜像,包括:
基于镜像信息来确定是否触发所述第二环境的镜像仓库与所述第一环境的镜像仓库之间的镜像同步操作;其中,所述镜像信息是用户在所述部署触发工具提供的页面中输入的当前需要部署的所述容器应用的镜像信息,包括所述镜像名称以及版本号。
可选的,所述基于镜像信息来确定是否触发所述第二环境的镜像仓库与所述第一环境的镜像仓库之间的镜像同步操作,包括:
判断所述第二环境的镜像仓库中是否存在用户在所述部署触发工具提供的页面中输入的当前需要部署的所述容器应用的镜像信息;
若不存在,则触发所述第二环境的镜像仓库与所述第一环境的镜像仓库之间的镜像同步操作,以便于所述第二环境的镜像仓库获取所述第一环境的镜像仓库推送的所述容器镜像。
可选的,所述第二环境的镜像仓库获取所述第一环境的镜像仓库推送的所述容器镜像之后,还包括:
通过所述第二环境利用基于预设的容器运行指令运行的临时容器对所述容器镜像中的所述部署文件目录进行复制,并将复制得到的所述部署文件目录推送至所述第二环境的镜像仓库。
可选的,所述利用部署执行工具执行所述第二环境获取到的所述容器镜像中包含的所述主执行脚本,以实现容器应用在容器集群中的自动部署,包括:
基于所述部署执行工具中加入的环境变量的取值来确定当前环境,并执行与所述当前环境对应的所述部署文件目录中的所述主执行脚本,以实现容器应用在容器集群中的自动部署。
第二方面,本申请公开了一种容器应用自动部署装置,包括
容器镜像发送模块,用于利用打包工具将发送至代码仓库的代码进行编译打包以得到容器镜像,并将所述容器镜像发送至第一环境的镜像仓库;所述代码包括应用代码以及位于部署文件目录中的主执行脚本和符合部署需求数量的部署描述文件;
容器镜像获取模块,用于利用基于部署触发工具确定的镜像同步触发逻辑对第二环境的镜像仓库与所述第一环境的镜像仓库进行镜像同步操作,以便于所述第二环境的镜像仓库获取所述第一环境的镜像仓库推送的所述容器镜像;
自动部署实现模块,用于利用部署执行工具执行所述第二环境获取到的所述容器镜像中包含的所述主执行脚本,以实现容器应用在容器集群中的自动部署。
第三方面,本申请公开了一种电子设备,包括:
存储器,用于保存计算机程序;
处理器,用于执行所述计算机程序,以实现前述公开的所述的容器应用自动部署方法的步骤。
第四方面,本申请公开了一种计算机可读存储介质,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现前述公开的所述的容器应用自动部署方法的步骤。
本申请在进行容器应用自动部署时,先利用打包工具将发送至代码仓库的代码进行编译打包以得到容器镜像,并将所述容器镜像发送至第一环境的镜像仓库;所述代码包括应用代码以及位于部署文件目录中的主执行脚本和符合部署需求数量的部署描述文件;然后利用基于部署触发工具确定的镜像同步触发逻辑对第二环境的镜像仓库与所述第一环境的镜像仓库进行镜像同步操作,以便于所述第二环境的镜像仓库获取所述第一环境的镜像仓库推送的所述容器镜像;最终利用部署执行工具执行所述第二环境获取到的所述容器镜像中包含的所述主执行脚本,以实现容器应用在容器集群中的自动部署。可见,本申请通过将不同环境的部署文件与应用代码放在一起,做到代码和部署统一版本管理;并利用容器镜像的特点,把部署文件和代码打包到一个镜像中,实现镜像即部署。之后利用部署触发工具以及部署执行工具在同一环境下操作容器集群,避免了跨环境调用应用程序编程接口,将跨环境的交互简化为容器镜像文件的传输,有效提高了隔离性及安全性,同时降低了部署风险。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请提供的一种容器应用自动部署方法流程图;
图2为本申请提供的发送至代码仓库的代码中包含的具体内容示意图;
图3为本申请提供的一种具体的容器应用自动部署方法流程图;
图4为本申请提供的一种具体的容器应用自动部署方法流程图;
图5为本申请提供的一种容器应用自动部署方法流程图;
图6为本申请提供的一种容器应用自动部署装置结构示意图;
图7为本申请提供的一种电子设备结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在现有技术中,针对容器应用在多个环境之间自动化部署的解决方案,一般是采用持续集成和持续部署流水线(简称CI/CD流水线)来完成。但是让CI/CD流水线去调用不同环境的K8S应用程序编程接口实现应用的部署,是相对不安全的,且不同环境的部署描述文件是有区别的,容器应用无法自动实现多环境的部署。为此本申请提供了一种容器应用自动部署方法,能够实现容器应用在多个环境之间的自动部署。
参见图1所示,本发明实施例公开了一种容器应用自动部署方法,包括:
步骤S11、利用打包工具将发送至代码仓库的代码进行编译打包以得到容器镜像,并将所述容器镜像发送至第一环境的镜像仓库;所述代码包括应用代码以及位于部署文件目录中的主执行脚本和符合部署需求数量的部署描述文件。
本实施例中,发送至所述代码仓库的代码包含了两部分,一部分是应用自身的代码文件,另一部分是部署文件目录,这样就可以将部署文件与应用代码放在一起进行管理。其中,配置文件目录中包含了一个主执行脚本,以及各个环境的部署描述文件。每个环境都是一个单独的目录,例如DEV(Development environment,开发环境)环境、PROD(Production environment,生产环境)环境,这些目录下对应着该环境的部署描述文件。在一种具体的实施例中,在K8S环境中支持的资源对象文件如图2所示,其中这些文件,根据实际的部署需求,可以只有一个,也可以有多个。需要指出的是,这其中主执行脚本是这些文件的使用顺序以及使用方法,它定义了如何去调用容器编排管理工具完成部署,一个典型的示例如下所示:
#!/bin/bash
kubectl apply-f 1.yaml
kubectl apply-f 2.yaml
这样一来,通过将应用代码以及部署文件目录一起发送至代码仓库,实现了代码与部署统一管理,是后续容器应用自动化部署的基础。
本实施例中,将代码发送至代码仓库后,利用所述打包工具对代码仓库中的所述代码进行编译打包,并利用镜像构建工具将编译打包后的制品打包成一个容器镜像,最后将所述容器镜像推送到所述第一环境的镜像仓库中。这样一来,容器镜像中也包含了应用运行文件及部署文件。
步骤S12、利用基于部署触发工具确定的镜像同步触发逻辑对第二环境的镜像仓库与所述第一环境的镜像仓库进行镜像同步操作,以便于所述第二环境的镜像仓库获取所述第一环境的镜像仓库推送的所述容器镜像。
本实施例中,在每一个环境中都分别部署有一个镜像仓库,镜像仓库只存储静态的容器镜像,如果在跨环境之间的镜像仓库便可以进行镜像同步,可以理解的这是一种类似于文件传输的方式。在这里关于镜像同步的触发逻辑便是由第二环境中的部署触发工具决定的,它是采用了一种“拉”的方式。具体的实施步骤包括:基于镜像信息来确定是否触发所述第二环境的镜像仓库与所述第一环境的镜像仓库之间的镜像同步操作;其中,所述镜像信息是用户在所述部署触发工具提供的页面中输入的当前需要部署的所述容器应用的镜像信息,包括所述镜像名称以及版本号。部署触发工具提供一个网页界面,用户便向界面中输入需要部署的应用的镜像名称及版本号;之后若所述第二环境镜像仓库中不存在所述镜像信息,则从第一环境镜像仓库拉取容器镜像,推送到所述第二镜像仓库,进而实现了第二环境的镜像仓库与所述第一环境的镜像仓库之间的镜像同步,使得所述第二环境的镜像仓库获取所述第一环境的镜像仓库推送的所述容器镜像。
步骤S13、利用部署执行工具执行所述第二环境获取到的所述容器镜像中包含的所述主执行脚本,以实现容器应用在容器集群中的自动部署。
本实施例中,在所述第二环境的镜像仓库获取所述第一环境的镜像仓库推送的所述容器镜像之后,便可利用部署执行工具将容器镜像拉取到本地及推送到目标环境镜像仓库,其中主要利用到所述第二环境获取到的所述容器镜像中包含的所述主执行脚本,通过这个便可以知道部署执行工具使用哪些部署文件,进而实现容器应用在容器集群中的自动部署。
可见,本申请在进行容器应用自动部署时,先利用打包工具将发送至代码仓库的代码进行编译打包以得到容器镜像,并将所述容器镜像发送至第一环境的镜像仓库;所述代码包括应用代码以及位于部署文件目录中的主执行脚本和符合部署需求数量的部署描述文件;然后利用基于部署触发工具确定的镜像同步触发逻辑对第二环境的镜像仓库与所述第一环境的镜像仓库进行镜像同步操作,以便于所述第二环境的镜像仓库获取所述第一环境的镜像仓库推送的所述容器镜像;最终利用部署执行工具执行所述第二环境获取到的所述容器镜像中包含的所述主执行脚本,以实现容器应用在容器集群中的自动部署。综上,本申请通过将不同环境的部署文件与应用代码放在一起,做到代码和部署统一版本管理;并利用容器镜像的特点,把部署文件和代码打包到一个镜像中,实现镜像即部署。之后利用部署触发工具以及部署执行工具在同一环境下操作容器集群,避免了跨环境调用应用程序编程接口,将跨环境的交互简化为容器镜像文件的传输,有效提高了隔离性及安全性,同时降低了部署风险。
参见图3所示,本发明实施例公开了一种具体的容器应用自动部署方法,相对于上一实施例,本实施例对技术方案作了进一步说明和优化。
步骤S21、利用打包工具对发送至代码仓库的代码进行编译打包后得到相应的制品,并利用所述打包工具中部署的预设容器镜像定义文件模板生成与所述制品对应的容器镜像。
本实施例中,利用打包工具对所述应用代码进行编译打包以得到所述应用代码的制品,并利用所述打包工具中部署的预设容器镜像定义文件模板对得到的所述应用代码的制品以及所述部署文件目录进行打包以得到所述容器镜像。可以理解的是,上述应用代码以及部署文件提交到代码仓库后,由打包工具进行编译打包,打包的制品分为两部分,一部分是应用代码的制品,如Java应用的war文件,一部分是部署文件的制品,这里直接将部署文件原样输出。需要指出的是,制品是指源码编译打包生成的二进制文件。然后根据在打包工具中配置容器镜像定义文件模板,将制品打包成一个容器镜像。这样容器镜像中也包含了应用运行文件及部署文件。最后将该镜像推送到第一环境的镜像仓库。
步骤S22、判断第二环境的镜像仓库中是否存在用户在部署触发工具提供的页面中输入的当前需要部署的容器应用的镜像信息。
本实施例中,用户在部署触发工具提供的页面中输入的当前需要部署的容器应用的镜像信息之后,根据输入的所述镜像信息即镜像名称以及版本号,先检查输入的版本号在第二环境的镜像仓库中是否存在。这样一来,便能快速准确的知道需要传输的容器镜像,进而准确的进行传递。
步骤S23、若不存在,则触发所述第二环境的镜像仓库与第一环境的镜像仓库之间的镜像同步操作,以便于所述第二环境的镜像仓库获取所述第一环境的镜像仓库推送的所述容器镜像。
本实施例中,若不存在,则从第一环境镜像仓库拉取容器镜像,并将拉去的所述容器镜像推送到生产镜像仓库。即触发了所述第二环境的镜像仓库与第一环境的镜像仓库之间的镜像同步操作,以便于所述第二环境的镜像仓库获取所述第一环境的镜像仓库推送的所述容器镜像。可以理解的是,上述拉取到推送的过程便相当于文件传输的过程,即将处于第一环境镜像仓库的所述容器镜像传输到所述第二环境容器镜像,令第二环境容器镜像中也有了所述容器镜像,从而实现了跨环境的之间的镜像传递。
步骤S24、利用部署执行工具执行所述第二环境获取到的所述容器镜像中包含的主执行脚本,以实现容器应用在容器集群中的自动部署。
可见,本实施例通过判断第二环境的镜像仓库中是否存在用户在部署触发工具提供的页面中输入的当前需要部署的容器应用的镜像信息,来准确定位需要传输的容器镜像,这样一来,所述第二环境的镜像仓库与第一环境的镜像仓库进行镜像同步操作时,使得所述第二环境的镜像仓库准确的获取所述第一环境的镜像仓库推送的所述容器镜像,进而配合相关功能模块触发当前环境的应用自动部署。
参见图4所示,本发明实施例公开了一种具体的容器应用自动部署方法,相对于上一实施例,本实施例对技术方案作了进一步说明和优化。
步骤S31、利用打包工具将发送至代码仓库的代码进行编译打包以得到容器镜像,并将所述容器镜像发送至第一环境的镜像仓库;所述代码包括应用代码以及位于部署文件目录中的主执行脚本和符合部署需求数量的部署描述文件。
步骤S32、利用基于部署触发工具确定的镜像同步触发逻辑对第二环境的镜像仓库与所述第一环境的镜像仓库进行镜像同步操作,以便于所述第二环境的镜像仓库获取所述第一环境的镜像仓库推送的所述容器镜像。
步骤S33、通过所述第二环境利用基于预设的容器运行指令运行的临时容器对所述容器镜像中的所述部署文件目录进行复制,并将复制得到的所述部署文件目录推送至所述第二环境的镜像仓库。
本实施例中,通过上一步的镜像拉取,可以把容器镜像拉取到本地及推送到目标环境镜像仓库,具体过程包括:根据本地拉取的容器镜像,通过容器运行指令,例如dockerrun,运行一个临时容器,然后使用拷贝命令将容器里面的部署文件拷贝出来,最后再销毁该临时容器。在这之后,部署执行工具可以直接操作当前环境的容器集群,通过执行部署文件中的主脚本,实现容器应用在容器集群中的自动部署。
步骤S34、基于所述部署执行工具中加入的环境变量的取值来确定当前环境,并执行与所述当前环境对应的所述部署文件目录中的所述主执行脚本,以实现容器应用在容器集群中的自动部署。
本实施例中,由于部署文件中包含多个环境的脚本,部署执行工具需要知道执行哪个目录下的脚本,所以在不同环境的部署执行工具中加入一个环境变量,例如加入DEPLOY_ENV,便可根据此环境变量确定出对应的环境。由于不同环境的取值不同,这样部署执行工具通过读取环境变量,就可以知道使用哪些部署文件,并执行与所述当前环境对应的所述部署文件目录中的所述主执行脚本,这样便可准确进行容器应用在容器集群中的自动部署。
综上,本实施例先利用打包工具将发送至代码仓库的代码进行编译打包以得到容器镜像,并将所述容器镜像发送至第一环境的镜像仓库;所述代码包括应用代码以及位于部署文件目录中的主执行脚本和符合部署需求数量的部署描述文件,利用基于部署触发工具确定的镜像同步触发逻辑对第二环境的镜像仓库与所述第一环境的镜像仓库进行镜像同步操作,以便于所述第二环境的镜像仓库获取所述第一环境的镜像仓库推送的所述容器镜像,通过所述第二环境利用基于预设的容器运行指令运行的临时容器对所述容器镜像中的所述部署文件目录进行复制,并将复制得到的所述部署文件目录推送至所述第二环境的镜像仓库,最后基于所述部署执行工具中加入的环境变量的取值来确定当前环境,并执行与所述当前环境对应的所述部署文件目录中的所述主执行脚本,以实现容器应用在容器集群中的自动部署。可见,本申请通过将不同环境的部署文件与应用代码放在一起,做到代码和部署统一版本管理;并利用容器镜像的特点,把部署文件和代码打包到一个镜像中,实现镜像即部署。之后利用部署触发工具以及部署执行工具在同一环境下操作容器集群,避免了跨环境调用应用程序编程接口,将跨环境的交互简化为容器镜像文件的传输,有效提高了隔离性及安全性,同时降低了部署风险。
针对容器应用在多个环境之间自动化部署的一般解决方案是采用持续集成和持续部署流水线(简称CI/CD流水线)来完成,CI/CD流水线在各个企业的落地方式因实际情况而异。例如,但在K8S环境下,一种典型的实现方式为:用户往代码仓库中提交代码,然后使用相关工具(如Jenkins)进行打包编译形成制品,然后再编写容器镜像定义文件(如Dockerfile)。利用容器镜像定义文件可以构建容器镜像,构建完成后需要把镜像推送到镜像仓库,这样应用的版本包就已经具备了。然后再编写及修改部署描述文件(YAML文件),部署描述文件中定义了应用部署的参数信息,如镜像版本、资源配额、实例个数、服务名称等。当然,不同环境(开发、测试、生产)所需要的部署描述文件不同,因此在这里,CI/CD流水线必须要处理部署描述文件的差异,一般的做法是让用户在部署前手动确认一下需要发布到哪个环境,然后不同的环境让用户填写不同的参数信息。有了部署描述文件后,CI/CD流水线就可以去调用对应实际环境的K8S应用程序接口,实现容器应用的部署。然而,由于应用部署往往存在多个环境,尤其在金融行业,这些环境都是有隔离要求或安全管控的。不同环境之间的镜像传递一般被认为是相对安全的,但是让CI/CD流水线去调用不同环境的K8S应用程序编程接口来实现应用的部署,是相对不安全的,需要尽力避免开发环境直接操作生产环境的应用程序接口的场景出现,且容器镜像在多个环境之间流转是一致的,部署描述文件却是不一致的,容器镜像虽然能屏蔽运行环境依赖的差异,但是无法屏蔽不同环境部署参数的差异,例如不同环境的应用配置文件不同、容器CPU或内存资源不同等。导致跨环境的镜像传递后,还需要额外做一些工作才能将应用正确部署,因此在镜像打包后,无法自动实现多环境的部署。
为了解决上述问题,本申请通过如图5所示的一种实施例解释说明了一种具体的容器应用自动部署方法,特别利用了应用代码/部署文件、部署触发工具以及部署执行工具这些元素,通过将应用代码以及多个部署描述文件一起发送至代码仓库,再利用打包工具以及镜像构建工具,将包含应用代码以及多个部署描述文件的容器镜像发送至开发环境的镜像仓库。之后利用部署触发工具触发不同环境之间的镜像同步,最终利用部署执行工具通过执行部署文件中的主脚本,实现容器应用在容器集群中的自动部署。这样一来通过将容器应用的部署描述文件内嵌于容器镜像中并统一管理,采用跨环境镜像同步的方式,每个环境都有一套独立的镜像仓库,使得镜像可以在多个环境之间同步。镜像同步成功后,可配合相关功能模块触发当前环境的应用自动部署,无需再跨环境调用API,进而提高部署效率,降低部署风险。
参见图6所示,本申请实施例公开了一种容器应用自动部署装置,包括:
容器镜像发送模块11,用于利用打包工具将发送至代码仓库的代码进行编译打包以得到容器镜像,并将所述容器镜像发送至第一环境的镜像仓库;所述代码包括应用代码以及位于部署文件目录中的主执行脚本和符合部署需求数量的部署描述文件;
容器镜像获取模块12,用于利用基于部署触发工具确定的镜像同步触发逻辑对第二环境的镜像仓库与所述第一环境的镜像仓库进行镜像同步操作,以便于所述第二环境的镜像仓库获取所述第一环境的镜像仓库推送的所述容器镜像;
自动部署实现模块13,用于利用部署执行工具执行所述第二环境获取到的所述容器镜像中包含的所述主执行脚本,以实现容器应用在容器集群中的自动部署。
可见,本申请在进行容器应用自动部署时,先利用打包工具将发送至代码仓库的代码进行编译打包以得到容器镜像,并将所述容器镜像发送至第一环境的镜像仓库;所述代码包括应用代码以及位于部署文件目录中的主执行脚本和符合部署需求数量的部署描述文件;然后利用基于部署触发工具确定的镜像同步触发逻辑对第二环境的镜像仓库与所述第一环境的镜像仓库进行镜像同步操作,以便于所述第二环境的镜像仓库获取所述第一环境的镜像仓库推送的所述容器镜像;最终利用部署执行工具执行所述第二环境获取到的所述容器镜像中包含的所述主执行脚本,以实现容器应用在容器集群中的自动部署。综上,本申请通过将不同环境的部署文件与应用代码放在一起,做到代码和部署统一版本管理;并利用容器镜像的特点,把部署文件和代码打包到一个镜像中,实现镜像即部署。之后利用部署触发工具以及部署执行工具在同一环境下操作容器集群,避免了跨环境调用应用程序编程接口,将跨环境的交互简化为容器镜像文件的传输,有效提高了隔离性及安全性,同时降低了部署风险。
在一些具体实施例中,所述容器镜像发送模块11,具体包括:
容器镜像生成单元,用于利用打包工具对发送至所述代码仓库的所述代码进行编译打包后得到相应的制品,并利用所述打包工具中部署的预设容器镜像定义文件模板生成与所述制品对应的容器镜像。
在一些具体实施例中,所述容器镜像发送模块11,具体包括:
打包单元,用于利用打包工具对所述应用代码进行编译打包以得到所述应用代码的制品,并利用所述打包工具中部署的预设容器镜像定义文件模板对得到的所述应用代码的制品以及所述部署文件目录进行打包以得到所述容器镜像。
在一些具体实施例中,所述容器镜像获取模块12,具体包括:
镜像同步单元,用于基于镜像信息来确定是否触发所述第二环境的镜像仓库与所述第一环境的镜像仓库之间的镜像同步操作;其中,所述镜像信息是用户在所述部署触发工具提供的页面中输入的当前需要部署的所述容器应用的镜像信息,包括所述镜像名称以及版本号;
判断单元,用于判断所述第二环境的镜像仓库中是否存在用户在所述部署触发工具提供的页面中输入的当前需要部署的所述容器应用的镜像信息;
容器镜像推送单元,用于若不存在,则触发所述第二环境的镜像仓库与所述第一环境的镜像仓库之间的镜像同步操作,以便于所述第二环境的镜像仓库获取所述第一环境的镜像仓库推送的所述容器镜像;
文件目录推送单元,用于通过所述第二环境利用基于预设的容器运行指令运行的临时容器对所述容器镜像中的所述部署文件目录进行复制,并将复制得到的所述部署文件目录推送至所述第二环境的镜像仓库。
在一些具体实施例中,所述自动部署实现模块13,具体包括:
环境确定单元,用于基于所述部署执行工具中加入的环境变量的取值来确定当前环境,并执行与所述当前环境对应的所述部署文件目录中的所述主执行脚本,以实现容器应用在容器集群中的自动部署。
进一步的,本申请实施例还公开了一种电子设备,图7是根据一示例性实施例示出的电子设备20结构图,图中的内容不能认为是对本申请的使用范围的任何限制。
图7为本申请实施例提供的一种电子设备20的结构示意图。该电子设备20,具体可以包括:至少一个处理器21、至少一个存储器22、电源23、通信接口24、输入输出接口25和通信总线26。其中,所述存储器22用于存储计算机程序,所述计算机程序由所述处理器21加载并执行,以实现前述任一实施例公开的容器应用自动部署方法中的相关步骤。另外,本实施例中的电子设备20具体可以为电子计算机。
本实施例中,电源23用于为电子设备20上的各硬件设备提供工作电压;通信接口24能够为电子设备20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本申请技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口25,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
另外,存储器22作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源可以包括操作***221、计算机程序222等,存储方式可以是短暂存储或者永久存储。
其中,操作***221用于管理与控制电子设备20上的各硬件设备以及计算机程序222,其可以是Windows Server、Netware、Unix、Linux等。计算机程序222除了包括能够用于完成前述任一实施例公开的由电子设备20执行的容器应用自动部署方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。
进一步的,本申请还公开了一种计算机可读存储介质,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现前述公开的容器应用自动部署方法。关于该方法的具体步骤可以参考前述实施例中公开的相应内容,在此不再进行赘述。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
最后,还需要说明的是,在本文中,诸如第二和第一等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本申请所提供的技术方案进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种容器应用自动部署方法,其特征在于,包括:
利用打包工具将发送至代码仓库的代码进行编译打包以得到容器镜像,并将所述容器镜像发送至第一环境的镜像仓库;所述代码包括应用代码以及位于部署文件目录中的主执行脚本和符合部署需求数量的部署描述文件;
利用基于部署触发工具确定的镜像同步触发逻辑对第二环境的镜像仓库与所述第一环境的镜像仓库进行镜像同步操作,以便于所述第二环境的镜像仓库获取所述第一环境的镜像仓库推送的所述容器镜像;
利用部署执行工具执行所述第二环境获取到的所述容器镜像中包含的所述主执行脚本,以实现容器应用在容器集群中的自动部署。
2.根据权利要求1所述的容器应用自动部署方法,其特征在于,所述利用打包工具将发送至代码仓库的代码进行编译打包以得到容器镜像,包括:
利用打包工具对发送至所述代码仓库的所述代码进行编译打包后得到相应的制品,并利用所述打包工具中部署的预设容器镜像定义文件模板生成与所述制品对应的容器镜像。
3.根据权利要求2所述的容器应用自动部署方法,其特征在于,所述利用打包工具对发送至所述代码仓库的所述代码进行编译打包后得到相应的制品,并利用所述打包工具中部署的预设容器镜像定义文件模板生成与所述制品对应的容器镜像,还包括:
利用打包工具对所述应用代码进行编译打包以得到所述应用代码的制品,并利用所述打包工具中部署的预设容器镜像定义文件模板对得到的所述应用代码的制品以及所述部署文件目录进行打包以得到所述容器镜像。
4.根据权利要求1所述的容器应用自动部署方法,其特征在于,所述利用基于部署触发工具确定的镜像同步触发逻辑对第二环境的镜像仓库与所述第一环境的镜像仓库进行镜像同步操作,以便于所述第二环境的镜像仓库获取所述第一环境的镜像仓库推送的所述容器镜像,包括:
基于镜像信息来确定是否触发所述第二环境的镜像仓库与所述第一环境的镜像仓库之间的镜像同步操作;其中,所述镜像信息是用户在所述部署触发工具提供的页面中输入的当前需要部署的所述容器应用的镜像信息,包括所述镜像名称以及版本号。
5.根据权利要求4所述的容器应用自动部署方法,其特征在于,所述基于镜像信息来确定是否触发所述第二环境的镜像仓库与所述第一环境的镜像仓库之间的镜像同步操作,包括:
判断所述第二环境的镜像仓库中是否存在用户在所述部署触发工具提供的页面中输入的当前需要部署的所述容器应用的镜像信息;
若不存在,则触发所述第二环境的镜像仓库与所述第一环境的镜像仓库之间的镜像同步操作,以便于所述第二环境的镜像仓库获取所述第一环境的镜像仓库推送的所述容器镜像。
6.根据权利要求1至5任一项所述的容器应用自动部署方法,其特征在于,所述第二环境的镜像仓库获取所述第一环境的镜像仓库推送的所述容器镜像之后,还包括:
通过所述第二环境利用基于预设的容器运行指令运行的临时容器对所述容器镜像中的所述部署文件目录进行复制,并将复制得到的所述部署文件目录推送至所述第二环境的镜像仓库。
7.根据权利要求1所述的容器应用自动部署方法,其特征在于,所述利用部署执行工具执行所述第二环境获取到的所述容器镜像中包含的所述主执行脚本,以实现容器应用在容器集群中的自动部署,包括:
基于所述部署执行工具中加入的环境变量的取值来确定当前环境,并执行与所述当前环境对应的所述部署文件目录中的所述主执行脚本,以实现容器应用在容器集群中的自动部署。
8.一种容器应用自动部署装置,其特征在于,包括:
容器镜像发送模块,用于利用打包工具将发送至代码仓库的代码进行编译打包以得到容器镜像,并将所述容器镜像发送至第一环境的镜像仓库;所述代码包括应用代码以及位于部署文件目录中的主执行脚本和符合部署需求数量的部署描述文件;
容器镜像获取模块,用于利用基于部署触发工具确定的镜像同步触发逻辑对第二环境的镜像仓库与所述第一环境的镜像仓库进行镜像同步操作,以便于所述第二环境的镜像仓库获取所述第一环境的镜像仓库推送的所述容器镜像;
自动部署实现模块,用于利用部署执行工具执行所述第二环境获取到的所述容器镜像中包含的所述主执行脚本,以实现容器应用在容器集群中的自动部署。
9.一种检测模型降误检训练设备,其特征在于,包括:
存储器,用于保存计算机程序;
处理器,用于执行所述计算机程序,以实现如权利要求1至7任一项所述的容器应用自动部署方法。
10.一种计算机可读存储介质,其特征在于,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的容器应用自动部署方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211391294.6A CN115658237A (zh) | 2022-11-08 | 2022-11-08 | 一种容器应用自动部署方法、设备、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211391294.6A CN115658237A (zh) | 2022-11-08 | 2022-11-08 | 一种容器应用自动部署方法、设备、装置、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115658237A true CN115658237A (zh) | 2023-01-31 |
Family
ID=85016646
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211391294.6A Pending CN115658237A (zh) | 2022-11-08 | 2022-11-08 | 一种容器应用自动部署方法、设备、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115658237A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116431277A (zh) * | 2023-03-13 | 2023-07-14 | 浙江海规技术有限公司 | 多地运维容器化方法、装置、计算机设备及存储介质 |
CN116627446A (zh) * | 2023-07-25 | 2023-08-22 | 华控清交信息科技(北京)有限公司 | 一种在k8s容器集群上部署应用的方法、装置和电子设备 |
CN117519912A (zh) * | 2024-01-04 | 2024-02-06 | 之江实验室 | 一种镜像仓库部署的方法、装置、存储介质、设备 |
-
2022
- 2022-11-08 CN CN202211391294.6A patent/CN115658237A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116431277A (zh) * | 2023-03-13 | 2023-07-14 | 浙江海规技术有限公司 | 多地运维容器化方法、装置、计算机设备及存储介质 |
CN116627446A (zh) * | 2023-07-25 | 2023-08-22 | 华控清交信息科技(北京)有限公司 | 一种在k8s容器集群上部署应用的方法、装置和电子设备 |
CN117519912A (zh) * | 2024-01-04 | 2024-02-06 | 之江实验室 | 一种镜像仓库部署的方法、装置、存储介质、设备 |
CN117519912B (zh) * | 2024-01-04 | 2024-04-05 | 之江实验室 | 一种镜像仓库部署的方法、装置、存储介质、设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11599348B2 (en) | Container image building using shared resources | |
CN110413288B (zh) | 应用部署方法、装置、服务器及存储介质 | |
CN115658237A (zh) | 一种容器应用自动部署方法、设备、装置、设备及介质 | |
US9760343B2 (en) | Application builder based on metadata | |
US9367305B1 (en) | Automatic container definition | |
US11389960B2 (en) | Systems and methods for robotic process automation | |
EP3043258A1 (en) | iOS APPLICATION AUTOMATIC COMPILATION METHOD AND SYSTEM | |
US7818733B2 (en) | Improving bundle control in computing environment | |
WO2015199748A1 (en) | Rest service source code generation | |
CN110750243A (zh) | 项目代码开发方法和*** | |
US10459698B2 (en) | Framework for generating adapters in an integrated development environment | |
CN111651169B (zh) | 基于web容器的区块链智能合约运行方法及*** | |
CN111736810A (zh) | 基于jenkins实时任务动态创建docker容器节点执行任务的方法 | |
CN116069341A (zh) | 一种应用程序的自动化部署方法、设备及存储介质 | |
US10896035B1 (en) | Methods of converting APIs into objects and uses thereof | |
CN117112122A (zh) | 一种集群部署方法和装置 | |
CN107918543B (zh) | 安装包生成的方法、装置、计算机设备和存储介质 | |
CN113467790A (zh) | 软件打包方法、装置及可读存储介质 | |
CN112231231B (zh) | 云端服务的调试方法、***及装置 | |
CN111427770B (zh) | 一种资源测试方法及相关设备 | |
CN114020285A (zh) | 一种工业app运行方法及装置 | |
CN114443065A (zh) | 平台部署方法、装置、电子设备和存储介质 | |
CN112685051A (zh) | 自动执行shell脚本的方法、装置、平台及存储介质 | |
CN117093286B (zh) | 插件生成方法、装置、设备及计算机可读存储介质 | |
Mardan et al. | Getting Node. js Apps Production Ready |
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 |