基于Kubernetes的镜像构建方法及相关装置制造方法及图纸

技术编号:32548015 阅读:33 留言:0更新日期:2022-03-05 11:47
本发明专利技术公开基于Kubernetes的镜像构建方法及相关装置,可以通过自定义构建执行器,通过构建执行器遍历用户输入的镜像构建文件Dockerfile,从而获得Dockerfile中的各构建阶段的构建信息;获得用户输入的各构建阶段的上下文路径信息;根据各构建阶段的构建指令,确定各构建阶段的依赖关系;对于任一所述构建阶段,均执行:根据所述构建阶段的上下文路径信息、所述构建阶段的依赖关系和所述构建阶段的构建信息,构建所述构建阶段的镜像文件包。本发明专利技术无需依赖Docker守护进程的交互式访问,可以直接根据Dockerfile中的构建指令构建相应的镜像文件,无需获得更高的权限,安全性较高。安全性较高。安全性较高。

【技术实现步骤摘要】
基于Kubernetes的镜像构建方法及相关装置


[0001]本专利技术涉及云计算
,特别涉及一种基于Kubernetes的镜像构建方法及相关装置。

技术介绍

[0002]随着云架构的不断普及,越来越多企业采用云原生方法来开发应用,以提高速度、增加灵活性、改善软件质量并降低风险。容器是云原生概念的重要组成部分,具有“轻量级”、“可移植”等特点,容器镜像的构建在持续集成和持续交付中扮演着非常重要的角色。Kubernetes是一个开源容器编排平台,可以大规模地管理分布式、容器化的应用,在Kubernetes集群中,用Docker构建容器镜像是最常用的方法,但是直接通过Docker从标准的Dockerfile构建容器镜像通常依赖于对Docker守护进程的交互式访问,这意味着容器需要获取更高的访问权限才能运行,存在安全隐患。

技术实现思路

[0003]鉴于上述问题,本专利技术提供一种克服上述问题或者至少部分地解决上述问题的基于Kubernetes的镜像构建方法及相关装置。
[0004]第一方面,一种基于Kubernetes的镜像构建方法,包括:
[0005]遍历用户输入的镜像构建文件Dockerfile,从而获得所述Dockerfile中的各构建阶段的构建信息,其中,各所述构建阶段的构建信息均至少包括:相应构建阶段的至少一个构建指令,一个所述Dockerfile对应多个所述构建阶段,所述构建指令为构建镜像文件的指令,一个所述构建指令对应一个所述镜像文件层;
[0006]获得所述用户输入的各所述构建阶段的上下文路径信息,其中,所述上下文路径信息表征各所述构建阶段编译构建镜像文件包所基于的指定路径,一个所述构建阶段对应一个所述镜像文件包,一个所述镜像文件包对应至少一个所述镜像文件层;
[0007]根据各所述构建阶段的构建指令,确定各所述构建阶段的依赖关系;
[0008]对于任一所述构建阶段,均执行:根据所述构建阶段的上下文路径信息、所述构建阶段的依赖关系和所述构建阶段的构建信息,构建所述构建阶段的镜像文件包。
[0009]结合第一方面,在某些可选的实施方式中,所述根据所述构建阶段的上下文路径信息、所述构建阶段的依赖关系和所述构建阶段的构建信息,构建所述构建阶段的镜像文件包,包括:
[0010]判断所述构建阶段的解压标志位是否为解压标识;
[0011]若是,则根据所述依赖关系解压其它镜像文件包作为相应所述构建阶段的基础镜像文件,并基于所述基础镜像文件,执行所述构建信息中的构建指令,从而基于所述上下文路径信息构建得到各所述构建指令对应的镜像文件层;
[0012]若不是,则直接执行所述构建信息中的构建指令,从而基于所述上下文路径信息构建得到各所述构建指令对应的镜像文件层;
[0013]将各所述镜像文件层打包在一个镜像文件夹里,从而构建得到所述构建阶段的镜像文件包。
[0014]结合上一个实施方式,在某些可选的实施方式中,所述执行所述构建的构建指令,从而基于所述上下文路径信息构建得到对应的镜像文件层,包括:
[0015]针对任一所述构建指令,均执行:判断镜像缓存中是否存储有所述构建指令对应的镜像文件层;
[0016]若存储有,则直接将所述镜像缓存中的所述镜像文件层作为本次执行所述构建指令得到的镜像文件层添加至所述构建阶段的镜像文件夹里;
[0017]若未存储有,则执行所述构建信息中的构建指令,从而基于所述上下文路径信息构建得到各所述构建指令对应的镜像文件层并添加至所述镜像文件夹里。
[0018]结合第一方面,在某些可选的实施方式中,在所述根据各所述构建阶段的构建指令,确定各所述构建阶段的依赖关系之后,所述方法还包括:
[0019]根据各所述构建阶段的上下文路径信息、各所述构建阶段的依赖关系和各所述构建阶段的构建信息,生成第一信息列表,其中,不同的所述构建阶段的所述上下文路径信息、所述依赖关系和所述构建信息存储在所述第一信息列表的不同区域,一个所述区域对应一个所述构建阶段;
[0020]所述根据所述构建阶段的上下文路径信息、所述构建阶段的依赖关系和所述构建阶段的构建信息,构建所述构建阶段的镜像文件包,包括:
[0021]根据所述第一信息列表中记录的所述构建阶段对应所述区域的所述上下文路径信息、所述依赖关系和所述构建信息,构建所述构建阶段的镜像文件包。
[0022]结合上一个实施方式,在某些可选的实施方式中,在所述根据所述第一信息列表中记录的所述构建阶段对应所述区域的所述上下文路径信息、所述依赖关系和所述构建信息,构建所述构建阶段的镜像文件包之前,所述方法还包括:
[0023]对于任一所述区域,均执行:判断镜像缓存中是否存储有所述区域记录的各所述构建指令对应的镜像文件层;
[0024]若存储有,则为相应的所述构建指令设置相应的已执行标识;
[0025]若未存储有,则为相应的所述构建指令设置相应的未执行标识;
[0026]所述根据所述第一信息列表中记录的所述构建阶段对应所述区域的所述上下文路径信息、所述依赖关系和所述构建信息,构建所述构建阶段的镜像文件包,包括:
[0027]对于设置有所述已执行标识的构建指令,均执行:直接将所述镜像缓存中的所述镜像文件作为本次执行所述构建指令得到的镜像文件;
[0028]对于设置有所述未执行标识的构建指令,均执行:执行所述构建指令,从而产生相应的所述镜像文件;
[0029]将各所述镜像文件打包在一个镜像文件夹里,从而构建得到所述构建阶段的镜像文件包。
[0030]可选的,在某些可选的实施方式,在构建得到所述构建阶段的镜像文件包之后,所述方法还包括:
[0031]对于镜像缓存中存储有的所述镜像文件,均执行:对所述镜像文件的文件信息进行SHA256校验,从而得到相应的当前的校验值,其中,所述文件信息至少包括:权限信息和
文件内容中的至少一种;
[0032]若所述当前的校验值与元数据文件中记录的所述镜像文件之前的校验值不一致,则将所述镜像文件的当前校验值更新至所述元数据文件,其中,所述元数据文件中记录各执行过的构建指令的元数据,所述元数据至少包括所述校验值。
[0033]结合第一方面,在某些可选的实施方式中,在构建得到所述构建阶段的镜像文件包之后,所述方法还包括:
[0034]将各所述镜像文件包打包形成完整的镜像文件,并推送至目标注册中心。
[0035]第二方面,一种基于Kubernetes的镜像构建装置,包括:构建信息获得单元、路径信息获得单元、依赖关系确定单元和镜像文件构建单元;
[0036]所述构建信息获得单元,用于遍历用户输入的镜像构建文件Dockerfile,从而获得所述Dockerfile中的各构建阶段的构建信息,其中,各所述构建阶段的构建信息均至少包括:相应构建阶段的至少一个构建指令,一个所述Dockerfile对应多个所述构建阶段,所述构建指令为构建本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于Kubernetes的镜像构建方法,其特征在于,包括:遍历用户输入的镜像构建文件Dockerfile,从而获得所述Dockerfile中的各构建阶段的构建信息,其中,各所述构建阶段的构建信息均至少包括:相应构建阶段的至少一个构建指令,一个所述Dockerfile对应多个所述构建阶段,所述构建指令为构建镜像文件的指令,一个所述构建指令对应一个所述镜像文件层;获得所述用户输入的各所述构建阶段的上下文路径信息,其中,所述上下文路径信息表征各所述构建阶段编译构建镜像文件包所基于的指定路径,一个所述构建阶段对应一个所述镜像文件包,一个所述镜像文件包对应至少一个所述镜像文件层;根据各所述构建阶段的构建指令,确定各所述构建阶段的依赖关系;对于任一所述构建阶段,均执行:根据所述构建阶段的上下文路径信息、所述构建阶段的依赖关系和所述构建阶段的构建信息,构建所述构建阶段的镜像文件包。2.根据权利要求1所述的方法,其特征在于,所述根据所述构建阶段的上下文路径信息、所述构建阶段的依赖关系和所述构建阶段的构建信息,构建所述构建阶段的镜像文件包,包括:判断所述构建阶段的解压标志位是否为解压标识;若是,则根据所述依赖关系解压其它镜像文件包作为相应所述构建阶段的基础镜像文件,并基于所述基础镜像文件,执行所述构建信息中的构建指令,从而基于所述上下文路径信息构建得到各所述构建指令对应的镜像文件层;若不是,则直接执行所述构建信息中的构建指令,从而基于所述上下文路径信息构建得到各所述构建指令对应的镜像文件层;将各所述镜像文件层打包在一个镜像文件夹里,从而构建得到所述构建阶段的镜像文件包。3.根据权利要求2所述的方法,其特征在于,所述执行所述构建信息中的构建指令,从而基于所述上下文路径信息构建得到各所述构建指令对应的镜像文件层,包括:针对任一所述构建指令,均执行:判断镜像缓存中是否存储有所述构建指令对应的镜像文件层;若存储有,则直接将所述镜像缓存中的所述镜像文件层作为本次执行所述构建指令得到的镜像文件层添加至所述构建阶段的镜像文件夹里;若未存储有,则执行所述构建信息中的构建指令,从而基于所述上下文路径信息构建得到各所述构建指令对应的镜像文件层并添加至所述镜像文件夹里。4.根据权利要求1所述的方法,其特征在于,在所述根据各所述构建阶段的构建指令,确定各所述构建阶段的依赖关系之后,所述方法还包括:根据各所述构建阶段的上下文路径信息、各所述构建阶段的依赖关系和各所述构建阶段的构建信息,生成第一信息列表,其中,不同的所述构建阶段的所述上下文路径信息、所述依赖关系和所述构建信息存储在所述第一信息列表的不同区域,一个所述区域对应一个所述构建阶段;所述根据所述构建阶段的上下文路径信息、所述构建阶段的依赖关系和所述构建阶段的构建信息,构建所述构建阶段的镜像文件包,包括:根据所述第一信息列表中记录的所述构建阶段对应所述区域的所述上下文路径信息、
所述依赖关系和所述构建信息,构建所述构建阶段的镜像文件包。5.根据权利要求4所述的方法,其特征在于,在所述根据所述第一信息列表中记录的所述构建阶段对应所述区域的所述上下文路径信息、所述依赖关系和所述构建信息,构建所述构建阶段的镜像文件包之前,所述方法还包括:对于任...

【专利技术属性】
技术研发人员:张蜜蜜刘迪刘泽三刘歆一高莹刘雅琦杨慧玉
申请(专利权)人:国网信息通信产业集团有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1