本文的目的是通过在 Kubernetes 集群上创建并配置 Jenkins Server ,实现应用开发管理的 CI/CD 流程,并且利用 Kubernetes-Jenkins-Plugin 实现动态的按需扩展 jenkins-slave。
安装
本文所需代码在这里
推送 Jenkins Master Docker 镜像到 Harbor
1 2 3
   | $ cd master $ docker build -t 172.31.21.226/ideal/jenkins:lts . $ docker push 172.31.21.226/ideal/jenkins:lts
   | 
 
推送 Jenkins Slave Docker 镜像到 Harbor
1 2 3
   | $ cd slave $ docker build -t 172.31.21.226/ideal/jnlp-slave:latest . $ docker push 172.31.21.226/ideal/jnlp-slave:latest
   | 
 
安装 Jenkins
1 2
   | $ kubectl apply -f https://raw.githubusercontent.com/batizhao/dockerfile/master/k8s/jenkins/service-account.yml $ kubectl apply -f ./
   | 
 
Kubernetes 插件
安装
略过。
配置
系统管理 - 系统设置 - 云 - Kubernetes
1 2 3
   | Name: kubernetes Kubernetes URL: https://kubernetes.default Jenkins URL: http://jenkins.default:8080
   | 
 
如果 service account 没有问题,点击 test,应该可以看到 Connection test successful。

系统管理 - 系统设置 - 云 - Kubernetes - Add Pod Template
1 2 3 4 5 6 7 8 9 10 11
   | images - Add Pod Template: Name: jnlp-slave Labels: jnlp-slave
  Containers: Name: jnlp  Docker image: 172.31.21.226/ideal/jnlp-slave:latest Always pull image: yes Jenkins slave root directory: /home/jenkins Host path: /var/run/docker.sock Mount path: /var/run/docker.sock
   | 
 


Jenkins Job
非 pipeline 方式



pipeline 方式
直接实现 groovy 脚本,可以放到 git 中管理。
1 2 3 4 5 6 7 8
   | podTemplate(label: 'jnlp-slave') {   node('jnlp-slave'){     git branch: 'master', credentialsId: 'e242d1e1-58b5-4645-a84e-64f957e32016', url: 'https://gitee.com/idealsoftone/poseidon.git'     sh 'sleep 120'     build_tag = sh(returnStdout: true, script: 'git rev-parse --short HEAD').trim()     echo build_tag   } }
  | 
 
这里指定 jenkins slave 为插件中配置的 jnlp-slave。

