一、运行Jenkins流水线流程思路:
场景1:常规java应用,使用jenkins pipeline 交付到Kubernetes集群中
1、准备好java代码、Dockerfile、 deploy. yaml资源清单文件
CI阶段:
1、获取代码
2、漏洞扫描
3、检测漏洞扫描结果,如果正常则继续、否则就终止
4、使用maven进行编译,打包
5、制作Docker镜像、推送到Harbor仓库
6、交付应用到K8S
CD阶段:
1、获取完整的镜像名称;从Harbor中获取 (curl命令去获取)
2、将完整的镜像名称替换到deploy.yaml这个资源清单中;
3、直接部署到K8S的生产环境名称空间;
4、询问是否需要回退;
二 - java代码提交
1、下载代码
代码地址: https://gitee.com/oldxuedu/springboot-helloworld
wget https://gitee.com/oldxuedu/springboot-helloworld/repository/blazearchive/master.zip
做域名解析 如 10.240.0.201 gitlab.oldxu.net
2、创建新仓库,推送到gitlab仓库
[root@master01 springboot-CICD]# cd springboot-helloworld-master/
[root@master01 springboot-helloworld-master]#
[root@master01 springboot-helloworld-master]# ls
deploy.yaml Dockerfile entrypoint.sh pom.xml push_jar.sh README.md src
git init
git add remote origin http://gitlab.oldxu.net/root/springboot.git
git add .
git config --global user.email "123456@qq.com"
git config --global user.name "oldxu"
git commit -m "初始化"
git push -u origin master
deploy.yaml 需要替换的变量:
{NameSpace}
{Image}
{host}
三、Pipeline流水线-获取代码
#本小段流程思路:
1、获取代码
调用git来获取即可;
1、slavePod如何访问Gitlab
1、通过gitlab的service地址去访问项目;
2、通过Coredns配置自定义域名解析;(*本文采用该方式)
2、Gitlab项目是私有的 如何处理;
需要 在jenkins上配置好对应gitlab认证的信息;
才能使用pipeline去获取代码
environment{
Gitlab_Id = "gitlab-root-token"
Gitlab_Pro = "http://gitlab.oldxu.net/root/springboot.git"
}
#过Coredns配置自定义域名解析;
kubectl edit configmap -n kube-system coredns