基于docker和kubernetes离线的跨平台的CI/CD的实现方法及装置制造方法及图纸

技术编号:27468219 阅读:26 留言:0更新日期:2021-03-02 17:32
本发明专利技术公开了一种基于docker和kubernetes离线的跨平台的CI/CD的实现方法及装置,该方法包括:在局域网环境下离线自动化部署kubernetes集群;在kubernetes集群上部署动态可伸缩的Jenkins集群;基于docker的buildx功能,在Jenkins Slave节点中进行异构镜像的构建;在Jenkins Slave节点中通过helm从企业私有镜像仓库拉取Chart包,然后根据预定义的value值在kubernetes集群上跨平台部署或更新应用。本发明专利技术解决了现有技术中异构计算系统的软件应用的开发运维成本高、跨平台混合部署难的问题,有效提高了应用开发和部署的效率。率。率。

【技术实现步骤摘要】
基于docker和kubernetes离线的跨平台的CI/CD的实现方法及装置


[0001]本专利技术涉及计算机应用
,具体涉及一种基于docker和kubernetes离线的跨平台的CI/CD的实现方法及装置。

技术介绍

[0002]随着软件变得越来越复杂,一个完整的后端服务不再是单体服务,而是由多个职责和功能不同的微服务组成,服务之间复杂的拓扑关系以及单机已经无法满足的性能需求使得软件的部署和运维工作变得非常复杂,这也就使得部署和运维大型集群变成了非常迫切的需求。
[0003]目前docker已经是容器技术的事实标准了,它让开发者将应用以及依赖打包到一个可移植的容器中,让应用程序的运行可以实现环境无关,通过docker实现进程、网络以及挂载点和文件系统隔离的环境,并且能够对宿主机的资源进行更合理分配,同时能够做到“Build Once,Deploy anywhere”。而kubernetes更是为容器技术的大规模应用提供了坚实的技术支撑,软件工程师可以通过kubernetes来定义服务之间的拓扑关系、线上的节点个数、资源使用量并且能够快速实现水平扩容、蓝绿部署等在过去复杂的运维操作。
[0004]在当前异构计算发展迅速以及云平台国产化不断进行的场景下,docker在一些ARM机器上时会比较困难,基本需要针对这些平台构建各自的镜像。在Docker Swarm/Kubernetes/Openshift这类容器编排引擎进行服务部署时,简单地定义和使用一个Yaml文件进行跨平台混合部署将成为一个很大的问题,主要是由于需要进行节点架构识别后,拉取对应名称的镜像。
[0005]此外,由于kubernetes集群的部署较为复杂,尽管官方提供了kubeadm的安装部署方式,依然存在基础环境配置和证书的问题,而且不如二进制安装方便配置和定位问题。同时kubernetes集群部署通常依赖互联网环境,在一些无法连接外网的生产环境下不方便部署。
[0006]需要注意的是,本部分旨在为权利要求书中陈述的本公开的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。

技术实现思路

[0007]本专利技术实施例提供一种基于docker和kubernetes离线的跨平台的CI/CD的实现方法及装置,以解决现有技术中异构计算系统的软件应用的开发运维成本高、跨平台混合部署难的问题。
[0008]第一方面,本专利技术实施例提供一种基于docker和kubernetes离线的跨平台的CI/CD的实现方法,包括:
[0009]通过ansible自定义的脚本,在局域网环境下离线自动化部署kubernetes集群;
[0010]上传任务代码至Gitlab代码版本管理仓库,然后通过所述Gitlab代码版本管理仓
库配置的Jenkins Webhook触发自动构建,以Jenkins官方镜像为基础镜像定制Jenkins Master镜像和Jenkins Slave镜像在所述kubernetes集群上部署动态可伸缩的Jenkins集群,并使所述Jenkins集群中的Jenkins Master节点根据任务的数量动态生成对应数量的Jenkins Slave节点;
[0011]基于docker的buildx功能,在所述Jenkins Slave节点中依次执行所述任务代码的静态分析、单元测试、编译打包操作后进行异构镜像的构建;
[0012]通过docker推送所述异构镜像至企业私有镜像仓库后,在所述Jenkins Slave节点中通过helm从所述企业私有镜像仓库拉取Chart包,然后根据预定义的value值在所述kubernetes集群上跨平台部署或更新应用。
[0013]作为本专利技术第一方面的优选方式,所述通过ansible自定义的脚本,在局域网环境下离线自动化部署kubernetes集群,包括:
[0014]通过在管理节点运行ansible的初始化脚本,在所述kubernetes集群中包括的所有kubernetes节点进行基础环境初始化操作;
[0015]通过在管理节点运行ansible的etcd安装脚本,在所述kubernetes集群中部署高可用的etcd集群;
[0016]通过在管理节点运行ansible的docker安装脚本,在各所述kubernetes节点中安装docker;
[0017]通过在管理节点运行ansible的kube-master安装脚本,在所述kubernetes集群中分别安装kube-master节点和kube-node节点;
[0018]通过在管理节点运行ansible的网络插件安装脚本,在所述kubernetes集群中安装多种用于配置kubernetes网络的网络插件;
[0019]通过在管理节点运行ansible的集群附件安装脚本,在所述kubernetes集群中安装多种集群附件。
[0020]作为本专利技术第一方面的优选方式,所述通过在管理节点运行ansible的初始化脚本,在所述kubernetes集群中包括的所有kubernetes节点进行基础环境初始化操作,包括:
[0021]在管理节点运行ansible的初始化脚本,通过自动向所述kubernetes集群内所有kubernetes节点分发CA证书和CA私钥以及所述kubernetes集群中kubeconfig组件、kube-proxy组件、kube-controller-manager组件、kube-scheduler组件的配置文件,并同步所述kubernetes集群内各kubernetes节点之间的时间、加载内核模块并优化内核参数以及安装软件依赖,以在所述kubernetes集群中包括的所有kubernetes节点进行基础环境初始化操作。
[0022]作为本专利技术第一方面的优选方式,所述通过在管理节点运行ansible的etcd安装脚本,在所述kubernetes集群中部署高可用的etcd集群,包括:
[0023]在管理节点运行ansible的etcd安装脚本,通过自动向安装的各etcd节点分发etcd二进制文件和证书私钥、根据预定义模板创建etcd集群的systemdunit文件并添加为自启动以及检测etcd集群的服务启动状态,以在所述kubernetes集群中部署高可用的etcd集群。
[0024]作为本专利技术第一方面的优选方式,所述以Jenkins官方镜像为基础镜像定制Jenkins Master镜像和Jenkins Slave镜像在所述kubernetes集群上部署动态可伸缩的
Jenkins集群,并使所述Jenkins集群中的Jenkins Master节点根据任务的数量动态生成对应数量的Jenkins Slave节点,包括:
[0025]根据Jenkins官方镜像在本地生成Jenkins容器,在所述Jenkins容器中安装CI/CD所必需插件并导出插件列表,以所述Jenkins Mas本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于docker和kubernetes离线的跨平台的CI/CD的实现方法,其特征在于,包括:通过ansible自定义的脚本,在局域网环境下离线自动化部署kubernetes集群;上传任务代码至Gitlab代码版本管理仓库,然后通过所述Gitlab代码版本管理仓库配置的Jenkins Webhook触发自动构建,以Jenkins官方镜像为基础镜像定制Jenkins Master镜像和Jenkins Slave镜像在所述kubernetes集群上部署动态可伸缩的Jenkins集群,并使所述Jenkins集群中的Jenkins Master节点根据任务的数量动态生成对应数量的Jenkins Slave节点;基于docker的buildx功能,在所述Jenkins Slave节点中依次执行所述任务代码的静态分析、单元测试、编译打包操作后进行异构镜像的构建;通过docker推送所述异构镜像至企业私有镜像仓库后,在所述Jenkins Slave节点中通过helm从所述企业私有镜像仓库拉取Chart包,然后根据预定义的value值在所述kubernetes集群上跨平台部署或更新应用。2.根据权利要求1所述的实现方法,其特征在于,所述通过ansible自定义的脚本,在局域网环境下离线自动化部署kubernetes集群,包括:通过在管理节点运行ansible的初始化脚本,在所述kubernetes集群中包括的所有kubernetes节点进行基础环境初始化操作;通过在管理节点运行ansible的etcd安装脚本,在所述kubernetes集群中部署高可用的etcd集群;通过在管理节点运行ansible的docker安装脚本,在各所述kubernetes节点中安装docker;通过在管理节点运行ansible的kube-master安装脚本,在所述kubernetes集群中分别安装kube-master节点和kube-node节点;通过在管理节点运行ansible的网络插件安装脚本,在所述kubernetes集群中安装多种用于配置kubernetes网络的网络插件;通过在管理节点运行ansible的集群附件安装脚本,在所述kubernetes集群中安装多种集群附件。3.根据权利要求2所述的实现方法,其特征在于,所述通过在管理节点运行ansible的初始化脚本,在所述kubernetes集群中包括的所有kubernetes节点进行基础环境初始化操作,包括:在管理节点运行ansible的初始化脚本,通过自动向所述kubernetes集群内所有kubernetes节点分发CA证书和CA私钥以及所述kubernetes集群中kubeconfig组件、kube-proxy组件、kube-controller-manager组件、kube-scheduler组件的配置文件,并同步所述kubernetes集群内各kubernetes节点之间的时间、加载内核模块并优化内核参数以及安装软件依赖,以在所述kubernetes集群中包括的所有kubernetes节点进行基础环境初始化操作。4.根据权利要求2所述的实现方法,其特征在于,所述通过在管理节点运行ansible的etcd安装脚本,在所述kubernetes集群中部署高可用的etcd集群,包括:在管理节点运行ansible的etcd安装脚本,通过自动向安装的各etcd节点分发etcd二
进制文件和证书私钥、根据预定义模板创建etcd集群的systemdunit文件并添加为自启动以及检测etcd集群的服务启动状态,以在所述kubernetes集群中部署高可用的etcd集群。5.根据权利要求1所述的实现方法,其特征在于,所述以Jenkins官方镜像为基础镜像定制Jenkins Master镜像和Jenkins Slave镜像在所述kubernetes集群上部署动态可伸缩的Jenkins集群,并使所述Jenkins集群中的Jenkins Master节点根据任务的数量动态生成对应数量的Jenkins Slave节点,包括:根据Jenkins官方镜像在本地生成Jenkins容器,在所述Jenkins容器中安装CI/CD所必需插件并导出插件列表,以所述Jenkins Master官方镜像为基础镜像并在其内部安装所述插件列表中的插件,封装成定制的Jenkins Master镜像;在Jenkins Slave官方镜像中安装本地预设的maven组件、gradle组件、docker组件和helm组件,封装成定制的Jenkins Slave镜像;通过配置资源清单文件的形式在所述kubernet...

【专利技术属性】
技术研发人员:朱帅梁相军
申请(专利权)人:电信科学技术第十研究所有限公司
类型:发明
国别省市:

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

1