CN114003343A - 云原生应用构建方法、装置及计算机设备 - Google Patents
云原生应用构建方法、装置及计算机设备 Download PDFInfo
- Publication number
- CN114003343A CN114003343A CN202111288198.4A CN202111288198A CN114003343A CN 114003343 A CN114003343 A CN 114003343A CN 202111288198 A CN202111288198 A CN 202111288198A CN 114003343 A CN114003343 A CN 114003343A
- Authority
- CN
- China
- Prior art keywords
- task
- construction
- pipeline
- container
- cloud
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45575—Starting, stopping, suspending or resuming virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供一种云原生应用构建方法、装置及计算设备,基于Kubernetes云原生技术,灵活实现构建资源的扩容/缩容,易于使用和维护,在有创建任务时再创建相应资源,即监听到基于任务对象所创建的任务运行对象,创建针对任务运行对象的Pod组件,且在Pod组件配置针对任务构建流程的至少一个容器,从而响应针对Pod组件中所述容器的启动指令,执行任务构建流程,完成目标应用的构建,实现了任务运行定义与任务构建流程定义的相互独立,便于任务对象的任务构建流程的复用和共享,且实现Kubernetes应用功能的灵活扩展,满足个性化功能扩展需求。
Description
技术领域
本申请涉及云原生技术领域,更具体地说是涉及一种云原生应用构建方法、装置及计算机设备。
背景技术
云原生是一种在云环境中构建和运行应用程序的方法,在实际应用中,可以通过容器、容器编排、微服务、DevOps等云原生技术构建容错性好、易于管理和便于观察的云原生应用。
目前,kubernetes作为自动化容器编排引擎,已被广泛应用于云原生应用,由于其向下屏蔽底层架构的差异性,有助于实现了基础设施层的标准化和抽象,向上支撑各种业务生态,从而基于云原生Kubernetes,实现容器和应用的自动化部署、自动扩缩容、自动故障恢复等功能,满足应用需求。
其中,对于云原生应用的构建,通常是利用如Jenkins等持续构建工具进行构建,构建工具自身体积庞大,运行时资源消耗高,升级维护困难;且采用脚本语言定义每一个实例的构建流程,将构建流程的配置信息发送至数据库存储,难以实现构建流程的复用和共享,降低了构建的灵活性和效率;且构建过程复杂、学习难度大。
发明内容
有鉴于此,为了解决上述技术问题,本申请提供了以下技术方案:
一方面,本申请提出了一种云原生应用构建方法,所述方法包括:
监听云原生应用平台上预定义的至少一个资源对象的状态变化信息;
依据所述状态变化信息,确定存在基于任务对象所创建的任务运行对象;其中,所述任务对象包括任务构建流程,所述任务运行对象包括运行所引用的所述任务对象需要的配置信息;
创建针对所述任务运行对象的Pod组件,且在所述Pod组件配置针对所述任务构建流程的至少一个容器;
响应针对所述Pod组件中所述容器的启动指令,依据所述配置信息,执行所述任务构建流程,完成目标应用的构建。
可选的,所述方法还包括:
依据所述状态变化信息,确定基于流水线对象所创建的流水线运行对象发生变化;其中,所述流水线对象是指由至少一个任务对象构成的资源对象;
依据变化后的所述流水线运行对象所引用的所述至少一个任务对象,创建对应的任务运行对象;
确定所述任务运行对象运行相应的所述任务对象需要的配置信息。
可选的,所述流水线对象包含的多个任务对象之间的依赖关系和执行顺序通过参数配置方式确定;
配置任一所述任务对象的任务构建流程包含的多个构建步骤之间的执行顺序。
可选的,所述依据所述流水线运行对象所引用的所述至少一个任务对象,创建对应的任务运行对象,包括:
针对所述流水线运行对象所引用的多个任务对象,生成相应的有向无环图,由所述有向无环图表征所述多个任务对象之间的依赖关系;
遍历所述有向无环图,确定当前可被调度的任务对象;
创建所述当前可被调度的任务对象对应的任务运行对象。
可选的,所述在所述Pod组件配置针对所述任务构建流程的至少一个容器,包括:
依据所述任务构建流程包含的多个构建步骤,在所述Pod组件中注入一个初始化容器;
依据所述多个构建步骤的执行顺序,配置所述初始化容器,得到所述多个构建步骤各自对应的容器,以及多个所述容器之间的启动顺序。
可选的,所述响应针对所述Pod组件中所述容器的启动指令,依据所述配置信息,执行所述任务构建流程,包括:
响应针对所述Pod组件中所述容器的启动指令,按照多个所述容器之间的启动顺序依次启动,依据所述配置信息,执行所启动的所述容器对应的构建步骤。
可选的,所述资源对象通过另一种标记语言YAML文件方式进行预定义。
又一方面,本申请还提出了一种云原生应用构建装置,所述装置包括:
监听模块,用于监听云原生应用平台上预定义的至少一个资源对象的状态变化信息;
任务运行对象确定模块,用于依据所述状态变化信息,确定存在基于任务对象所创建的任务运行对象;所述任务对象包括任务构建流程,所述任务运行对象包括运行所引用的所述任务对象需要的配置信息;
Pod组件创建模块,用于创建针对所述任务运行对象的Pod组件,且在所述Pod组件配置针对所述任务构建流程的至少一个容器;
任务构建模块,用于响应针对所述Pod组件中所述容器的启动指令,依据所述配置信息,执行所述任务构建流程,完成目标应用的构建。
又一方面,本申请还提出了一种计算机设备,所述计算机设备包括:
通信接口;
存储设备,用于存储预定义的至少一个资源对象,以及实现如上述的云原生应用构建方法的程序;
任务控制器,用于加载执行所述存储设备存储的程序,实现如上述的云原生应用构建方法。
可选的,所述计算机设备还包括:
构建控制器,用于监听到基于流水线对象所创建的流水线运行对象,依据所述流水线运行对象所引用的所述至少一个任务对象,创建对应的任务运行对象,确定所述任务运行对象运行相应的所述任务对象需要的配置信息;其中,所述流水线对象是指由至少一个任务对象构成的资源对象。
由此可见,本申请提供一种云原生应用构建方法、装置及计算设备,基于Kubernetes云原生技术,灵活实现构建资源的扩容/缩容,易于使用和维护,在有创建任务时再创建相应资源,即监听到基于任务对象所创建的任务运行对象,创建针对任务运行对象的Pod组件,且在Pod组件配置针对任务构建流程的至少一个容器,从而响应针对Pod组件中所述容器的启动指令,依据任务运行对象包含的配置信息,执行任务构建流程,完成目标应用的构建,实现了任务运行定义与任务构建流程定义的相互独立,便于任务对象的任务构建流程的复用和共享,且实现Kubernetes应用功能的灵活扩展,满足个性化功能扩展需求。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1示出了本申请提出的云原生应用构建方法的一可选示例的流程示意图;
图2示出了本申请提出的云原生应用构建方法的又一可选示例的流程示意图;
图3示出了本申请提出的云原生应用构建方法的又一可选示例的流程示意图;
图4示出了本申请提出的云原生应用构建装置的一可选示例的结构示意图;
图5示出了本申请提出的云原生应用构建装置的又一可选示例的结构示意图;
图6示出了为适用于本申请提出的云原生应用构建方法的计算机设备的一可选示例的硬件结构示意图;
图7示出了为适用于本申请提出的云原生应用构建方法的计算机设备的又一可选示例的硬件结构示意图;
图8示出了本申请提出的云原生应用构建方法的应用流程示意图。
具体实施方式
针对背景技术部分的描述可知,现有的持续构建工具通常采用传统的单体架构实现,并不是云原生技术实现的,不能很好的适配云环境,也不能充分利用云的弹性伸缩和扩展性等优势,需要自行实现构建服务的高可用要求。对此,本申请提出一种云原生应用构建方法和系统,在本申请实施例中,所使用的构建工具可以采用云原生技术实现,以充分利用云提供的如弹性伸缩和扩展性等能力,实现云原生应用的持续构建,提高构建的灵活性和效率,简化了构建工具的结构,便于扩展配置,能够更好地满足高可用、高并发的构建场景。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
参照图1,为实现本申请提出的云原生应用构建方法的一可选示例的流程示意图,该方法可以基于Kubernetes集群的云原生技术实现,适用于Kubernetes的应用场景,但并不局限于应用场景类型。本申请实施例提出的该方法可以由计算机设备执行,该计算机设备可以是该应用场景中云服务器。
如图1所示,该方法可以包括:
步骤S11,监听云原生应用平台上预定义的至少一个资源对象的状态变化信息;
在本申请实际应用中,可以基于Kubernetes的云原生技术,通过CRD(CustomResource Definition,自定义资源对象)方式,预先定义应用场景所需的若干类别的资源对象,如Task任务对象、TaskRun任务运行对象、Buildline流水线对象、BuildlineRun流水线运行对象等四类资源对象,但并不局限于这四类资源对象。其中,CRD是Kubernetes提供的一种用来扩展Kubernetes API的方式,通过CRD可以向Kubernetes API增加新的资源类型,实现过程本申请不做详述。
本申请实施例中,Task任务对象可以表示一个构建任务,通常包括依据该任务构建需求可以定义一个或多个构建步骤所组成的任务构建流程,比如编译代码、构建镜像、推送镜像等,本申请对该Task的内容及其预定义实现方法不做限制,可视情况而定。
TaskRun可以表示Task的运行实例,记录任务状态,通常情况下,一个TaskRun可以创建一个对应的Pod组件,并针对该Task的各构建步骤(即任务构建流程)在该Pod组件中配置对应的容器。在实际应用中,TaskRun可以包括运行所引用的Task的任务构建流程需要的配置信息,该配置信息包括但并不局限于TaskRun与所引用的Task之间的引用关系,运行该任务构建流程所需各种资源信息等,针对不同任务对象运行其任务构建流程所需配置信息可能不同,本申请不做一一列举。
本申请实施例中,Pod是Kubernetes中能够创建和部署的最小单元,是一组(一个或多个)容器,这些容器共享存储、网络、以及怎样运行这些容器的声明,本申请对Pod的创建方法不做详述。容器是基于Docker这种开源容器引擎构建的,开发者可以打包应用和依赖包到一个可移植的镜像中,再发布到所需的操作系统上,也可以实现虚拟化,满足应用需求,实现过程本申请不做详述。
由此可见,计算机设备可以通过自定义的控制器监听相应资源对象的变化,如资源对象的创建、修改或者删除等,本申请实施例可以通过监听资源对象的状态变化信息实现,本申请对该状态变化信息的内容不做限制,可视情况而定。
步骤S12,依据该状态变化信息,确定存在基于任务对象所创建的任务运行对象;
结合上文对资源对象的相关描述可知,该任务运行对象包括所引用的任务对象运行需要的配置信息,该任务对象包括任务构建流程,该任务构建流程可以包括该任务对象的一个或多个构建步骤顺次组成,也就是说,本申请可以预先定义该任务对象的构建步骤和各构建步骤的执行顺序,再创建相应的任务运行对象。
基于此,任务控制器监听任务运行对象这一类资源对象的状态变化,来确定是否存在需要创建、修改或删除TaskRun,实现过程本申请不做详述。
可见,本申请实现了任务运行定义与任务构建流程定义的相互独立,便于对任务对象的任务构建流程进行复用和共享,对于不同应用无需重复定义相同的任务对象的任务构建流程,可以直接引用所需任务对象,执行该任务对象包含的任务构建流程即可,提高了应用构建效率。
步骤S13,创建针对该任务运行对象的Pod组件,且在Pod组件配置针对任务构建流程的至少一个容器;
步骤S14,响应针对Pod组件中所述容器的启动指令,依据所创建的任务运行对象包含的配置信息,执行任务构建流程,完成目标应用的构建。
继上文描述,在监听到当前有任务运行对象(TaskRun)这一类资源对象被创建的情况下,计算机设备可以控制创建相应的Pod组件,结合上文对Pod应用的相关描述,为了实现该任务运行对象(TaskRun)所引用的任务对象(Task)包含的构建步骤,在针对该任务对象(Task)创建的Pod组件中,可以配置对应每一个构建步骤的容器,本申请对Pod组件及其中的容器的创建实现方法不做限制。
之后,可以响应启动指令,启动本次创建的Pod组件中的容器,依据引用任务对象的任务运行对象包含的配置信息,来执行构建步骤(即任务构建流程包含的步骤),执行相应的任务对象,完成目标应用的构建。可以理解,在该任务对象(Task)包含的任务构建流程包括多个构建步骤的情况下,可以依据这多个构建步骤的执行顺序,顺次启动相应的容器,如使用Kubernetes的注解和Downward API(即Kubernetes提供的在容器中获取Pod的基本信息的方式,本申请对其工作原理不做详述)跟踪构建步骤的执行状态,确定一个构建步骤的容器执行成功后,按照执行顺序启动下一个构建步骤的容器,以保证任务对象(Task)的各构建步骤正常有序执行,实现过程本申请不做详述。
综上,在本申请实施例中,基于Kubernetes云原生技术,灵活实现构建资源的扩容/缩容,易于使用和维护,在有创建任务时再创建相应资源,且实现了任务运行定义与任务构建流程定义的相互独立,便于构建流程的复用和共享,实现Kubernetes应用功能的灵活扩展,满足个性化功能扩展需求。
参照图2,为实现本申请提出的云原生应用构建方法的又一可选示例的流程示意图,在本申请实施例中,增加描述与预定义的其他类型的资源对象的扩容/缩容,但并不局限于本实施例的描述实现方法。如图2所示,该方法可以包括:
步骤S21,监听云原生应用平台上预定义的至少一个资源对象的状态变化信息;
步骤S22,依据该状态变化信息,确定基于流水线对象所创建的流水线运行对象发生变化;
继上文对预定义的资源对象的描述内容,基于Kubernetes的云原生技术预定义的资源对象还可以包括如上述Buildline流水线对象,其可以表示构建流水线,该流水线可以由一个或多个任务对象(Task)组成,且定义这多个任务对象(Task)之间的依赖关系和执行顺序,实现方法本申请不做详述。可见,本申请预先定义的流水线对象可以指由至少一个任务对象构成的资源对象。
相对应的,对于如上述BuildlineRun流水线运行对象这一类别的资源对象,可以是流水线对象(Buildline)的运行实例,通过创建BuildlineRun来执行构建流水线,生成相应的一条构建记录。本申请对BuildlineRun的定义方法及其内容不做限制。
基于上述分析,本申请实施例中,在依据应用场景需求,预定义相应的流水线对象后,通常需要创建引用该流水线对象包含的各任务对象Task的流水线运行对象(BuildlineRun),这样,计算机设备中定义的控制器监听到这类资源对象发生变化,依据所监听到的状态变化信息,确定流水线运行对象(BuildlineRun)发生创建、修改或删除等变化,实现过程本申请不做限制。
需要说明,在上述流水线对象包含多个任务对象的情况下,可以通过参数配置方式定义多个任务对象之间的依赖关系和执行顺序,实现过程本申请不做详述。
步骤S23,依据变化后的流水线运行对象所引用的至少一个任务对象,创建对应的任务运行对象,确定该任务运行对象运行相应的任务对象需要的配置信息;
本申请实施例中,监听到流水线运行对象(BuildlineRun)发生变化的情况下,由于该变化可能是因更新流水线对象包含的任务对象导致的,所以,本申请可以依据变化后的BuildlineRun所引用的Task,创建相应的TaskRun,实现过程本申请不做详述。
在本申请提出的一些实施例中,如图3所示的TaskRun创建流程示意图,上述步骤S23可以采用但并不局限于图3所示的方法实现,如图3所示,上述步骤S23可以包括但并不局限于以下步骤:
步骤S31,针对流水线运行对象所引用的多个任务对象,生成相应的有向无环图,由有向无环图表征多个任务对象之间的依赖关系;
步骤S32,遍历该有向无环图,确定当前可被调度的任务对象;
步骤S33,创建当前可被调度的任务对象对应的任务运行对象,确定该任务运行对象运行当前可被调度的任务对象需要的配置信息。
可见,本申请可以采用有向无环图技术,来处理不同任务对象Task之间的依赖关系,因此,对于流水线运行对象中的所有任务对象,可以构建一副有向无环图,通过遍历该有向无环图,确定当前可被调度的任务对象,创建相应的任务运行对象,关于有向无环图构建方法本申请不做详述。这样,在任务构建过程中,可以按照该有向无环图,顺次执行各任务对象的构建过程,满足应用需求。
步骤S24,监听到该任务运行对象被创建,创建针对该任务运行对象的Pod组件;
步骤S25,依据该任务运行对象引用的任务对象的多个构建步骤,在Pod组件中注入一个初始化容器;
步骤S26,依据这多个构建步骤的执行顺序,配置该初始化容器,得到这多个构建步骤各自对应的容器,以及多个容器之间的启动顺序;
在确定当前构建的任务对象,即可被调度的任务对象后,本申请提出通过初始化容器(initContainer)来控制该任务对象中各构建步骤的执行顺序。该初始化容器是Kubernetes提供的一种容器类型,用于在启动容器之前启动一个或多个初始化容器,完成容器所需的预置条件。因此,针对该任务对象包含的多个构建步骤,在Pod组件中注入一个初始化容器后,可以通过对初始化容器进行配置,得到执行相应构建步骤的容器,本申请对容器的获取过程不做限制。
步骤S27,响应针对Pod组件中容器的启动指令,按照该启动顺序依次启动多个容器,依据确定的配置信息,执行当前启动的容器对应的构建步骤,完成目标应用的构建。
继上文描述,将创建的TaskRun转化成Pod时,在Pod注入初始化容器,通过初始化容器修改执行构建的容器的启动命令,可以使得该任务对象的多个构建任务按照预设的执行顺序执行,即使得多个容器可以依据所确定的顺序启动,实现过程可以参照但并不局限于上文实施例相应部分的描述,从而保证Task中各构建步骤正常有序执行。
在一些实施例中,对于上文各实施例描述的各资源对象,可以通过另一种标记语言YAML(即一个可读性高,用来表达数据序列化的格式)文件方式进行预定义,即本申请可以预先编写各任务对象Task定义的YAML文件,编写任务运行对象TaskRun定义的YAML文件;编写流水线对象Buildline定义的YAML文件;编写流水线运行对象BuildlineRun定义的YAML文件等,本申请对各资源对象定义的YAML文件的内容及其编写方法不做限制,可视情况而定。
可见,本申请在构建任务过程中通过标准的YAML文件方式定义,相对于Jenkins的脚步定义方式,适配范围更广,有利于基于Kubernetes的底层云资源实现应用扩展,降低运行资源消耗,提高处理灵活性和效率。且如上述分析,本申请独立定义任务运行和任务构建流程,便于实现对各任务对象的任务构建流程的复用和共享。
参照图4,为本申请提出的云原生应用构建装置的一可选示例的结构示意图,如图4所示,该装置可以包括:
监听模块11,用于监听云原生应用平台上预定义的至少一个资源对象的状态变化信息;
可选的,本申请的各类资源对象可以通过另一种标记语言YAML文件方式进行预定义,实现过程可以参照但并不局限于上文方法实施例相应部分的描述,本实施例不做赘述。
任务运行对象确定模块12,用于依据所述状态变化信息,确定存在基于任务对象所创建的任务运行对象;所述任务对象包括任务构建流程,所述任务运行对象包括运行所引用的任务对象需要的配置信息;
Pod组件创建模块13,用于创建针对所述任务运行对象的Pod组件,且在所述Pod组件配置针对所述任务构建流程的至少一个容器;
任务构建模块14,用于响应针对所述Pod组件中所述容器的启动指令,依据所述配置信息,执行所述任务构建流程,完成目标应用的构建。
在又一些实施例中,如图5所示,该装置还可以包括:
流水线运行对象监听模块15,用于依据所述状态变化信息,确定基于流水线对象所创建的流水线运行对象发生变化;其中,所述流水线对象是指由至少一个任务对象构成的资源对象;
任务运行对象创建模块16,用于依据变化后的所述流水线运行对象所引用的所述至少一个任务对象,创建对应的任务运行对象,确定该任务运行对象运行相应任务对象需要的配置信息。
在本申请实际应用中,上述装置还可以包括:
任务对象执行顺序配置模块,用于通过参数配置方式,确定流水线对象包含的多个任务对象之间的依赖关系和执行顺序;并配置任一所述任务对象的任务构建流程包含的多个构建步骤之间的执行顺序。
在一种可能的实现方式中,上述任务运行对象创建模块16可以包括:
有向无环图生成单元,用于针对所述流水线运行对象所引用的多个任务对象,生成相应的有向无环图,由所述有向无环图表征所述多个任务对象之间的依赖关系;
有向无环图遍历单元,用于遍历所述有向无环图,确定当前可被调度的任务对象;
任务运行对象创建单元,用于创建所述当前可被调度的任务对象对应的任务运行对象。
在又一些实施例中,基于上述实施例的描述,上述Pod组件创建模块13可以包括:
初始化容器注入单元,用于依据所述任务构建流程包含的多个构建步骤,在所述Pod组件中注入一个初始化容器;
容器得到单元,用于依据所述多个构建步骤的执行顺序,配置所述初始化容器,得到所述多个构建步骤各自对应的容器,以及多个所述容器之间的启动顺序。
基于此,上述任务构建模块14可以包括:
容器启动单元,用于响应针对所述Pod组件中所述容器的启动指令,按照多个所述容器之间的启动顺序依次启动,依据所述配置信息,执行所启动的所述容器对应的构建步骤。
需要说明的是,关于上述各装置实施例中的各种模块、单元等,均可以作为程序模块存储在存储器中,由处理器执行存储在存储器中的上述程序模块,以实现相应的功能,关于各程序模块及其组合所实现的功能,以及达到的技术效果,可以参照上述方法实施例相应部分的描述,本实施例不再赘述。
本申请还提供了一种存储介质,其上可以存储计算机程序,该计算机程序可以被处理器调用并加载,以实现上述实施例描述的云原生应用构建方法的各个步骤,实现过程可以参照上文方法实施例相应部分的描述,本申请实施例在此不做赘述。
参照图6,为适用于本申请提出的云原生应用构建方法的计算机设备的一可选示例的硬件结构示意图,该计算机设备可以包括但并不局限于具有云计算能力的云服务器,可以基于Kubernetes应用场景确定,如图6所示,该计算机设备可以包括但并不局限于通信接口21、存储设备22和任务控制器23,其中:
通信接口21可以包括通信模块的接口,如GSM模块、WIFI模块、5G/6G(第五代移动通信网络/第六代移动通信网络)模块、GPRS模块等通信模块的数据接口,可以实现与其他设备的数据交互,还可以包括如USB接口、串/并口等接口,用于实现计算机设备内部组成部件之间的数据交互,可以根据该计算机设备的产品类型及其功能需求确定,本申请不做一一详述。
存储设备22可以用于存储预定义的至少一个资源对象,以及实现上述实施例描述的云原生应用构建方法的程序。可以理解,该存储设备22还可以存储该云原生应用构建方法执行过程中产生的各种数据、任务执行结果等,可以依据场景需求确定存储设备22的存储内容,本申请不做一一列举。
本申请实施例中,存储设备22可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件或其他易失性固态存储器件;当然,根据应用需求该存储设备22也可以包括数据库,本申请对数据库类型不作限制。
任务控制器23可以是基于Kubernetes的云原生技术预先定义的,可以假装执行存储设备22存储的程序,以实现相应侧执行的云原生应用构建方法,如监听任务运行对象的变化,在监听到基于任务对象所创建的任务运行对象,可以依据其引用的任务对象,创建Pod,启动容器来运行构建步骤,实现过程不做赘述。
在又一些实施例中,如图7所示,该计算机设备还可以包括构建控制器24,用于监听到基于流水线对象所创建的流水线运行对象,依据所述流水线运行对象所引用的所述至少一个任务对象,创建对应的任务运行对象,以更新所述任务运行对象的状态变化信息,且确定所述任务运行对象运行相应的所述任务对象需要的配置信息;其中,所述流水线对象是指由至少一个任务对象构成的资源对象,实现过程可以参照上文方法实施例相应部分的描述。
基于上述分析,参照图8所示的云原生应用构建方法的流程示意图,本申请基于Kubernetes云原生技术,预先定义Task,TaskRun,Buildline,BuildlineRun四类资源对象,如上述分析,Task和Buildline用于定义构建流程模板;TaskRun和BuildlineRun用于定义Task和Bulidline的运行实例,并构建如上述任务控制器和构建控制器,实现过程本申请不做详述。
如图8所示,构建控制器监听到BuildlineRun对象的变化,可以依据BuildlineRun所引用的Bulidline中的各Task,生成相应的有向无环图,并为Task创建TaskRun。任务控制器监听到TaskRun对象的变化,可以依据该TaskRun对象所引用的Task,创建Pod组件,启动其中容器来运行构建步骤。
最后,需要说明的是,关于上述各实施例中,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的步骤和元素,而这些步骤和元素不构成一个排它性的罗列,方法或者设备也可能包含其它的步骤或元素。由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
其中,在本申请实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,在本申请实施例的描述中,“多个”是指两个或多于两个。
本申请涉及到的术语诸如“第一”、“第二”等仅用于描述目的,用来将一个操作、单元或模块与另一个操作、单元或模块区分开来,而不一定要求或者暗示这些单元、操作或模块之间存在任何这种实际的关系或者顺序。且不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量,由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。
另外,本说明书中各个实施例采用递进或并列的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置、计算机设备而言,由于其与实施例公开的方法对应,所以描述的比较简单,相关之处参见方法部分说明即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种云原生应用构建方法,其特征在于,所述方法包括:
监听云原生应用平台上预定义的至少一个资源对象的状态变化信息;
依据所述状态变化信息,确定存在基于任务对象所创建的任务运行对象;其中,所述任务对象包括任务构建流程,所述任务运行对象包括运行所引用的所述任务对象需要的配置信息;
创建针对所述任务运行对象的Pod组件,且在所述Pod组件配置针对所述任务构建流程的至少一个容器;
响应针对所述Pod组件中所述容器的启动指令,依据所述配置信息,执行所述任务构建流程,完成目标应用的构建。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
依据所述状态变化信息,确定基于流水线对象所创建的流水线运行对象发生变化;其中,所述流水线对象是指由至少一个任务对象构成的资源对象;
依据变化后的所述流水线运行对象所引用的所述至少一个任务对象,创建对应的任务运行对象;
确定所述任务运行对象运行相应的所述任务对象需要的配置信息。
3.根据权利要求2所述的方法,其特征在于,所述流水线对象包含的多个任务对象之间的依赖关系和执行顺序通过参数配置方式确定;
配置任一所述任务对象的任务构建流程包含的多个构建步骤之间的执行顺序。
4.根据权利要求2所述的方法,其特征在于,所述依据所述流水线运行对象所引用的所述至少一个任务对象,创建对应的任务运行对象,包括:
针对所述流水线运行对象所引用的多个任务对象,生成相应的有向无环图,由所述有向无环图表征所述多个任务对象之间的依赖关系;
遍历所述有向无环图,确定当前可被调度的任务对象;
创建所述当前可被调度的任务对象对应的任务运行对象。
5.根据权利要求3所述的方法,其特征在于,所述在所述Pod组件配置针对所述任务构建流程的至少一个容器,包括:
依据所述任务构建流程包含的多个构建步骤,在所述Pod组件中注入一个初始化容器;
依据所述多个构建步骤的执行顺序,配置所述初始化容器,得到所述多个构建步骤各自对应的容器,以及多个所述容器之间的启动顺序。
6.根据权利要求5所述的方法,其特征在于,所述响应针对所述Pod组件中所述容器的启动指令,依据所述配置信息,执行所述任务构建流程,包括:
响应针对所述Pod组件中所述容器的启动指令,按照多个所述容器之间的启动顺序依次启动,依据所述配置信息,执行所启动的所述容器对应的构建步骤。
7.根据权利要求1~6任一项所述的方法,其特征在于,所述资源对象通过另一种标记语言YAML文件方式进行预定义。
8.一种云原生应用构建装置,其特征在于,所述装置包括:
监听模块,用于监听云原生应用平台上预定义的至少一个资源对象的状态变化信息;
任务运行对象确定模块,用于依据所述状态变化信息,确定存在基于任务对象所创建的任务运行对象;所述任务对象包括任务构建流程,所述任务运行对象包括运行所引用的所述任务对象需要的配置信息;
Pod组件创建模块,用于创建针对所述任务运行对象的Pod组件,且在所述Pod组件配置针对所述任务构建流程的至少一个容器;
任务构建模块,用于响应针对所述Pod组件中所述容器的启动指令,依据所述配置信息,执行所述任务构建流程,完成目标应用的构建。
9.一种计算机设备,其特征在于,所述计算机设备包括:
通信接口;
存储设备,用于存储预定义的至少一个资源对象,以及实现如权利要求1-7任一项所述的云原生应用构建方法的程序;
任务控制器,用于加载执行所述存储设备存储的程序,实现如权利要求1-7任一项所述的云原生应用构建方法。
10.根据权利要求9所述的计算机设备,其特征在于,所述计算机设备还包括:
构建控制器,用于监听到基于流水线对象所创建的流水线运行对象,依据所述流水线运行对象所引用的所述至少一个任务对象,创建对应的任务运行对象,确定所述任务运行对象运行相应的所述任务对象需要的配置信息;其中,所述流水线对象是指由至少一个任务对象构成的资源对象。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111288198.4A CN114003343A (zh) | 2021-11-02 | 2021-11-02 | 云原生应用构建方法、装置及计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111288198.4A CN114003343A (zh) | 2021-11-02 | 2021-11-02 | 云原生应用构建方法、装置及计算机设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114003343A true CN114003343A (zh) | 2022-02-01 |
Family
ID=79926428
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111288198.4A Pending CN114003343A (zh) | 2021-11-02 | 2021-11-02 | 云原生应用构建方法、装置及计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114003343A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114706767A (zh) * | 2022-03-24 | 2022-07-05 | 网易(杭州)网络有限公司 | 一种代码覆盖率采集方法、装置及设备 |
-
2021
- 2021-11-02 CN CN202111288198.4A patent/CN114003343A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114706767A (zh) * | 2022-03-24 | 2022-07-05 | 网易(杭州)网络有限公司 | 一种代码覆盖率采集方法、装置及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107515776B (zh) | 业务不间断升级方法、待升级节点和可读存储介质 | |
CN105164644B (zh) | 钩子框架 | |
US8862933B2 (en) | Apparatus, systems and methods for deployment and management of distributed computing systems and applications | |
CN112416524A (zh) | 基于docker和kubernetes离线的跨平台的CI/CD的实现方法及装置 | |
EP2696532A2 (en) | Method, server and system for starting application | |
CN112269640B (zh) | 一种实现容器云组件的生命周期管理的方法 | |
KR20200115020A (ko) | 하이퍼레저 패브릭 네트워크 구축 방법과 컨트롤러 및 저장 매체 | |
CN110096424B (zh) | 测试的处理方法、装置、电子设备及存储介质 | |
CN109889377B (zh) | 基于Openstack的NFV系统中部署VNF的方法和装置 | |
CN110389766B (zh) | HBase容器集群部署方法、系统、设备及计算机可读存储介质 | |
CN114077423A (zh) | 基于移动跨平台的机场app开发容器架构 | |
CN112311605B (zh) | 提供机器学习服务的云平台及方法 | |
CN105183547A (zh) | 一种用户界面的任务调度方法和装置 | |
CN115061717A (zh) | 应用管理方法、应用订阅方法及相关设备 | |
CN111695827A (zh) | 业务流程的管理方法、装置、电子设备及存储介质 | |
CN111796838A (zh) | Mpp数据库自动部署方法及装置 | |
CN111158743B (zh) | 大数据运维管理平台 | |
CN114912897A (zh) | 工作流执行方法、工作流编排方法及电子设备 | |
CN114003343A (zh) | 云原生应用构建方法、装置及计算机设备 | |
CN109597627A (zh) | 一种组件安装方法、装置、存储介质和处理器 | |
CN112565416B (zh) | 基于云原生的大规模边缘安卓设备纳管系统及其纳管方法 | |
CN111522623B (zh) | 组件化软件多进程运行系统 | |
CN111506393B (zh) | 一种基于arm的虚拟化装置及其使用方法 | |
CN111858234A (zh) | 一种任务执行方法、装置、设备、介质 | |
CN112564979A (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 |