环境:centos7.6 、Docker version 19.03.5、Jenkins 2.249.3(jackson = 2.11.2、docker plugin = 1.2.1)
1、安装 kubernetes cli 插件,否则会报错
java.lang.NoSuchMethodError: No such DSL method 'withKubeConfig' found among steps [approveReceivedEvent,...
2、配置 docker
“系统管理”–“节点管理”–“configure cloud"–“docker”
详细配置 docker 可以参考 https://blog.csdn.net/Man_In_The_Night/article/details/111319868
配置 docker host uri、docker image 等,此处的镜像 mapleaves/mvn-jnlp:1.0 包含 docker、kubectl、mvn 等命令,制作方法参考 https://blog.csdn.net/Man_In_The_Night/article/details/111741486
配置 docker volume
/var/run/docker.sock:/var/run/docker.sock
/var/run/m2:/root/.m2
/etc/localtime:/etc/localtime
/etc/docker/daemon.json:/etc/docker/daemon.json
/root/.kube:/root/.kube
remote file system root 填写 /home/jenkins, connect method 选择 jnlp
配置好 jenkins url 以及 tunnel(tunnel 前面不能带 http)
3、创建 k8s credential
类型选择 “secret file”,file 选择 k8s 的 config file(一般在 master 节点的 /root/.kube 目录下,如果是 kubeadm ,一般是 /etc/kubernetes/admin.conf 文件)。此处我已经建好了 id 为 k8s 的 credential,所以有提示。
4、创建流水线pipeline script
此处 contextName: 'kubernetes-admin@kubernetes 根据 kube config 文件中的 current-context 确定
node("mapleaves") {
stage('SonarQube 代码检测') {
echo "============================== 1.代码检测阶段 =============================="
// SonarQube 代码检测
}
stage('代码编译打包') {
echo "============================== 2.代码编译打包阶段 =============================="
// 代码编译打包
try {
sh "mvn --version"
} catch (exc) {
println "构建失败"
throw(exc)
}
}
stage('构建 Docker 镜像') {
echo "============================== 3.构建 Docker 镜像阶段 =============================="
// 构建 Docker 镜像
sh "docker --version"
}
stage('部署应用到 k8s') {
echo "============================== 4.部署应用到 k8s =============================="
// 部署应用到 k8s
withKubeConfig([credentialsId: 'k8s',contextName: 'kubernetes-admin@kubernetes',]) {
sh """
kubectl get node
kubectl get ns
kubectl get po --all-namespaces
"""
}
}
}
5、点击“立即构建”,查看日志输出