Jenkins 执行 pipeline 完成 kubernetes 集群的应用部署
背景
1、基于 GitLab 版本管理,创建 SpringBoot 项目,提交工程代码。
2、触发 Jenkins 执行 mvn 编译构建打包。
3、编译完成执行 Sonar 代码质量检查。
4、编写 Dockerfile 文件,把步骤2产生的包制作成镜像。
5、把步骤4制作成的镜像 push 到远程 Harbor 仓库。
6、编写 Deployment 文件,提交到 kubernetes 集群。
7、Kubernetes 从远程 Harbor 仓库拉取镜像版本,创建部署相关集群服务。
从上面可以看出,一个简单的小工程也是繁琐而复杂的,需要很多环节的操作步骤去完成整个的开发任务。
这就需要一些可以帮助开发者提升效能的自动化工具,从持续集成(Continuous Integration)、持续交付(Continuous Delivery)和 持续部署(Continuous Deployment)三个环节考虑。
一、工程代码
Jenkinsfile 文件很重要,后续的 Jenkins 编译,都是通过这个文件里的 pipeline ?脚本来完成所有构建任务。
pipeline 脚本如下
二、Jenkins 构建
创建个 pipeline job,相关工程的配置展开如下。
主要就是通过最下面这个 Jenkinsfile 文件?,执行相关的任务构建。
job 界面如下图所示?,点击 Build with Parameters 就可以执行?构建。
构建过程如下
整个 2 ~ 7 的过程,全部都自动化执行?完了。
编译打包完成,自定义制作 Docker 镜像,push 到远程的镜像?仓库中。
最后,就是通过 kubernetes 集群去远程镜像仓库拉取镜像,然后进行部署?服务。
通过上面的指令,可以看到 kubernetes 已经从远程镜像仓库拉取了构建的镜像版本,然后也部署了2个集群的应用服务。
下面是 jenkins-pipeline.yml 的分享
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: scm
name: jenkins-pipeline
labels:
app: jenkins-pipeline
spec:
replicas: 2
selector:
matchLabels:
app: jenkins-pipeline
template:
metadata:
labels:
app: jenkins-pipeline
spec:
containers:
- name: jenkins-pipeline
image: 192.*.*.*:80/repository/pipeline-test:v0.0.13
imagePullPolicy: Always
ports:
- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
namespace: scm
name: jenkins-pipeline
labels:
app: jenkins-pipeline
spec:
selector:
app: jenkins-pipeline
ports:
- protocol: TCP
port: 18888
targetPort: 8080
type: NodePort
到此,今天的主题分享 Jenkins 执行 pipeline 完成 kubernetes 集群的应用部署就结束了。
写在最后
在不断的项目实施过程中,也不断的在经验总结,个人能力的提升还需要不断的学习,和大家共勉,文章中的分享有不恰当甚至错误的理解,也希望能够得到大家的指正,留言多交流。如对各位有帮助的,也请动动发财的手,点赞点个关注,也是对我的一种鼓励,谢谢各位。?