大家好,又见面了,我是你们的朋友全栈君。
Docker、Kubernetes的 CICD实现思路
Jenkins是一个比较流行的持续集成工具
GitLab是存储镜像的镜像仓库
由客户端将代码push推送到git仓库,gitlab上配置了一个webHook的东西可以触发Jenkins的构建。进入到Jenkins虚线范围内,它所做的事情非常多,从mvn构建代码,对代码进行静态分析,做单元测试,测试通过之后就可以build镜像,镜像构建成功后就把镜像push推送到Harbor镜像仓库中,镜像push推送到镜像仓库后,我们就可以调用kubernetes集群的restAPI更新服务,而后kubernetes接收到了更新的指令,从Harbor镜像仓库pull拉取镜像,从而完成服务的更新与重启,最后我们从客户端来访问kubernetes集群的服务
1.开发从镜像库里获取基础镜像,对应用进行容器化开发;
2.开发提交代码到Gitlab(在Kubernetes中实现Gitlab服务,并通过持久化存储保存用户数据);
3.Gitlab收到代码提交请求后通过webhook触发Jenkins master
4.Jenkins master收到请求后在slave节点中对源码进行打包;
5.在源码打包完成后根据流水线,从Gitlab中获取dockerfile,在slave节点中生成docker images;
6.Docker镜像生成之后上传到Docker 私有仓库harbor;
8.通过Jenkins流水线在Kubernetes测试环境拉取镜像,部署应用;
9.测试成功之后,通过Jenkins流水线在Kubernetes生产环境进行应用的部署上线。
其中build镜像过程还可以细分为两部:
构建可执行的程序包(Java为tar包)
将tar包导入基础镜像(Java程序的基础镜像可以理解为一个包含了JDK的linux系统),其实现可以通过dockerfile导入tar包到基础镜像从而构建为应用镜像,也可以通过openshift的s2i启动一个名为build的pod将tar包的二进制流导入基础镜像然后通过docker commit构建为应用镜像
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/135692.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...