CN116820493A - 一种镜像文件部署方法、***、设备及存储介质 - Google Patents

一种镜像文件部署方法、***、设备及存储介质 Download PDF

Info

Publication number
CN116820493A
CN116820493A CN202310593798.4A CN202310593798A CN116820493A CN 116820493 A CN116820493 A CN 116820493A CN 202310593798 A CN202310593798 A CN 202310593798A CN 116820493 A CN116820493 A CN 116820493A
Authority
CN
China
Prior art keywords
deployment
deployed
image file
preset
configuration file
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
Application number
CN202310593798.4A
Other languages
English (en)
Inventor
周祥龙
魏子重
李锐
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shandong Inspur Science Research Institute Co Ltd
Original Assignee
Shandong Inspur Science Research Institute Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shandong Inspur Science Research Institute Co Ltd filed Critical Shandong Inspur Science Research Institute Co Ltd
Priority to CN202310593798.4A priority Critical patent/CN116820493A/zh
Publication of CN116820493A publication Critical patent/CN116820493A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/62Uninstallation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

本申请公开了一种镜像文件部署方法、***、设备及存储介质,涉及软件开发领域,包括:获取初始代码,利用持续集成流水线进行编译,基于编译后的初始代码构建软件包;基于软件包制作待部署镜像文件,并确定部署配置文件以更新部署配置文件的部署状态信息;监控所述部署状态信息,若监控到部署状态信息为待部署,获取待部署镜像文件,利用预设持续交付控制器将待部署镜像文件部署至kubernetes集群中;所述预设持续交付控制器用于监控待部署镜像文件的部署过程。可以通过持续交付控制器对待部署镜像文件的部署过程进行实时监控,有助于实时获取镜像文件的部署结果,以便在镜像文件部署失败时进行回退,可以提高软件开发生产环境的稳定性。

Description

一种镜像文件部署方法、***、设备及存储介质
技术领域
本发明涉及软件开发领域,特别涉及一种镜像文件部署方法、***、设备及存储介质。
背景技术
软件交付即开发人员将最新版本的软件部署到生产环境的过程。软件交付的过程最初是研发人员完成代码开发后,将包含新功能的源代码推送到代码仓库,手动执行脚本命令对源代码进行编译和构建,形成一个软件包,研发人员将软件包交付给运维人员,运维人员在生产环境中安装最新版本的软件包。以上流程过多的依赖人员在各个环节手动执行多种命令,效率低下且容易产生各种错误。但是随着信息技术的不断发展,软件版本的迭代速度越来越快,因此如何提高软件开发、交付的效率,更快地将新功能和修复推送到生产环境,从而更好地响应客户需求和市场变化成为一个问题。
随着Devops(Development和Operations的组合词,是一组过程、方法与***的统称)理念、云原生环境以及各种持续集成、持续交付工具的流行,研发、交付的效率大大提升,解决了上述手动执行多种命令进行软件交付的问题,但是也带来了一些新的问题。传统的持续交付是通过在持续交付流水线中配置生产环境的kubernetes(开源的一个容器编排引擎,支持自动化部署)集群访问密钥,持续交付流水线通过访问密钥连接生产环境的kubernetes api(通过超文本传输协议提供的基于资源的编程接口),将最新版本的软件镜像文件部署到生产环境中。但是这种交付方法会产生用户生产环境kubernetes密钥的泄漏的风险,同时如果用户拥有多个kubernetes集群环境也会带来一些管理困难的问题。而且传统持续交付流程中,安装的操作由kubernetes集群自带的控制器进行安装,当镜像安装失败后,持续交付流水线无法对安装失败的结果进行回退操作,影响了用户生产环境的稳定性。因此,如何提高镜像文件部署过程中的环境稳定性是本领域有待解决的问题。
发明内容
有鉴于此,本发明的目的在于提供一种镜像文件部署方法、***、设备及存储介质,可以通过持续交付控制器对待部署镜像文件的部署过程进行实时监控,有助于实时获取镜像文件的部署结果,以便在镜像文件部署失败时进行回退,可以提高软件开发生产环境的稳定性。其具体方案如下:
第一方面,本申请提供了一种镜像文件部署方法,包括:
获取初始代码,利用预设持续集成流水线对所述初始代码进行编译,以基于编译后的所述初始代码构建软件包;
基于所述软件包制作待部署镜像文件,并从预设配置文件库中确定所述待部署镜像文件对应的部署配置文件,以更新所述部署配置文件的部署状态信息;
持续监控所述部署配置文件的部署状态信息,若监控到所述部署配置文件的部署状态信息为待部署,则根据所述部署配置文件获取所述待部署镜像文件,并利用预设持续交付控制器调用预设kubernetes集群的镜像部署接口将所述待部署镜像文件部署至所述预设kubernetes集群中;所述预设持续交付控制器用于监控所述待部署镜像文件的部署过程。
可选的,所述获取初始代码,利用预设持续集成流水线对所述初始代码进行编译,以基于编译后的所述初始代码构建软件包,还包括:
若检测到所述初始代码发生变化,则通过webhook回调方式,调用所述预设持续集成流水线的预设持续集成工具接口获取变化后的目标代码,并对所述目标代码进行编译。
可选的,所述基于所述软件包制作待部署镜像文件之后,还包括:
将所述待部署镜像文件保存至预设镜像文件库中;
相应的,所述根据所述部署配置文件获取所述待部署镜像文件,包括:
根据所述部署配置文件从所述预设镜像文件库中获取所述待部署镜像文件。
可选的,所述从预设配置文件库中确定所述待部署镜像文件对应的部署配置文件,以更新所述部署配置文件的部署状态信息,包括:
从预设配置文件库中确定所述待部署镜像文件对应的部署配置文件,将所述部署配置文件的所述部署状态信息更新为待部署,并更新所述部署配置文件对应的镜像文件版本号。
可选的,所述将所述待部署镜像文件部署至所述预设kubernetes集群中,还包括:
若监控到所述待部署镜像文件部署过程中所述部署配置文件发生变更,则从所述预设配置文件库中确定变更后的部署配置文件,并根据所述变更后的部署配置文件确定对应的目标待部署镜像文件,以便将所述目标待部署镜像文件部署至所述预设kubernetes集群中。
可选的,所述将所述待部署镜像文件部署至所述预设kubernetes集群中,包括:
利用所述预设持续交付控制器监控所述待部署镜像文件的部署过程;
若监控到所述待部署镜像文件部署失败,利用所述预设持续交付控制器更新所述待部署镜像文件的部署状态信息为部署失败。
可选的,所述持续监控所述部署配置文件的部署状态信息,包括:
若监控到所述待部署镜像文件的部署状态信息为部署失败,则从所述预设配置文件库中确定上一次所述部署状态信息为部署成功的目标部署配置文件,并重复所述目标部署配置文件的部署过程。
第二方面,本申请提供了一种镜像文件部署***,包括:
代码版本管理模块,用于获取初始代码,利用预设持续集成流水线对所述初始代码进行编译,以基于编译后的所述初始代码构建软件包;
持续集成模块,用于基于所述软件包制作待部署镜像文件,并从预设配置文件库中确定所述待部署镜像文件对应的部署配置文件,以更新所述部署配置文件的部署状态信息;
状态同步监控模块,用于持续监控所述部署配置文件的部署状态信息,若监控到所述部署配置文件的部署状态信息为待部署,则根据所述部署配置文件获取所述待部署镜像文件;
持续交付控制器模块,用于利用预设持续交付控制器调用预设kubernetes集群的镜像部署接口将所述待部署镜像文件部署至所述预设kubernetes集群中;所述预设持续交付控制器用于监控所述待部署镜像文件的部署过程。
第三方面,本申请提供了一种电子设备,其特征在于,所述电子设备包括处理器和存储器;其中,所述存储器用于存储计算机程序,所述计算机程序由所述处理器加载并执行以实现如权利要求1至7任一项所述的镜像文件部署方法。
第四方面,本申请提供了一种计算机可读存储介质,其特征在于,用于保存计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的镜像文件部署方法。
本申请获取初始代码,利用预设持续集成流水线对所述初始代码进行编译,以基于编译后的所述初始代码构建软件包;基于所述软件包制作待部署镜像文件,并从预设配置文件库中确定所述待部署镜像文件对应的部署配置文件,以更新所述部署配置文件的部署状态信息;持续监控所述部署配置文件的部署状态信息,若监控到所述部署配置文件的部署状态信息为待部署,则根据所述部署配置文件获取所述待部署镜像文件,并利用预设持续交付控制器调用预设kubernetes集群的镜像部署接口将所述待部署镜像文件部署至所述预设kubernetes集群中;所述预设持续交付控制器用于监控所述待部署镜像文件的部署过程。这样一来,本申请可以通过持续交付控制器对待部署镜像文件的部署过程进行实时监控,有助于实时获取镜像文件的部署结果,以便在镜像文件部署失败时进行回退,避免通过kubernetes集群自带的控制器进行安装导致的当镜像安装失败时无法获取到镜像安装的结果和失败信息的情况,可以提高软件开发生产环境的稳定性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请提供的一种镜像文件部署方法流程图;
图2为本申请提供的一种具体的镜像文件部署方法流程图;
图3为本申请提供的一种镜像文件部署装置结构示意图;
图4为本申请提供的一种电子设备结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
传统的镜像文件持续交付通过在持续交付流水线中配置生产环境的kubernetes集群访问密钥,通过访问密钥连接生产环境的kubernetes api,将最新版本的软件镜像文件部署到生产环境中,容易产生用户生产环境密钥的泄漏风险,并且传统持续交付流程中由kubernetes集群自带的控制器进行安装,无法获取到镜像安装的结果和失败信息。本申请公开了一种镜像文件部署方法和***,用于kubernetes集群环境中镜像文件的持续交付,上述***具体包括持续交付控制器模块,状态同步监控模块,持续集成流水线模块,代码版本管理模块,部署配置管理模块,镜像仓库模块。可以通过持续交付控制器对待部署镜像文件的部署过程进行实时监控,有助于实时获取镜像文件的部署结果,可以提高软件开发生产环境的稳定性。
参见图1所示,本发明实施例公开了一种镜像文件部署方法,其特征在于,包括:
步骤S11、获取初始代码,利用预设持续集成流水线对所述初始代码进行编译,以基于编译后的所述初始代码构建软件包。
本实施例中,首先获取初始代码,然后利用预设持续集成流水线对初始代码进行编译,并基于编译后的初始代码构建软件包。在代码开发人员完成代码的开发后,镜像文件部署***中的代码版本管理模块可以获取代码开发人员推送的代码作为初始代码,然后代码版本管理模块会触发预设持续集成流水线对初始代码进行编译、构建工作,形成一个可运行的软件包。可以理解的是,上述预设持续集成流水线为预先设置好的一种软件开发实践,当开发人员提交代码后,可以触发流水线执行对应的步骤。
需要指出的是,本实施例中,上述代码版本管理模块若检测到初始代码发生变化,则通过webhook(一种基于HTTP的回调接口)回调方式,调用预设持续集成流水线的预设持续集成工具(Jenkins)接口获取变化后的目标代码,并对目标代码进行编译,构建形成一个可运行的软件包。这样一来,可以在初始代码发生变化时及时构建新的软件包进行编译,防止镜像文件部署错误。
步骤S12、基于所述软件包制作待部署镜像文件,并从预设配置文件库中确定所述待部署镜像文件对应的部署配置文件,以更新所述部署配置文件的部署状态信息。
本实施例中,基于上述软件包制作待部署镜像文件,并从预设配置文件库中确定待部署镜像文件对应的部署配置文件,以更新部署配置文件的部署状态信息。可以理解的是,上述预设配置文件库用于保存部署配置文件,并且预设配置文件库位于部署配置管理模块。并且在基于软件包制作待部署镜像文件之后,可以将待部署镜像文件保存至预设镜像文件库中。可以理解的是,上述预设镜像文件库用于保存待部署镜像文件,并且预设镜像文件库位于镜像仓库模块。
本实施例中,通过持续集成流水线模块将软件包制作成镜像文件,并将镜像文件推送到镜像仓库模块中,同时更新部署配置管理模块中的部署配置文件信息,将待部署镜像文件对应的部署配置文件的状态更新为待部署,同时更新配置文件的镜像版本号,完成持续集成过程。可以理解的是,上述部署配置管理模块负责存储部署相关的配置文件,如镜像版本号、镜像仓库模块地址、镜像名称、待部署环境的地址信息、镜像配置信息等不相互配置文件信息。
步骤S13、持续监控所述部署配置文件的部署状态信息,若监控到所述部署配置文件的部署状态信息为待部署,则根据所述部署配置文件获取所述待部署镜像文件,并利用预设持续交付控制器调用预设kubernetes集群的镜像部署接口将所述待部署镜像文件部署至所述预设kubernetes集群中;所述预设持续交付控制器用于监控所述待部署镜像文件的部署过程。
本实施例中,利用状态同步监控模块实时持续监控部署配置管理模块中的所有部署配置文件的部署状态信息,若监控到部署配置文件的部署状态信息为待部署,则状态同步监控模块根据部署配置文件从镜像仓库模块中的预设镜像文件库中拉取待部署镜像文件,并将待部署镜像文件和部署配置文件发送到持续交付控制器模块,以便持续交付控制器模块接收到上述待部署镜像文件和部署配置文件后,利用预设持续交付控制器调用预设kubernetes集群的镜像部署接口将待部署镜像文件部署至预设kubernetes集群中。可以理解的是,上述持续交付控制器模块运行在用户的生产环境中,负责执行镜像文件的部署工作以及部署过程中的状态监控工作,并且上述持续交付控制器并不是kubernetes集群自带的控制器。这样一来,使用持续交付控制器模块中的持续交付控制器进行镜像文件部署过程的监控,有助于实时获取镜像文件的部署结果,可以实时获取镜像文件的部署状态,易于管理,有利于提高镜像文件部署过程的容错率。
通过上述技术方案,本实施例获取初始代码,利用预设持续集成流水线对初始代码进行编译,基于编译后的初始代码构建软件包。基于软件包制作待部署镜像文件,并确定对应的部署配置文件,以更新部署配置文件的部署状态信息。持续监控部署配置文件的部署状态信息,若监控到部署配置文件的部署状态信息为待部署,则根据部署配置文件获取待部署镜像文件,并利用预设持续交付控制器调用预设kubernetes集群的镜像部署接口将待部署镜像文件部署至预设kubernetes集群中。这样一来,本实施例可以通过利用状态同步监控模块实时持续监控部署配置文件的部署状态信息,以及通过持续交付控制器对待部署镜像文件的部署过程进行实时监控,有助于实时获取镜像文件的部署状态与部署结果,可以提高软件开发生产环境的稳定性。
基于上一实施例可知,本申请可以利用预设持续交付控制器调用镜像部署接口将待部署镜像文件部署至预设kubernetes集群中,接下来,本实施例中将对待部署镜像文件的部署过程进行详细地阐述。参见图2所示,本申请实施例公开了一种具体的镜像文件部署方法,包括:
步骤S21、利用预设持续交付控制器持续监控部署配置文件的部署状态信息,若监控到所述部署配置文件的部署状态信息为待部署,则根据所述部署配置文件获取待部署镜像文件,并利用所述预设持续交付控制器调用预设kubernetes集群的镜像部署接口将所述待部署镜像文件部署至所述预设kubernetes集群中。
步骤S22、利用所述预设持续交付控制器监控所述待部署镜像文件的部署过程,若监控到所述待部署镜像文件部署失败,利用所述预设持续交付控制器更新所述待部署镜像文件的部署状态信息为部署失败。
本实施例中,持续交付控制器模块利用预设持续交付控制器监控待部署镜像文件的部署过程,若监控到待部署镜像文件部署失败,利用预设持续交付控制器更新待部署镜像文件的部署状态信息为部署失败。
步骤S23、若监控到所述待部署镜像文件的部署状态信息为部署失败,则从预设配置文件库中确定上一次所述部署状态信息为部署成功的目标部署配置文件,并重复所述目标部署配置文件的部署过程。
本实施例中,若状态同步监控模块监控到某个持续交付控制器模块的待部署镜像文件的部署状态信息为部署失败,则立刻从部署配置管理模块中的预设配置文件库中确定上一次的部署状态信息为部署成功的目标部署配置文件,并重复部署成功的目标部署配置文件的部署过程,这样一来,可以实现部署过程的回退,确保kubernetes生产环境集群的稳定性,完成持续交付的过程。
需要指出的是,若监控到待部署镜像文件部署过程中部署配置文件发生变更,则从预设配置文件库中确定变更后的部署配置文件,并根据变更后的部署配置文件确定对应的目标待部署镜像文件,以便将目标待部署镜像文件部署至预设kubernetes集群中。
其中,关于上述步骤S21更加具体的处理过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
通过上述技术方案,利用预设持续交付控制器持续监控部署配置文件的部署状态信息,若监控到部署状态信息为待部署,则获取待部署镜像文件,并部署至预设kubernetes集群中。然后利用预设持续交付控制器监控待部署镜像文件的部署过程,若监控到待部署镜像文件部署失败,利用预设持续交付控制器更新待部署镜像文件的部署状态信息为部署失败。若监控到待部署镜像文件的部署状态信息为部署失败,则从预设配置文件库中确定上一次部署状态信息为部署成功的目标部署配置文件,并重复目标部署配置文件的部署过程。通过重复部署成功的目标部署配置文件的部署过程,可以实现部署过程的回退,确保kubernetes生产环境集群的稳定性,完成持续交付的过程,可以使持续交付流水线获取到镜像文件安装的结果和失败信息,进而对安装失败的结果进行回退操作,提高用户生产环境的稳定性。
本申请实施例还基于若干台服务器,以Java语言代码开发过程为示例,公开了一种在一个kubernetes集群环境中具体的镜像文件持续交付方法,包括:
本实施例中,首先进行用于镜像文件持续交付的镜像文件***在服务器上的部署,具体包括:在服务器上部署代码版本管理模块,可以理解的是,上述代码版本管理模块基于Git(一个开源的分布式版本控制***)版本控制***,用于存储用户的源代码文件,所述版本控制***库可以使用Gitlab,GitHub等***;在服务器上部署持续集成流水线模块,上述持续集成流水线模块可以是Jenkins(基于Java开发的一种持续集成工具),Gitlab CI(为Gitlab提供的持续集成服务器)等持续集成流水线工具,用于编译、构建用户的源代码,将编译、构建后的代码打包为镜像文件,并将镜像文件推送到镜像仓库模块,上述持续集成流水线模块与代码版本管理模块通过API(Application Programming Interface,应用程序接口)连接,代码版本管理模块可以通过Webhook调用流水线的接口;在服务器上部署镜像仓库模块,所述镜像仓库模块可以是Harbor镜像仓库(一种开源的企业级DockerRegistry项目),上述镜像仓库负责存储镜像文件以及镜像文件的描述信息,如文件名、版本号、唯一标识等;在服务器上部署配置管理模块,上述配置管理模块基于Git版本控制***,用于存储用户的部署配置文件,所述版本控制***可以使用Gitlab,GitHub等***;在服务器上部署状态同步监控模块,上述状态同步监控模块是一个web服务,该web服务通过网络连接到配置管理模块以及持续交付控制器模块,所述状态同步监控模块实时监控配置管理模块的部署配置文件的变更和部署状态,持续交付控制器模块中的部署过程状态。当发现部署配置文件发生变更,或者部署过程发生失败时,状态同步监控模块进行新的镜像部署或者部署回退操作。
在上述模块部署完成后,在用户的kubernetes集群生成环境中,安装持续交付控制器模块,上述持续交付控制器模块是一个web服务,该服务保存了用户kubernetes集群的API密钥,因此可以与用户kubernetes集群的API进行交互,持续交付控制器模块可以通过调用kubernetes集群的API来完成镜像文件的安装,通过持续交付控制器模块同时维持了每一个镜像文件安装过程中的状态。
在进行镜像文件的部署过程中,开发者在个人电脑上进行软件的新版本代码开发工作,当完成最新版本软件代码的开发工作后,将所有的源代码提交到代码版本管理模块即Gitlab代码仓库中,之后将新的代码合并到主分支,并且需要指出的是,当代码版本管理模块检测到主分支的代码发生变化后,通过webhook回调方式,调用持续集成流水线模块Jenkins的接口,持续集成流水线模块从代码版本管理模块拉取到最新的代码,对代码进行编译、构建,形成一个可运行的软件包。然后持续集成流水线模块将软件包打包成一个镜像文件,并将镜像文件发布到镜像仓库Harbor中。持续集成流水线将该软件包最新的镜像版本号以及部署配置信息更新到部署配置管理模块对应的镜像配置文件中,将该镜像部署配置文件的状态更新为待部署。
其中,当部署配置管理模块发现某个部署配置文件发生变动后,通过webhook调用状态同步模块的API接口,将最新的部署配置文件推送到状态同步模块中,以便状态同步模块根据部署配置文件中的内容,从镜像仓库模块中拉取对应的最新版本的镜像文件,将镜像文件以及对应的部署配置信息推送到持续交付控制器模块。若持续交付控制器模块获取到镜像文件、部署镜像所需的配置文件后,根据配置文件中的内容,通过持续交付控制器模块中预先保存的kubernetes集群密钥,调用kubernetes集群API,将最新版本的镜像文件安装到kubernetes集群环境中。
可以理解的是,在持续交付控制器实时监控最新版本镜像文件的安装过程中,若安装新版本镜像失败,则将对应版本的镜像部署状态更新为部署失败。并且状态同步模块通过调用持续交付控制器的API获取镜像安装状态,若发现安装失败状态,则调用部署配置管理模块的API接口,回退对应的部署配置文件到上一个版本,上述回退功能是通过Git命令执行的文件版本回退命令。并且,若部署配置模块检测到配置文件发生了变化,重复上述当部署配置管理模块发现某个部署配置文件发生变动后,通过webhook调用状态同步模块的API接口的步骤,由于上一个版本的配置文件是成功部署过的版本,因此可以将生产环境的kubernetes集群恢复到部署之前的状态。上述重复过程只进行一次配置文件的版本回退,并且回退的版本是上一次成功部署过的版本,若再次部署失败,则不会进行重复操作,从而防止配置文件回退到过早的版本。如果持续交付控制器监测到kubernetes集群成功安装了最新版本的镜像文件,则更新对应镜像的状态为已成功部署,从而完成了软件从源码、到镜像以及镜像最终安装到用户生产kubernetes集群的持续交付过程。
参见图3所示,本申请实施例还公开了一种镜像文件部署***,包括:
代码版本管理模块11,用于获取初始代码,利用预设持续集成流水线对所述初始代码进行编译,以基于编译后的所述初始代码构建软件包;
持续集成模块12,用于基于所述软件包制作待部署镜像文件,并从预设配置文件库中确定所述待部署镜像文件对应的部署配置文件,以更新所述部署配置文件的部署状态信息;
状态同步监控模块13,用于持续监控所述部署配置文件的部署状态信息,若监控到所述部署配置文件的部署状态信息为待部署,则根据所述部署配置文件获取所述待部署镜像文件;
持续交付控制器模块14,用于利用预设持续交付控制器调用预设kubernetes集群的镜像部署接口将所述待部署镜像文件部署至所述预设kubernetes集群中;所述预设持续交付控制器用于监控所述待部署镜像文件的部署过程。
本申请可以获取初始代码,利用预设持续集成流水线对所述初始代码进行编译,以基于编译后的所述初始代码构建软件包;基于所述软件包制作待部署镜像文件,并从预设配置文件库中确定所述待部署镜像文件对应的部署配置文件,以更新所述部署配置文件的部署状态信息;持续监控所述部署配置文件的部署状态信息,若监控到所述部署配置文件的部署状态信息为待部署,则根据所述部署配置文件获取所述待部署镜像文件,并利用预设持续交付控制器调用预设kubernetes集群的镜像部署接口将所述待部署镜像文件部署至所述预设kubernetes集群中;所述预设持续交付控制器用于监控所述待部署镜像文件的部署过程。通过上述技术方案,本申请实施例可以通过持续交付控制器对待部署镜像文件的部署过程进行实时监控,有助于实时获取镜像文件的部署结果,以便在镜像文件部署失败时进行回退,提高软件开发生产环境的稳定性。
在一些具体实施例中,所述代码版本管理模块11,还包括:
代码编译单元,用于若检测到所述初始代码发生变化,则通过webhook回调方式,调用所述预设持续集成流水线的预设持续集成工具接口获取变化后的目标代码,并对所述目标代码进行编译。
在一些具体实施例中,所述持续集成模块12,还包括:
文件保存单元,用于将所述待部署镜像文件保存至预设镜像文件库中;
相应的,所述状态同步监控模块13,具体包括:
文件获取单元,用于根据所述部署配置文件从所述预设镜像文件库中获取所述待部署镜像文件。
在一些具体实施例中,所述持续集成模块12,具体包括:
第一状态更新单元,用于从预设配置文件库中确定所述待部署镜像文件对应的部署配置文件,将所述部署配置文件的所述部署状态信息更新为待部署,并更新所述部署配置文件对应的镜像文件版本号。
在一些具体实施例中,所述持续交付控制器模块14,还包括:
文件部署单元,用于若监控到所述部署镜像文件部署过程中所述部署配置文件发生变更,则从所述预设配置文件库中确定变更后的部署配置文件,并根据所述变更后的部署配置文件确定对应的目标待部署镜像文件,以便将所述目标待部署镜像文件部署至所述预设kubernetes集群中。
在一些具体实施例中,所述持续交付控制器模块14,具体包括:
过程监控单元,用于利用所述预设持续交付控制器监控所述待部署镜像文件的部署过程;
第二状态更新单元,用于若监控到所述待部署镜像文件部署失败,利用所述预设持续交付控制器更新所述待部署镜像文件的部署状态信息为部署失败。
在一些具体实施例中,所述持续交付控制器模块14,具体包括:
配置文件确定单元,用于若监控到所述待部署镜像文件的部署状态信息为部署失败,则从所述预设配置文件库中确定上一次所述部署状态信息为部署成功的目标部署配置文件,并重复所述目标部署配置文件的部署过程。
进一步的,本申请实施例还公开了一种电子设备,图4是根据一示例性实施例示出的电子设备20结构图,图中的内容不能认为是对本申请的使用范围的任何限制。
图4为本申请实施例提供的一种电子设备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.一种镜像文件部署方法,其特征在于,包括:
获取初始代码,利用预设持续集成流水线对所述初始代码进行编译,以基于编译后的所述初始代码构建软件包;
基于所述软件包制作待部署镜像文件,并从预设配置文件库中确定所述待部署镜像文件对应的部署配置文件,以更新所述部署配置文件的部署状态信息;
持续监控所述部署配置文件的部署状态信息,若监控到所述部署配置文件的部署状态信息为待部署,则根据所述部署配置文件获取所述待部署镜像文件,并利用预设持续交付控制器调用预设kubernetes集群的镜像部署接口将所述待部署镜像文件部署至所述预设kubernetes集群中;所述预设持续交付控制器用于监控所述待部署镜像文件的部署过程。
2.根据权利要求1所述的镜像文件持续交付方法,其特征在于,所述获取初始代码,利用预设持续集成流水线对所述初始代码进行编译,以基于编译后的所述初始代码构建软件包,还包括:
若检测到所述初始代码发生变化,则通过webhook回调方式,调用所述预设持续集成流水线的预设持续集成工具接口获取变化后的目标代码,并对所述目标代码进行编译。
3.根据权利要求1所述的镜像文件持续交付方法,其特征在于,所述基于所述软件包制作待部署镜像文件之后,还包括:
将所述待部署镜像文件保存至预设镜像文件库中;
相应的,所述根据所述部署配置文件获取所述待部署镜像文件,包括:
根据所述部署配置文件从所述预设镜像文件库中获取所述待部署镜像文件。
4.根据权利要求1所述的镜像文件持续交付方法,其特征在于,所述从预设配置文件库中确定所述待部署镜像文件对应的部署配置文件,以更新所述部署配置文件的部署状态信息,包括:
从预设配置文件库中确定所述待部署镜像文件对应的部署配置文件,将所述部署配置文件的所述部署状态信息更新为待部署,并更新所述部署配置文件对应的镜像文件版本号。
5.根据权利要求1所述的镜像文件持续交付方法,其特征在于,所述将所述待部署镜像文件部署至所述预设kubernetes集群中,还包括:
若监控到所述待部署镜像文件部署过程中所述部署配置文件发生变更,则从所述预设配置文件库中确定变更后的部署配置文件,并根据所述变更后的部署配置文件确定对应的目标待部署镜像文件,以便将所述目标待部署镜像文件部署至所述预设kubernetes集群中。
6.根据权利要求1至5任一项所述的镜像文件持续交付方法,其特征在于,所述将所述待部署镜像文件部署至所述预设kubernetes集群中,包括:
利用所述预设持续交付控制器监控所述待部署镜像文件的部署过程;
若监控到所述待部署镜像文件部署失败,利用所述预设持续交付控制器更新所述待部署镜像文件的部署状态信息为部署失败。
7.根据权利要求6所述的镜像文件持续交付方法,其特征在于,所述持续监控所述部署配置文件的部署状态信息,包括:
若监控到所述待部署镜像文件的部署状态信息为部署失败,则从所述预设配置文件库中确定上一次所述部署状态信息为部署成功的目标部署配置文件,并重复所述目标部署配置文件的部署过程。
8.一种镜像文件部署***,其特征在于,包括:
代码版本管理模块,用于获取初始代码,利用预设持续集成流水线对所述初始代码进行编译,以基于编译后的所述初始代码构建软件包;
持续集成模块,用于基于所述软件包制作待部署镜像文件,并从预设配置文件库中确定所述待部署镜像文件对应的部署配置文件,以更新所述部署配置文件的部署状态信息;
状态同步监控模块,用于持续监控所述部署配置文件的部署状态信息,若监控到所述部署配置文件的部署状态信息为待部署,则根据所述部署配置文件获取所述待部署镜像文件;
持续交付控制器模块,用于利用预设持续交付控制器调用预设kubernetes集群的镜像部署接口将所述待部署镜像文件部署至所述预设kubernetes集群中;所述预设持续交付控制器用于监控所述待部署镜像文件的部署过程。
9.一种电子设备,其特征在于,所述电子设备包括处理器和存储器;其中,所述存储器用于存储计算机程序,所述计算机程序由所述处理器加载并执行以实现如权利要求1至7任一项所述的镜像文件部署方法。
10.一种计算机可读存储介质,其特征在于,用于保存计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的镜像文件部署方法。
CN202310593798.4A 2023-05-23 2023-05-23 一种镜像文件部署方法、***、设备及存储介质 Pending CN116820493A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310593798.4A CN116820493A (zh) 2023-05-23 2023-05-23 一种镜像文件部署方法、***、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310593798.4A CN116820493A (zh) 2023-05-23 2023-05-23 一种镜像文件部署方法、***、设备及存储介质

Publications (1)

Publication Number Publication Date
CN116820493A true CN116820493A (zh) 2023-09-29

Family

ID=88119490

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310593798.4A Pending CN116820493A (zh) 2023-05-23 2023-05-23 一种镜像文件部署方法、***、设备及存储介质

Country Status (1)

Country Link
CN (1) CN116820493A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117008958A (zh) * 2023-10-08 2023-11-07 富钛字节车载软件(长春)有限公司 基于GitOps的OTA云端持续交付方法、***、设备及存储介质
CN117472397A (zh) * 2023-12-27 2024-01-30 柏科数据技术(深圳)股份有限公司 一种数据镜像控制方法、装置、终端及存储介质

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117008958A (zh) * 2023-10-08 2023-11-07 富钛字节车载软件(长春)有限公司 基于GitOps的OTA云端持续交付方法、***、设备及存储介质
CN117472397A (zh) * 2023-12-27 2024-01-30 柏科数据技术(深圳)股份有限公司 一种数据镜像控制方法、装置、终端及存储介质
CN117472397B (zh) * 2023-12-27 2024-04-05 柏科数据技术(深圳)股份有限公司 一种数据镜像控制方法、装置、终端及存储介质

Similar Documents

Publication Publication Date Title
CN109814879B (zh) 自动化ci/cd项目部署方法、存储介质
CN116820493A (zh) 一种镜像文件部署方法、***、设备及存储介质
US7698391B2 (en) Performing a provisioning operation associated with a software application on a subset of the nodes on which the software application is to operate
CN108170448B (zh) 一种自动化高效进行软件更新版本发布的***
US20220147367A1 (en) Method and System for Automation Tool Set for Server Maintenance Actions
US9250672B2 (en) Cloning target machines in a software provisioning environment
CN110768833A (zh) 基于kubernetes的应用编排部署方法及装置
CN106371881B (zh) 一种用于服务器内程序版本更新的方法和***
WO2011069730A1 (en) A method and system for managing configurations of system management agents in a distributed environment
CN107408046B (zh) 用于跨异构计算环境供应云服务的***和方法
US20100312879A1 (en) Plug-in provisioning integration in a clustered environment
CN111562950B (zh) 一种分布式应用参数动态发布的***及方法
CN109308184B (zh) 一种中间件安装和更新方法、装置及计算机可读存储介质
CN111506322A (zh) 一种自动化集成构建开发部署平台及方法
CN105893545A (zh) 一种高效的Hadoop集群部署方法
EP2805233B1 (en) Installation engine and package format for parallelizable, reliable installations
CN112286636B (zh) 一种基于Docker与SVN的统一配置中心的实现方法
CN113342387A (zh) 一种软件自动升级方法、更新客户端及更新服务器
CN114003312A (zh) 大数据服务组件管理方法、计算机装置及存储介质
US9952953B2 (en) Non-monotonic eventual convergence for desired state configuration
CN112702195A (zh) 网关配置方法、电子设备及计算机可读存储介质
CN112860251A (zh) 一种网站前端构建的方法与***
CN110795105A (zh) 一种配电自动化主站***自动编译部署方法与***
CN112379934B (zh) 一种云计算平台的部署方法及装置、存储介质
US9207928B2 (en) Computer-readable medium, apparatus, and methods of automatic capability installation

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