CN110768833B - 基于kubernetes的应用编排部署方法及装置 - Google Patents

基于kubernetes的应用编排部署方法及装置 Download PDF

Info

Publication number
CN110768833B
CN110768833B CN201911024568.6A CN201911024568A CN110768833B CN 110768833 B CN110768833 B CN 110768833B CN 201911024568 A CN201911024568 A CN 201911024568A CN 110768833 B CN110768833 B CN 110768833B
Authority
CN
China
Prior art keywords
application
resource
template
kubernets
resources
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
Application number
CN201911024568.6A
Other languages
English (en)
Other versions
CN110768833A (zh
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.)
Beijing Baolande Software Co ltd
Original Assignee
Beijing Baolande Software 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 Beijing Baolande Software Co ltd filed Critical Beijing Baolande Software Co ltd
Priority to CN201911024568.6A priority Critical patent/CN110768833B/zh
Publication of CN110768833A publication Critical patent/CN110768833A/zh
Application granted granted Critical
Publication of CN110768833B publication Critical patent/CN110768833B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • H04L67/025Protocols based on web technology, e.g. hypertext transfer protocol [HTTP] for remote control or remote monitoring of applications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0823Configuration setting characterised by the purposes of a change of settings, e.g. optimising configuration for enhancing reliability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0876Aspects of the degree of configuration automation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Automation & Control Theory (AREA)
  • Stored Programmes (AREA)

Abstract

本发明实施例提供一种基于kubernetes的应用编排部署方法及装置,方法包括:订阅应用服务器组件接收到用户触发的对应用的操作请求后相应生成的对应用的操作事件;若监测到应用服务器组件生成了对应用的操作事件,则获取应用商店的文件目录下预先存储的应用模板作为应用下的资源类型,部署应用下的资源;从应用模板中获取应用下的资源的依赖关系,按照应用下的资源的依赖关系,有序的将应用下的资源同步到kubernetes集群中,完成应用的部署。可使用预先存储的应用模板在多个运行环境中快速部署应用,提供强大的应用编排和模板化能力,使复杂的应用也能被模板化,可解决复杂应用的运行时依赖,使复杂应用能够被自动化部署运维。

Description

基于kubernetes的应用编排部署方法及装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于kubernetes的应用编排部署方法及装置。
背景技术
kubernetes是一个开源的用于管理云平台中多个主机上的容器化的应用,kubernetes的目标是让部署容器化的应用简单并且高效,Kubernetes提供了应用自动部署,自动重启,自动复制,负载均衡、自动伸缩、维护、扩展机制等功能。利用kubernetes能方便地管理跨机器容器化的应用,其主要功能包括使用Docker容器对应用程序包装、实例化、运行;解决Docker容器编排、调度、跨主机通讯问题;kubernetes的自我修复机制使得容器集群总是运行在用户期望的状态。
kubernetes更专注于容器的编排和调度,管理的是具体的服务和组件,而应用往往由多个服务和组件构成。在原生的kubernetes集群上部署一个应用,需要定义各种各样的资源,且资源的定义复杂,全部依靠yaml格式的配置文件,服务和组件之间的关联关系需要通过设置标签来建立。随着应用容器化和微服务化,组成一个应用的组件往往需要多个,甚至多达数十个,而且组件之间可能存在复杂的依赖关系。在原生的kubernetes集群上部署应用,需要专业的运维人员,且配置复杂容易出错,难以自动化,不能快速在多个运行环境中复制应用,不能很好的共用和共享公共的组件配置。
目前,主流的在kubernetes之上的应用编排和包管理工具是helm。helm的编排目标是比资源更上层的应用,heml主要的能力在于提供了一套应用模板化的方法,并提供了应用软件包(模板)管理器,提供了一种简单的方法来查找,部署,共享基于kubernetes的应用。
使用helm来编排和部署应用,虽然能够带来一定程度上的简化,能够快速的使用已经定义好的应用模板进行应用部署,但是helm模板本身基于Go语言标准库的Template(模板)语法定义,难以理解,难以图形化;helm只提供了命令行操作,且用户使用时需要详细理解应用模板的内容,使用存在较大难度;helm不支持运行时对依赖关系的处理,对于复杂应用仍然不能模板化,不能自动部署和自动更新;helm只支持使用应用模板进行应用部署,不能直接定义应用,其所有操作都基于模板化的应用,使用限制较多,不够灵活。
发明内容
针对现有技术存在的问题,本发明实施例提供一种基于kubernetes的应用编排部署方法及装置。
本发明实施例提供一种基于kubernetes的应用编排部署方法,应用于应用执行器组件,包括:
监测应用服务器组件是否生成了对应用的操作事件,订阅所述对应用的操作事件,所述对应用的操作事件是应用服务器组件接收到用户触发的对应用的操作请求后相应生成的;
若监测到应用服务器组件生成了对应用的操作事件,则获取应用商店的文件目录下预先存储的应用模板,使用所述应用模板作为应用下的资源类型,部署应用下的资源;
从所述应用模板中,获取应用下的资源的依赖关系,按照所述应用下的资源的依赖关系,有序的将应用下的资源同步到kubernetes集群中,完成应用的部署。
可选地,在获取应用商店的文件目录下预先存储的应用模板之前,所述方法还包括:
根据用户输入的指令,创建应用模板,并将创建的应用模板预先存储在应用商店的文件目录下。
可选地,所述应用模板,包括:模板元数据、模板资源列表和自定义参数列表;
其中,所述模板元数据中的字段,包括:模板名称、模板版本、模板所属目录、模板描述和模板标签列表;
所述模板资源列表中的字段,包括:资源的唯一标识、资源的依赖关系和资源的定义;
所述自定义参数列表中的字段,包括:参数名称、参数类型、参数默认值和自定义参数值。
可选地,所述对应用的操作请求,包括:对应用的创建操作请求、修改操作请求或删除操作请求;所述对应用的操作事件,包括:对应用的创建操作事件、修改操作事件或删除操作事件。
可选地,所述方法还包括:
在监测到应用服务器组件生成了对应用的操作事件之后,获取预先设置的自定义动作类型资源,利用所述自定义动作类型资源,在应用的部署过程中完成对kubernetes的资源扩展功能。
可选地,所述自定义动作类型资源支持对kubernetes的资源扩展功能,包括:
证书创建、证书导入、证书合并、随机数生成、获取kubernetes特定资源的字段值、创建作业job并等待job执行结束、和/或远程进入目标容器执行命令并获取执行输出。
可选地,在按照所述应用下的资源的依赖关系,有序的将应用下的资源同步到kubernetes集群中,完成应用的部署之后,所述方法还包括:
若接收到应用服务器组件生成的对应用的回滚操作事件,将应用更新到目标历史版本的状态;
其中,所述对应用的回滚操作事件是应用服务器组件接收到用户触发的对应用的回滚请求、获取目标历史版本的应用历史、使用应用历史中的资源列表覆盖当前应用的资源列表并形成新的应用历史,将回滚后的应用和新形成的应用历史一同进行存储后生成的。
本发明实施例提供一种基于kubernetes的应用编排部署装置,应用于应用执行器组件,包括:
监测模块,用于监测应用服务器组件是否生成了对应用的操作事件,订阅所述对应用的操作事件,所述对应用的操作事件是应用服务器组件接收到用户触发的对应用的操作请求后相应生成的;
第一部署模块,用于若监测到应用服务器组件生成了对应用的操作事件,则获取应用商店的文件目录下预先存储的应用模板,使用所述应用模板作为应用下的资源类型,部署应用下的资源;
第二部署模块,用于从所述应用模板中,获取应用下的资源的依赖关系,按照所述应用下的资源的依赖关系,有序的将应用下的资源同步到kubernetes集群中,完成应用的部署。
本发明实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述方法的步骤。
本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述方法的步骤。
本发明实施例提供的基于kubernetes的应用编排部署方法及装置,通过若监测到应用服务器组件生成了对应用的操作事件,所述对应用的操作事件是应用服务器组件接收到用户触发的对应用的操作请求后相应生成的,则获取应用商店的文件目录下预先存储的应用模板,使用所述应用模板作为应用下的资源类型部署应用下的资源,从所述应用模板中获取应用下的资源的依赖关系,按照所述应用下的资源的依赖关系,有序的将应用下的资源同步到kubernetes集群中,完成应用的部署,由此,可使用应用商店的文件目录下预先存储的应用模板在多个运行环境中快速部署应用,通过提供强大的应用编排和模板化能力,使复杂的应用也能被模板化,能够解决复杂应用的运行时依赖,使复杂应用能够被自动化部署运维。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例提供的一种基于kubernetes的应用编排部署方法的流程示意图;
图2为本发明一实施例提供的一种基于kubernetes的应用编排部署装置的结构示意图;
图3为本发明一实施例提供的电子设备的实体结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1示出了本发明一实施例提供的一种基于kubernetes的应用编排部署方法的流程示意图,如图1所示,本实施例的基于kubernetes的应用编排部署方法,包括:
S1、监测应用服务器(app-server)组件是否生成了对应用的操作事件,订阅所述对应用的操作事件,所述对应用的操作事件是应用服务器组件接收到用户触发的对应用的操作请求后相应生成的。
需要说明的是,本实施例所述基于kubernetes的应用编排部署方法的执行主体为应用执行器组件(app-controller)。
可以理解的是,本实施例中,应用服务器组件可以对外提供应用相关操作的restapi(表述性状态转移应用程序接口),利用命令行工具cli或者console(控制台)的图形界面,接收用户触发的操作请求,响应用户触发的操作请求,实现如对应用的创建、修改、删除、数据存储和访问等操作,其中cli为命令行工具,console为web应用,作为操作入口,实现人机交互,接收用户指令,并形成远程调用,通过对app-server组件的调用,将用户的输入传递到后端服务。本实施例中,应用服务器组件接收到用户触发的对应用的操作请求后,相应生成对应用的操作事件,应用执行器组件可以监测应用服务器组件是否生成了对应用的操作事件,订阅所述对应用的操作事件,进而后续在监测到应用服务器组件生成了对应用的操作事件时,异步触发后续的应用部署操作,通过下述步骤S2和S3完成应用的部署。
S2、若监测到应用服务器组件生成了对应用的操作事件,则获取应用商店的文件目录下预先存储的应用模板,使用所述应用模板作为应用下的资源类型,部署应用下的资源。
可以理解的是,本实施例中,应用商店的文件目录下预先存储的应用模板,具体地,应用模板可以包括:模板元数据(metadata)、模板资源列表(resources)和自定义参数列表(parameters);其中,所述模板元数据中的字段,可以包括:模板名称、模板版本、模板所属目录、模板描述和模板标签列表;所述模板资源列表中的字段,可以包括:资源的唯一标识、资源的依赖关系和资源的定义;所述自定义参数列表中的字段,可以包括:参数名称、参数类型、参数默认值和自定义参数值。当然所述自定义参数列表中的字段,还可以根据实际情况包括:其他字段,和具体的参数类型相关联,比如具体参数类型的校验规则等。
可以理解的是,本实施例应用执行器组件在监测到应用服务器组件生成了对应用的操作事件时,订阅所述对应用的操作事件,异步触发后续的应用部署操作,获取应用商店的文件目录下预先存储的应用模板,使用所述应用模板作为应用下的资源类型,可以部署应用下的资源。
S3、从所述应用模板中,获取应用下的资源的依赖关系,按照所述应用下的资源的依赖关系,有序的将应用下的资源同步到kubernetes集群中,完成应用的部署。
可以理解的是,应用商店的文件目录下预先存储的应用模板的模板资源列表中的字段包括资源的依赖关系,因此本实施例能够从所述应用模板中,获取应用下的资源的依赖关系,按照所述应用下的资源的依赖关系,有序的将应用下的资源同步到kubernetes集群中,完成应用的部署,解决了复杂应用的运行时依赖,使复杂应用能够被自动化部署运维。
可以理解的是,本实施例通过应用服务器组件接收到用户触发的对应用的操作请求后,相应生成对应用的操作事件,应用执行器组件监测应用服务器组件是否生成了对应用的操作事件,在监测到应用服务器组件生成了对应用的操作事件时,订阅所述对应用的操作事件,异步触发后续的应用部署操作,即获取应用商店的文件目录下预先存储的应用模板,使用所述应用模板作为应用下的资源类型,部署应用下的资源;从所述应用模板中,获取应用下的资源的依赖关系,按照所述应用下的资源的依赖关系,有序的将应用下的资源同步到kubernetes集群中,完成应用的部署,提供了强大的应用编排和模板化能力,使复杂的应用也能被模板化,解决了复杂应用的运行时依赖,实现了复杂应用的自动化部署。
本实施例提供的基于kubernetes的应用编排部署方法,通过若监测到应用服务器组件生成了对应用的操作事件,所述对应用的操作事件是应用服务器组件接收到用户触发的对应用的操作请求后相应生成的,则获取应用商店的文件目录下预先存储的应用模板,使用所述应用模板作为应用下的资源类型部署应用下的资源,从所述应用模板中获取应用下的资源的依赖关系,按照所述应用下的资源的依赖关系,有序的将应用下的资源同步到kubernetes集群中,完成应用的部署,由此,可使用应用商店的文件目录下预先存储的应用模板在多个运行环境中快速部署应用,通过提供强大的应用编排和模板化能力,使复杂的应用也能被模板化,能够解决复杂应用的运行时依赖,使复杂应用能够被自动化部署运维。本实施例所述方法,可以简化应用的部署,使应用的部署更加直观,可以解决应用中各组件的依赖关系,快速自动部署复杂架构的应用,能够通过应用模板在多个运行环境中快速复制应用,能够做到对复杂应用的自动化部署以满足和CI(持续集成)/CD(持续部署)集成的需求。
进一步地,在上述实施例的基础上,在所述步骤S2获取应用商店的文件目录下预先存储的应用模板之前,所述方法还可以包括:
根据用户输入的指令,创建应用模板,并将创建的应用模板预先存储在应用商店的文件目录下。
可以理解的是,所述应用商店以文件目录的形式存储应用模板,应用模板定义在应用商店目录下,应用模板为单文件,模板的数据格式可以为yaml/json格式。应用商店对外提供模板检索服务,可根据模板目录,模板名称,模板标签等进行检索。
在具体应用中,所述应用模板可以由metadata、resources、parameters构成,其中metadata为模板元数据、resources为模板资源列表(数组类型),parameters为自定义参数列表(数组类型);使用kind:Template标识资源为模板类型。
具体地,所述模板元数据可以包括:name、version、catalog、description、labels等字段,其中name为模板名称,version为模板版本,catalog为模板所属目录,description为模板描述,labels为模板标签列表(key-value列表)。
具体地,所述模板资源列表中的字段,包括:资源的唯一标识id、资源的依赖关系depends(数组类型)和资源的定义definition;
其中,资源的依赖关系depend可以包括以下字段:依赖的资源的标识id;依赖关系的描述description;waitCondition:等待条件,可选择有create,run,ready分别表示资源被创建、被调度运行、正确运行且能对外提供服务;waitTimeoutSeconds:等待超时时间,单位为秒,达到超时时间后将会退出,不进行当前资源及依赖当前资源的后续资源的部署;updatePolicy:更新策略,可选值为follow(跟随)和ignore(忽略),当updatePolicy的值为follow时,表示当依赖资源变更时会对当前资源进行更新操作;当updatePolicy的值为ignore,表示不对资源进行更新。
其中,资源的定义definition字段下存储资源的完整定义,可以包括:apiVersion字段定义资源版本,kind定义资源类型,metadata定义资源的名称等元数据,其他字段与具体资源类型和版本关联,为不固定项。在资源的定义definition字段下除去apiVersion和kind字段外,其他字段的值都可被参数化,使用参数来代替具体的值,在应用模板被在应用下做部署时将参数替换为具体的值。模板资源定义下支持三种类型的参数引用:PARAM、SYS、PROP,其中PARAM类型参数为模板下parameters部分定义的用户参数,通过${PARAM.xxx}引用,其中xxx为参数名称;SYS为系统参数,通过${SYS.xxx}引用,其中xxx为系统参数名称,系统参数为全局参数,包含了系统运行时信息,比如系统镜像仓库地址、DNS(域名系统)地址等,通过系统参数的提供,使用户在多套环境中复制应用变得更加简单;PROP为自定义动作类型资源的运行时输出,自定义动作类型资源是额外扩展的非kubernetes资源,也定义在resources中,通过${PROP.dependCustomActionId.xxx}进行引用,其中dependCustomActionId为依赖的自定义动作类型资源的标识,这里的xxx为依赖的自定义动作类型资源的运行时输出的名称。所有类型的参数均支持参数处理函数,处理函数之间通过管道符’|’分隔,按照顺序前一个处理函数的输出将作为后一个处理函数的输入:${PARM.xxx|function|...|function N}。例如:${PARM.xxx|trim|base64}是会对参数xxx的值去除前后空格后进行base64编码最终完成参数替换。
具体地,自定义参数列表parameters可以包括以下字段:name:参数名称;type:参数类型,可选值为int、string、float、bool、enum等;defaultValue:参数默认值,定义通用默认值;value:自定义参数值,用来覆盖默认值,只有在应用模板被用来在应用下部署时才需要设置;其他字段:和具体的参数类型相关联,比如具体参数类型的校验规则等。
在具体应用中,所述应用模板以文件目录的形式存储于文件服务器上,文件名称为模板名称+模板版本,对外提供上传、下载、检索的功能。
可以理解的是,本实施例中,应用的定义可以由应用元数据信息metadata、应用的资源列表resources、应用下资源的部署状态信息status组成,其中,应用元数据信息,可以包含应用名称,标签列表等;resources为应用的资源列表,此部分同应用模板的resources部分相同,额外的应用的资源列表下可以包含模板类型资源,即可以添加kind为Template的资源。应用可以由kind:Application进行标识。应用可独立存储于etcd数据库中,也可以自定义资源的方式存储于kubernetes集群。
在具体应用中,本实施例所述方法可以预先设置的自定义动作类型资源,本实施例所述方法还可以包括:
在监测到应用服务器组件生成了对应用的操作事件之后,获取预先设置的自定义动作类型资源,利用所述自定义动作类型资源,在应用的部署过程中完成对kubernetes的资源扩展功能。
在具体应用中,所述自定义动作类型资源支持对kubernetes的资源扩展功能,可以包括:证书创建、证书导入、证书合并、随机数生成、获取kubernetes特定资源的字段值、创建作业job并等待job执行结束、和/或远程进入目标容器执行命令并获取执行输出等功能。
可以理解的是,自定义动作类型资源的kind为CustomAction类,是对kubernetes的资源扩展,提供证书创建、证书导入、证书合并、随机数生成、获取kubernetes特定资源的字段值、创建job并等待job执行结束、远程进入目标容器执行命令并获取执行输出等功能。自定义动作类型资源只出现在应用和应用模板下,仅被应用执行器app-controller识别和执行,不会向kubernetes集群发起同步。
可以理解的是,本实施例通过预先设置的自定义动作类型资源,提供多种自定义动作支持,能够在应用部署过程中完成证书创建、随机数生成、获取依赖资源的运行时输出等操作,扩展kubernetes原有功能,弥补某些环节必须人为干预的问题,使自动化部署和与CI(持续集成)/CD(持续部署)工具的集成更加简单。
在具体应用中,所述对应用的操作请求,可以包括:对应用的创建操作请求、修改操作请求或删除操作请求等,所述对应用的操作事件,可以包括:对应用的创建操作事件、修改操作事件或删除操作事件等,本实施例并不对其进行限制。
具体地,应用服务器组件若接收到用户触发的对应用的创建操作请求(即用户通过命令行工具cli执行create命令传入应用描述文件,或者通过console的图形界面进行应用创建),将应用的定义发送到app-server,由app-server存入etcd数据库或者kubernetes集群。app-controller接受到应用创建的事件,开启异步线程对应用进行创建。app-controller获取应用下的资源列表,并通过资源定义的依赖关系,形成资源拓扑图(有向无环图),在拓扑图中每个资源由一个顶点表示,每个依赖关系由两个顶点之间的边表示,app-controller从有向图中循环获取出度为0的定点代表的资源进行部署执行,资源被部署执行完成后,将资源对应的顶点从有向图中移除,以促使后置资源的执行。资源在执行前需要判断并等待执行条件满足,依赖等待条件由资源依赖定义的waitCondition和waitTimeoutSeconds决定。对于kubernetes资源,将资源的id和应用名称设置到kubernetes的资源标签在中,对kubernetes集群发起调用进行资源创建,如果资源在kubernetes集群已经存在则该资源部署失败;对于自定义动作类型资源在app-controller内完成动作执行,并获取输出;对应模板类型的资源,在app-controller内对模板下资源定义的参数引用进行替换,并形成模板下资源列表的拓扑图,按照拓扑图中的依赖关系,采用和应用资源部署执行的相同逻辑进行部署执行。
具体地,应用服务器组件若接收到用户触发的对应用的创建操作修改请求(即用户通过命令行工具cli执行更新update命令传入更新后的应用描述文件,或者通过console的图形界面进行应用编辑。将应用的定义发送到app-server,由app-server生成应用历史,并同修改后的应用定义一起存入etcd数据库或者kubernetes集群。app-controller接受到应用更新的事件后。app-controller获取当前应用定义和上一版本应用定义,将当前应用定义下的资源列表按照资源依赖关系形成资源拓扑图,并对比新旧应用定义找到删除了的资源。app-controller会先对删除了的资源进行删除操作。在被删除的资源删除结束后,app-controller按照修改后的应用资源拓扑,循环获取出度为0的资源,将资源和上一版本应用定义中的相同id(标识)对应的资源定义进行对比,如果当前资源在上一版本应用定义中不存在则进行创建,如果当前资源在上一版本应用定义中存在,则对比应用中新旧资源定义是否变更,如果资源定义变更变更但资源的标识信息(类型和名称以及命名空间)未变更则对资源进行更新操作;如果资源定义变更且资源的标识信息也变更了,则删除对旧的资源进行删除操作,删除成功后对新的资源进行创建操作。如果资源定义未变更,则判断是否依赖的资源变更了,如果依赖的资源变更了且当前资源的依赖更新策略updatePolicy为follow则重新替换各类型参数后对当前资源进行更新操作;如果依赖的资源未变更,或者依赖更新策略为ignore则不对资源进行更新。
其中,应用历史为应用的历史记录,数据结构同应用的定义基本一致,kind为ApplicationHistory,名称为版本号。记录应用的每次变更历史,同应用的区别为不包含status部分,只记录应用的resources部分。应用历史同应用一样可独立存储于etcd数据库中,也可以自定义资源的方式存储于kubernetes集群。
具体地,应用服务器组件若接收到用户触发的对应用的创建操作删除请求(即用户通过命令行工具cli执行delete命令传入应用名称,或者通过console的图形界面进行应用删除),app-server收到删除请求后,将应用标记为删除状态,写入etcd数据库或者kubernetes集群,应用的删除采用标记删除的形式,由app-controller异步推动应用的删除,只有当应用下的资源被真正删除后,应用才会被从后端存储中移除。app-controller接受到应用的删除事件后,按照应用下的资源依赖拓扑的反向顺序执行资源的删除操作。当所有的资源都删除成功后,从后端存储中删除应用定义。
进一步地,在按照所述应用下的资源的依赖关系,有序的将应用下的资源同步到kubernetes集群中,完成应用的部署之后,本实施例所述方法还可以包括:
若接收到应用服务器组件生成的对应用的回滚操作事件,将应用更新到目标历史版本的状态;
其中,所述对应用的回滚操作事件是应用服务器组件接收到用户触发的对应用的回滚请求、获取目标历史版本的应用历史、使用应用历史中的资源列表覆盖当前应用的资源列表并形成新的应用历史,将回滚后的应用和新形成的应用历史一同进行存储后生成的。
可以理解的是,用户通过命令行工具cli执行rollback命令传入应用名称及目标版本,或者通过console的图形界面进行应用回滚操作。app-server收到回滚请求后,获取目标历史版本的应用历史,使用应用历史中的资源列表覆盖当前应用的资源列表,并形成新的应用历史,将回滚后的应用和新形成的应用历史一同存入后端存储,生成对应用的修改操作事件。app-controller将会接受到对应用的回滚操作事件,之后将进行同应用更新相同的操作逻辑,将应用更新到历史版本的状态。
可以理解的是,本实施例所述方法能够组合多个应用模板,以及用户定义在同一个应用中进行部署,能够提供应用整体的历史记录和回滚功能。
本实施例提供的基于kubernetes的应用编排部署方法,能够支持应用商店的文件目录下应用模板的创建、修改、删除、检索,供用户共享应用模板,使用应用模板在多个运行环境中快速构建应用;使用应用商店的文件目录下预先存储的应用模板在多个运行环境中快速部署应用,提供强大的应用编排和模板化能力,使复杂的应用也能被模板化,能够解决复杂应用的运行时依赖,使复杂应用能够被自动化部署运维;提供多种自定义动作支持,能够在应用部署过程中完成证书创建、随机数生成、获取依赖资源的运行时输出等操作,扩展kubernetes原有功能,弥补某些环节必须人为干预的问题,使自动化部署和与CI/CD工具的集成更加简单;能够组合多个应用模板,以及用户定义在同一个应用中进行部署,能够提供应用整体的历史记录和回滚功能;提供简单、直观、图形化的应用拓扑视图和维护功能;可以简化应用的部署,使应用的部署更加直观,可以解决应用中各组件的依赖关系,快速自动部署复杂架构的应用,能够通过应用模板在多个运行环境中快速复制应用,能够做到对复杂应用的自动化部署以满足和CI/CD集成的需求。
图2示出了本发明一实施例提供的一种基于kubernetes的应用编排部署装置的结构示意图,如图2所示,本实施例的基于kubernetes的应用编排部署装置,包括:监测模块21、第一部署模块22和第二部署模块23;其中:
所述监测模块21,用于监测应用服务器组件是否生成了对应用的操作事件,订阅所述对应用的操作事件,所述对应用的操作事件是应用服务器组件接收到用户触发的对应用的操作请求后相应生成的;
所述第一部署模块22,用于若监测到应用服务器组件生成了对应用的操作事件,则获取应用商店的文件目录下预先存储的应用模板,使用所述应用模板作为应用下的资源类型,部署应用下的资源;
所述第二部署模块23,用于从所述应用模板中,获取应用下的资源的依赖关系,按照所述应用下的资源的依赖关系,有序的将应用下的资源同步到kubernetes集群中,完成应用的部署。
具体地,所述监测模块21监测应用服务器组件是否生成了对应用的操作事件,订阅所述对应用的操作事件,所述对应用的操作事件是应用服务器组件接收到用户触发的对应用的操作请求后相应生成的;所述第一部署模块22若监测到应用服务器组件生成了对应用的操作事件,则获取应用商店的文件目录下预先存储的应用模板,使用所述应用模板作为应用下的资源类型,部署应用下的资源;所述第二部署模块23从所述应用模板中,获取应用下的资源的依赖关系,按照所述应用下的资源的依赖关系,有序的将应用下的资源同步到kubernetes集群中,完成应用的部署。
需要说明的是,本实施例所述基于kubernetes的应用编排部署装置的执行主体为应用执行器组件(app-controller)。
可以理解的是,本实施例中,应用服务器组件可以对外提供应用相关操作的restapi(表述性状态转移应用程序接口),利用命令行工具cli或者console(控制台)的图形界面,接收用户触发的操作请求,响应用户触发的操作请求,实现如对应用的创建、修改、删除、数据存储和访问等操作,其中cli为命令行工具,console为web应用,作为操作入口,实现人机交互,接收用户指令,并形成远程调用,通过对app-server组件的调用,将用户的输入传递到后端服务。
可以理解的是,本实施例中,应用商店的文件目录下预先存储的应用模板,具体地,应用模板可以包括:模板元数据(metadata)、模板资源列表(resources)和自定义参数列表(parameters);其中,所述模板元数据中的字段,可以包括:模板名称、模板版本、模板所属目录、模板描述和模板标签列表;所述模板资源列表中的字段,可以包括:资源的唯一标识、资源的依赖关系和资源的定义;所述自定义参数列表中的字段,可以包括:参数名称、参数类型、参数默认值和自定义参数值。当然所述自定义参数列表中的字段,还可以根据实际情况包括:其他字段,和具体的参数类型相关联,比如具体参数类型的校验规则等。
可以理解的是,本实施例应用执行器组件在监测到应用服务器组件生成了对应用的操作事件时,订阅所述对应用的操作事件,异步触发后续的应用部署操作,获取应用商店的文件目录下预先存储的应用模板,使用所述应用模板作为应用下的资源类型,可以部署应用下的资源。
可以理解的是,应用商店的文件目录下预先存储的应用模板的模板资源列表中的字段包括资源的依赖关系,因此本实施例能够从所述应用模板中,获取应用下的资源的依赖关系,按照所述应用下的资源的依赖关系,有序的将应用下的资源同步到kubernetes集群中,完成应用的部署,解决了复杂应用的运行时依赖,使复杂应用能够被自动化部署运维。
可以理解的是,本实施例通过应用服务器组件接收到用户触发的对应用的操作请求后,相应生成对应用的操作事件,应用执行器组件监测应用服务器组件是否生成了对应用的操作事件,在监测到应用服务器组件生成了对应用的操作事件时,订阅所述对应用的操作事件,异步触发后续的应用部署操作,即获取应用商店的文件目录下预先存储的应用模板,使用所述应用模板作为应用下的资源类型,部署应用下的资源;从所述应用模板中,获取应用下的资源的依赖关系,按照所述应用下的资源的依赖关系,有序的将应用下的资源同步到kubernetes集群中,完成应用的部署,提供了强大的应用编排和模板化能力,使复杂的应用也能被模板化,解决了复杂应用的运行时依赖,实现了复杂应用的自动化部署。
本实施例提供的基于kubernetes的应用编排部署装置,可使用应用商店的文件目录下预先存储的应用模板在多个运行环境中快速部署应用,通过提供强大的应用编排和模板化能力,使复杂的应用也能被模板化,能够解决复杂应用的运行时依赖,使复杂应用能够被自动化部署运维。本实施例所述方法,可以简化应用的部署,使应用的部署更加直观,可以解决应用中各组件的依赖关系,快速自动部署复杂架构的应用,能够通过应用模板在多个运行环境中快速复制应用,能够做到对复杂应用的自动化部署以满足和CI/CD集成的需求。
进一步地,在上述实施例的基础上,本实施例所述装置还可以包括图中未示出的:
应用模板创建模块,用于根据用户输入的指令,创建应用模板,并将创建的应用模板预先存储在应用商店的文件目录下。
可以理解的是,所述应用商店以文件目录的形式存储应用模板,应用模板定义在应用商店目录下,应用模板为单文件,模板的数据格式可以为yaml/json格式。应用商店对外提供模板检索服务,可根据模板目录,模板名称,模板标签等进行检索。
在具体应用中,所述应用模板可以由metadata、resources、parameters构成,其中metadata为模板元数据、resources为模板资源列表(数组类型),parameters为自定义参数列表(数组类型);使用kind:Template标识资源为模板类型。
具体地,所述模板元数据可以包括:name、version、catalog、description、labels等字段,其中name为模板名称,version为模板版本,catalog为模板所属目录,description为模板描述,labels为模板标签列表(key-value列表)。
具体地,所述模板资源列表中的字段,包括:资源的唯一标识id、资源的依赖关系depends(数组类型)和资源的定义definition;
其中,资源的依赖关系depend可以包括以下字段:依赖的资源的标识id;依赖关系的描述description;waitCondition:等待条件,可选择有create,run,ready分别表示资源被创建、被调度运行、正确运行且能对外提供服务;waitTimeoutSeconds:等待超时时间,单位为秒,达到超时时间后将会退出,不进行当前资源及依赖当前资源的后续资源的部署;updatePolicy:更新策略,可选值为follow(跟随)和ignore(忽略),当updatePolicy的值为follow时,表示当依赖资源变更时会对当前资源进行更新操作;当updatePolicy的值为ignore,表示不对资源进行更新。
其中,资源的定义definition字段下存储资源的完整定义,可以包括:apiVersion字段定义资源版本,kind定义资源类型,metadata定义资源的名称等元数据,其他字段与具体资源类型和版本关联,为不固定项。在资源的定义definition字段下除去apiVersion和kind字段外,其他字段的值都可被参数化,使用参数来代替具体的值,在应用模板被在应用下做部署时将参数替换为具体的值。模板资源定义下支持三种类型的参数引用:PARAM、SYS、PROP,其中PARAM类型参数为模板下parameters部分定义的用户参数,通过${PARAM.xxx}引用,其中xxx为参数名称;SYS为系统参数,通过${SYS.xxx}引用,其中xxx为系统参数名称,系统参数为全局参数,包含了系统运行时信息,比如系统镜像仓库地址、DNS(域名系统)地址等,通过系统参数的提供,使用户在多套环境中复制应用变得更加简单;PROP为自定义动作类型资源的运行时输出,自定义动作类型资源是额外扩展的非kubernetes资源,也定义在resources中,通过${PROP.dependCustomActionId.xxx}进行引用,其中dependCustomActionId为依赖的自定义动作类型资源的标识,这里的xxx为依赖的自定义动作类型资源的运行时输出的名称。所有类型的参数均支持参数处理函数,处理函数之间通过管道符’|’分隔,按照顺序前一个处理函数的输出将作为后一个处理函数的输入:${PARM.xxx|function|...|function N}。例如:${PARM.xxx|trim|base64}是会对参数xxx的值去除前后空格后进行base64编码最终完成参数替换。
具体地,自定义参数列表parameters可以包括以下字段:name:参数名称;type:参数类型,可选值为int、string、float、bool、enum等;defaultValue:参数默认值,定义通用默认值;value:自定义参数值,用来覆盖默认值,只有在应用模板被用来在应用下部署时才需要设置;其他字段:和具体的参数类型相关联,比如具体参数类型的校验规则等。
在具体应用中,所述应用模板以文件目录的形式存储于文件服务器上,文件名称为模板名称+模板版本,对外提供上传、下载、检索的功能。
可以理解的是,本实施例中,应用的定义可以由应用元数据信息metadata、应用的资源列表resources、应用下资源的部署状态信息status组成,其中,应用元数据信息,可以包含应用名称,标签列表等;resources为应用的资源列表,此部分同应用模板的resources部分相同,额外的应用的资源列表下可以包含模板类型资源,即可以添加kind为Template的资源。应用可以由kind:Application进行标识。应用可独立存储于etcd数据库中,也可以自定义资源的方式存储于kubernetes集群。
在具体应用中,本实施例所述装置可以包括图中未示出的:
设置模块,用于预先设置的自定义动作类型资源;
资源扩展模块,用于在监测到应用服务器组件生成了对应用的操作事件之后,获取预先设置的自定义动作类型资源,利用所述自定义动作类型资源,在应用的部署过程中完成对kubernetes的资源扩展功能。
在具体应用中,所述自定义动作类型资源支持对kubernetes的资源扩展功能,可以包括:证书创建、证书导入、证书合并、随机数生成、获取kubernetes特定资源的字段值、创建作业job并等待job执行结束、和/或远程进入目标容器执行命令并获取执行输出等功能。
可以理解的是,自定义动作类型资源的kind为CustomAction类,是对kubernetes的资源扩展,提供证书创建、证书导入、证书合并、随机数生成、获取kubernetes特定资源的字段值、创建job并等待job执行结束、远程进入目标容器执行命令并获取执行输出等功能。自定义动作类型资源只出现在应用和应用模板下,仅被应用执行器app-controller识别和执行,不会向kubernetes集群发起同步。
可以理解的是,本实施例通过预先设置的自定义动作类型资源,提供多种自定义动作支持,能够在应用部署过程中完成证书创建、随机数生成、获取依赖资源的运行时输出等操作,扩展kubernetes原有功能,弥补某些环节必须人为干预的问题,使自动化部署和与CI(持续集成)/CD(持续部署)工具的集成更加简单。
在具体应用中,所述对应用的操作请求,可以包括:对应用的创建操作请求、修改操作请求或删除操作请求等,所述对应用的操作事件,可以包括:对应用的创建操作事件、修改操作事件或删除操作事件等,本实施例并不对其进行限制。
具体地,应用服务器组件若接收到用户触发的对应用的创建操作请求(即用户通过命令行工具cli执行create命令传入应用描述文件,或者通过console的图形界面进行应用创建),将应用的定义发送到app-server,由app-server存入etcd数据库或者kubernetes集群。app-controller接受到应用创建的事件,开启异步线程对应用进行创建。app-controller获取应用下的资源列表,并通过资源定义的依赖关系,形成资源拓扑图(有向无环图),在拓扑图中每个资源由一个顶点表示,每个依赖关系由两个顶点之间的边表示,app-controller从有向图中循环获取出度为0的定点代表的资源进行部署执行,资源被部署执行完成后,将资源对应的顶点从有向图中移除,以促使后置资源的执行。资源在执行前需要判断并等待执行条件满足,依赖等待条件由资源依赖定义的waitCondition和waitTimeoutSeconds决定。对于kubernetes资源,将资源的id和应用名称设置到kubernetes的资源标签在中,对kubernetes集群发起调用进行资源创建,如果资源在kubernetes集群已经存在则该资源部署失败;对于自定义动作类型资源在app-controller内完成动作执行,并获取输出;对应模板类型的资源,在app-controller内对模板下资源定义的参数引用进行替换,并形成模板下资源列表的拓扑图,按照拓扑图中的依赖关系,采用和应用资源部署执行的相同逻辑进行部署执行。
具体地,应用服务器组件若接收到用户触发的对应用的创建操作修改请求(即用户通过命令行工具cli执行更新update命令传入更新后的应用描述文件,或者通过console的图形界面进行应用编辑。将应用的定义发送到app-server,由app-server生成应用历史,并同修改后的应用定义一起存入etcd数据库或者kubernetes集群。app-controller接受到应用更新的事件后。app-controller获取当前应用定义和上一版本应用定义,将当前应用定义下的资源列表按照资源依赖关系形成资源拓扑图,并对比新旧应用定义找到删除了的资源。app-controller会先对删除了的资源进行删除操作。在被删除的资源删除结束后,app-controller按照修改后的应用资源拓扑,循环获取出度为0的资源,将资源和上一版本应用定义中的相同id(标识)对应的资源定义进行对比,如果当前资源在上一版本应用定义中不存在则进行创建,如果当前资源在上一版本应用定义中存在,则对比应用中新旧资源定义是否变更,如果资源定义变更变更但资源的标识信息(类型和名称以及命名空间)未变更则对资源进行更新操作;如果资源定义变更且资源的标识信息也变更了,则删除对旧的资源进行删除操作,删除成功后对新的资源进行创建操作。如果资源定义未变更,则判断是否依赖的资源变更了,如果依赖的资源变更了且当前资源的依赖更新策略updatePolicy为follow则重新替换各类型参数后对当前资源进行更新操作;如果依赖的资源未变更,或者依赖更新策略为ignore则不对资源进行更新。
其中,应用历史为应用的历史记录,数据结构同应用的定义基本一致,kind为ApplicationHistory,名称为版本号。记录应用的每次变更历史,同应用的区别为不包含status部分,只记录应用的resources部分。应用历史同应用一样可独立存储于etcd数据库中,也可以自定义资源的方式存储于kubernetes集群。
具体地,应用服务器组件若接收到用户触发的对应用的创建操作删除请求(即用户通过命令行工具cli执行delete命令传入应用名称,或者通过console的图形界面进行应用删除),app-server收到删除请求后,将应用标记为删除状态,写入etcd数据库或者kubernetes集群,应用的删除采用标记删除的形式,由app-controller异步推动应用的删除,只有当应用下的资源被真正删除后,应用才会被从后端存储中移除。app-controller接受到应用的删除事件后,按照应用下的资源依赖拓扑的反向顺序执行资源的删除操作。当所有的资源都删除成功后,从后端存储中删除应用定义。
进一步地,本实施例所述装置可以包括图中未示出的:
回滚模块,用于在按照所述应用下的资源的依赖关系,有序的将应用下的资源同步到kubernetes集群中,完成应用的部署之后,若接收到应用服务器组件生成的对应用的回滚操作事件,将应用更新到目标历史版本的状态;
其中,所述对应用的回滚操作事件是应用服务器组件接收到用户触发的对应用的回滚请求、获取目标历史版本的应用历史、使用应用历史中的资源列表覆盖当前应用的资源列表并形成新的应用历史,将回滚后的应用和新形成的应用历史一同进行存储后生成的。
可以理解的是,用户通过命令行工具cli执行rollback命令传入应用名称及目标版本,或者通过console的图形界面进行应用回滚操作。app-server收到回滚请求后,获取目标历史版本的应用历史,使用应用历史中的资源列表覆盖当前应用的资源列表,并形成新的应用历史,将回滚后的应用和新形成的应用历史一同存入后端存储,生成对应用的修改操作事件。app-controller将会接受到对应用的回滚操作事件,之后将进行同应用更新相同的操作逻辑,将应用更新到历史版本的状态。
可以理解的是,本实施例所述装置能够组合多个应用模板,以及用户定义在同一个应用中进行部署,能够提供应用整体的历史记录和回滚功能。
本实施例提供的基于kubernetes的应用编排部署装置,能够支持应用商店的文件目录下应用模板的创建、修改、删除、检索,供用户共享应用模板,使用应用模板在多个运行环境中快速构建应用;使用应用商店的文件目录下预先存储的应用模板在多个运行环境中快速部署应用,提供强大的应用编排和模板化能力,使复杂的应用也能被模板化,能够解决复杂应用的运行时依赖,使复杂应用能够被自动化部署运维;提供多种自定义动作支持,能够在应用部署过程中完成证书创建、随机数生成、获取依赖资源的运行时输出等操作,扩展kubernetes原有功能,弥补某些环节必须人为干预的问题,使自动化部署和与CI/CD工具的集成更加简单;能够组合多个应用模板,以及用户定义在同一个应用中进行部署,能够提供应用整体的历史记录和回滚功能;提供简单、直观、图形化的应用拓扑视图和维护功能;可以简化应用的部署,使应用的部署更加直观,可以解决应用中各组件的依赖关系,快速自动部署复杂架构的应用,能够通过应用模板在多个运行环境中快速复制应用,能够做到对复杂应用的自动化部署以满足和CI/CD集成的需求。
本发明实施例提供的基于kubernetes的应用编排部署装置,可以用于执行前述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图3示出了本发明一实施例提供的一种电子设备的实体结构示意图,如图3所示,该电子设备可以包括存储器302、处理器301、总线303及存储在存储器302上并可在处理器301上运行的计算机程序,其中,处理器301,存储器302通过总线303完成相互间的通信。所述处理器301执行所述计算机程序时实现上述方法的步骤,例如包括:监测应用服务器组件是否生成了对应用的操作事件,订阅所述对应用的操作事件,所述对应用的操作事件是应用服务器组件接收到用户触发的对应用的操作请求后相应生成的;若监测到应用服务器组件生成了对应用的操作事件,则获取应用商店的文件目录下预先存储的应用模板,使用所述应用模板作为应用下的资源类型,部署应用下的资源;从所述应用模板中,获取应用下的资源的依赖关系,按照所述应用下的资源的依赖关系,有序的将应用下的资源同步到kubernetes集群中,完成应用的部署。
本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法的步骤,例如包括:监测应用服务器组件是否生成了对应用的操作事件,订阅所述对应用的操作事件,所述对应用的操作事件是应用服务器组件接收到用户触发的对应用的操作请求后相应生成的;若监测到应用服务器组件生成了对应用的操作事件,则获取应用商店的文件目录下预先存储的应用模板,使用所述应用模板作为应用下的资源类型,部署应用下的资源;从所述应用模板中,获取应用下的资源的依赖关系,按照所述应用下的资源的依赖关系,有序的将应用下的资源同步到kubernetes集群中,完成应用的部署。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (8)

1.一种基于kubernetes的应用编排部署方法,应用于应用执行器组件,其特征在于,包括:
监测应用服务器组件是否生成了对应用的操作事件,订阅所述对应用的操作事件,所述对应用的操作事件是应用服务器组件接收到用户触发的对应用的操作请求后相应生成的;
若监测到应用服务器组件生成了对应用的操作事件,则获取应用商店的文件目录下预先存储的应用模板,使用所述应用模板作为应用下的资源类型,部署应用下的资源;
从所述应用模板中,获取应用下的资源的依赖关系,按照所述应用下的资源的依赖关系,有序的将应用下的资源同步到kubernetes集群中,完成应用的部署,
其中,
在监测到应用服务器组件生成了对应用的操作事件之后,获取预先设置的自定义动作类型资源,利用所述自定义动作类型资源,在应用的部署过程中完成对kubernetes的资源扩展功能;
所述自定义动作类型资源支持对kubernetes的资源扩展功能,包括:
证书创建、证书导入、证书合并、随机数生成、获取kubernetes特定资源的字段值、创建作业job并等待job执行结束、和/或远程进入目标容器执行命令并获取执行输出。
2.根据权利要求1所述的基于kubernetes的应用编排部署方法,其特征在于,在获取应用商店的文件目录下预先存储的应用模板之前,所述方法还包括:
根据用户输入的指令,创建应用模板,并将创建的应用模板预先存储在应用商店的文件目录下。
3.根据权利要求1所述的基于kubernetes的应用编排部署方法,其特征在于,所述应用模板,包括:模板元数据、模板资源列表和自定义参数列表;
其中,所述模板元数据中的字段,包括:模板名称、模板版本、模板所属目录、模板描述和模板标签列表;
所述模板资源列表中的字段,包括:资源的唯一标识、资源的依赖关系和资源的定义;
所述自定义参数列表中的字段,包括:参数名称、参数类型、参数默认值和自定义参数值。
4.根据权利要求1所述的基于kubernetes的应用编排部署方法,其特征在于,所述对应用的操作请求,包括:对应用的创建操作请求、修改操作请求或删除操作请求;所述对应用的操作事件,包括:对应用的创建操作事件、修改操作事件或删除操作事件。
5.根据权利要求1所述的基于kubernetes的应用编排部署方法,其特征在于,在按照所述应用下的资源的依赖关系,有序的将应用下的资源同步到kubernetes集群中,完成应用的部署之后,所述方法还包括:
若接收到应用服务器组件生成的对应用的回滚操作事件,将应用更新到目标历史版本的状态;
其中,所述对应用的回滚操作事件是应用服务器组件接收到用户触发的对应用的回滚请求、获取目标历史版本的应用历史、使用应用历史中的资源列表覆盖当前应用的资源列表并形成新的应用历史,将回滚后的应用和新形成的应用历史一同进行存储后生成的。
6.一种基于kubernetes的应用编排部署装置,应用于应用执行器组件,其特征在于,包括:
监测模块,用于监测应用服务器组件是否生成了对应用的操作事件,订阅所述对应用的操作事件,所述对应用的操作事件是应用服务器组件接收到用户触发的对应用的操作请求后相应生成的;
第一部署模块,用于若监测到应用服务器组件生成了对应用的操作事件,则获取应用商店的文件目录下预先存储的应用模板,使用所述应用模板作为应用下的资源类型,部署应用下的资源;
第二部署模块,用于从所述应用模板中,获取应用下的资源的依赖关系,按照所述应用下的资源的依赖关系,有序的将应用下的资源同步到kubernetes集群中,完成应用的部署;
其中,
在监测到应用服务器组件生成了对应用的操作事件之后,获取预先设置的自定义动作类型资源,利用所述自定义动作类型资源,在应用的部署过程中完成对kubernetes的资源扩展功能;
所述自定义动作类型资源支持对kubernetes的资源扩展功能,包括:
证书创建、证书导入、证书合并、随机数生成、获取kubernetes特定资源的字段值、创建作业job并等待job执行结束、和/或远程进入目标容器执行命令并获取执行输出。
7.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至5任一项所述方法的步骤。
8.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至5任一项所述方法的步骤。
CN201911024568.6A 2019-10-25 2019-10-25 基于kubernetes的应用编排部署方法及装置 Active CN110768833B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911024568.6A CN110768833B (zh) 2019-10-25 2019-10-25 基于kubernetes的应用编排部署方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911024568.6A CN110768833B (zh) 2019-10-25 2019-10-25 基于kubernetes的应用编排部署方法及装置

Publications (2)

Publication Number Publication Date
CN110768833A CN110768833A (zh) 2020-02-07
CN110768833B true CN110768833B (zh) 2022-07-29

Family

ID=69333651

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911024568.6A Active CN110768833B (zh) 2019-10-25 2019-10-25 基于kubernetes的应用编排部署方法及装置

Country Status (1)

Country Link
CN (1) CN110768833B (zh)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113301068A (zh) * 2020-04-07 2021-08-24 阿里巴巴集团控股有限公司 管理集群资源的方法和系统、设备、集群以及介质
CN113535188A (zh) * 2020-04-15 2021-10-22 北京沃东天骏信息技术有限公司 私有化部署的方法和装置
US11336588B2 (en) 2020-06-26 2022-05-17 Red Hat, Inc. Metadata driven static determination of controller availability
CN111831394B (zh) * 2020-06-30 2023-10-24 新浪技术(中国)有限公司 采用kubernetes部署有状态pod的方法及装置
CN113312083B (zh) * 2020-07-14 2024-01-23 阿里巴巴集团控股有限公司 应用生成方法、装置及设备
CN111913721B (zh) * 2020-07-16 2024-06-11 中国民航信息网络股份有限公司 自动化部署方法、装置、设备及存储介质
CN111984270A (zh) * 2020-08-20 2020-11-24 第四范式(北京)技术有限公司 应用部署方法和系统
CN112083971B (zh) * 2020-09-15 2023-04-11 北京凌云雀科技有限公司 组件处理方法、设备及存储介质
CN114363400B (zh) * 2020-09-30 2024-07-12 电科云(北京)科技有限公司 基于云平台的应用编排方法、装置及计算机可读存储介质
CN112269640B (zh) * 2020-11-02 2023-03-28 浪潮云信息技术股份公司 一种实现容器云组件的生命周期管理的方法
CN112835713B (zh) * 2021-01-28 2024-02-06 交通银行股份有限公司 一种基于多容器集群的工作负载组合统一部署方法及系统
CN113110923B (zh) * 2021-03-25 2023-10-20 南京飞灵智能科技有限公司 基于k8s的工作流引擎的使用方法及装置
US11693649B2 (en) 2021-04-06 2023-07-04 International Business Machines Corporation Autonomous Kubernetes operator creation and management
CN113190239B (zh) * 2021-05-20 2024-05-24 洛阳轴承研究所有限公司 一种工业应用快速部署的方法
CN113312310A (zh) * 2021-06-08 2021-08-27 北京自如信息科技有限公司 一种应用资源管理方法、装置及系统
CN113434246B (zh) * 2021-06-15 2023-04-07 竹间智能科技(上海)有限公司 一种多层依赖部署方法、工具、设备及介质
CN114374692A (zh) * 2021-12-02 2022-04-19 浪潮云信息技术股份公司 一种多容器集群管理的实现方法及系统
CN114510282B (zh) * 2021-12-15 2024-02-13 北京达佳互联信息技术有限公司 一种自动化应用的运行方法、装置、设备以及存储介质
CN114297442A (zh) * 2021-12-29 2022-04-08 中软信息系统工程有限公司 一种服务架构编排方法、装置、电子设备及存储介质
CN114461304A (zh) * 2022-02-10 2022-05-10 浙江大华技术股份有限公司 配置文件的确定方法和装置、存储介质及电子设备
CN114546588A (zh) * 2022-02-15 2022-05-27 浙江大华技术股份有限公司 任务的部署方法、装置、存储介质及电子装置
CN114201240B (zh) * 2022-02-21 2022-05-27 联信弘方(北京)科技股份有限公司 配置helm chart的方法和装置
CN114691125B (zh) * 2022-04-01 2023-05-23 上海道客网络科技有限公司 一种应用资源映射转换的方法、系统、介质和电子设备
CN116938988A (zh) * 2022-04-07 2023-10-24 华为云计算技术有限公司 一种业务管理方法、系统及相关装置
CN114938378B (zh) * 2022-04-22 2023-06-27 新华智云科技有限公司 一种基于kubernetes的资源过滤方法、系统、设备及存储介质
CN115202712B (zh) * 2022-06-30 2023-12-29 北京亚控科技发展有限公司 应用管理方法、应用订阅方法及相关设备
CN115204136A (zh) * 2022-09-13 2022-10-18 江苏博云科技股份有限公司 基于DevOps的简化yaml操作复杂度的方法、装置、设备及介质
CN116661814A (zh) * 2023-05-31 2023-08-29 江苏苏宁银行股份有限公司 一种自动化的应用上云方法和系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108762769A (zh) * 2018-06-04 2018-11-06 万惠投资管理有限公司 微服务应用编排和部署方法、装置及计算机终端
CN109165020A (zh) * 2018-07-25 2019-01-08 山东中创软件商用中间件股份有限公司 应用编排方法、装置、设备以及计算机可读存储介质
CN109347663A (zh) * 2018-09-28 2019-02-15 南京易捷思达软件科技有限公司 一种OpenStack云平台中资源可视化编排方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IN2015CH04027A (zh) * 2015-08-03 2015-08-14 Wipro Ltd
US10652313B2 (en) * 2015-11-08 2020-05-12 Vmware, Inc. Deploying an application in a hybrid cloud computing environment

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108762769A (zh) * 2018-06-04 2018-11-06 万惠投资管理有限公司 微服务应用编排和部署方法、装置及计算机终端
CN109165020A (zh) * 2018-07-25 2019-01-08 山东中创软件商用中间件股份有限公司 应用编排方法、装置、设备以及计算机可读存储介质
CN109347663A (zh) * 2018-09-28 2019-02-15 南京易捷思达软件科技有限公司 一种OpenStack云平台中资源可视化编排方法

Also Published As

Publication number Publication date
CN110768833A (zh) 2020-02-07

Similar Documents

Publication Publication Date Title
CN110768833B (zh) 基于kubernetes的应用编排部署方法及装置
US11294655B2 (en) Computer-automated software release and deployment architecture
CN108829409B (zh) 一种分布式系统快速部署方法及系统
US11157253B1 (en) Computer-automated software release and deployment architecture
US9876878B2 (en) Seamless cluster servicing
CN112214330A (zh) 集群中主节点的部署方法、装置及计算机可读存储介质
CN106681956A (zh) 一种大规模计算机集群的操作方法及装置
CN113220416B (zh) 基于云平台的集群节点伸缩系统及实现方法和运行方法
CN113569987A (zh) 模型训练方法和装置
CN115048205B (zh) Etl调度平台及其部署方法、计算机可读存储介质
US11755301B2 (en) Deployment of cloud infrastructures using a cloud management platform
US11431563B1 (en) Intelligent management of cloud infrastructures using a cloud management platform
US20230037199A1 (en) Intelligent integration of cloud infrastructure tools for creating cloud infrastructures
US20220357938A1 (en) Automatically configuring and deploying a software operator in a distributed computing environment from a package
EP4162649B1 (en) Stable references for network function life cycle management automation
US11231910B2 (en) Topological lifecycle-blueprint interface for modifying information-technology application
CN114912897A (zh) 工作流执行方法、工作流编排方法及电子设备
CN112379934B (zh) 一种云计算平台的部署方法及装置、存储介质
US20200133709A1 (en) System and method for content - application split
CN114787836A (zh) 用于远程执行一个或更多个任意定义的工作流的系统和方法
CN110209409B (zh) 一种应用产品的定制方法、系统及存储介质
CN114327770A (zh) 容器集群管理系统及方法
CN114035890A (zh) 一种基于容器技术的ci/cd服务部署方法、装置、设备及介质
CN113608754A (zh) 服务实例化方法、装置及电子设备
US20240061708A1 (en) Controller for computing environment frameworks

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