Jenkins版本(Jenkins2.309)
1.安装kubernetes插件

2. 新建流水线项目 指定名称prometheus-test-demo),选择流水线,点击确定

3. 对接 K8S 集群
3.1 申请 K8S 凭据
1 |
因为 Jenkins 服务器在 kubernetes 集群之外,所以我们准备以下文件才能从外面连接到 kubernetes 集群。 |
3.2 点击右上角「用户」 → 左下角「凭据」:

3.3 然后点击 Jenkins,选择全局凭据(Unrestricted)


添加凭据,类型选择 X.509 Client Certificate(如果没有这个选项,请安装插件docker pipline)
- Client Key: .kube/config文件中 client-key 对应的 key 文件
- Client Certificate: .kube/config文件中 client-certificate 对应的 crt 或是 pem 文件
- Server CA Certificate:.kube/config 文件中 certificate-authority 对应的 crt 或是 pem 文件,K8S 的最高权限证书
- ID:可不填写,默认会自动生成一串字符串,也可以自行设置
- 描述:描述下这个凭据的作用,比如这个可以写 对接 K8S 集群凭据

1 |
注意! 这里的key文件直接寻找对应的证书文件即可(如图所示) .kube/config 里嵌入的证书内容直接复制是无法用的,因为是base64加密过的,最好重新生成以下路径形式的,或者直接按照上图去寻找对应的pem文件 |

填写完成后,点击确认
3.4、配置 K8S 集群的对接
点击 系统管理 → 系统配置 → 滑动到页面最下面 or 节点管理


点击 a separate configuration page

- Kubernetes 地址:kubernetes服务地址,也就是 apiserver 的地址,一般是master 节点 NodeIP+6443 端口
- Kubernetes 服务证书 key:kube-ca.crt/pem文件的内容
- 凭据:刚才创建的 certificate 凭据
- Jenkins 地址:Agent 连接 Jenkins Master 的地址

其他都使用默认配置,点击连接测试,连接测试成功,点击 Save 存储
3.5、K8S pod template 配置
1 |
Jenkins 的 kubernetes-plugin 在执行构建时会在 kubernetes 集群中自动创建一个 Pod,并在 Pod 内部创建一个名为 jnlp 的容器,该容器会连接 Jenkins 并运行 Agent 程序,形成一个 Jenkins 的 Master 和 Slave 架构,然后 Slave 会执行构建脚本进行构建,但如果构建内容是要创建 Docker Image 就要实现 Docker In Docker 方案(在 Docker 里运行 Docker),如果要在集群集群内部进行部署操作可以使用 kubectl 执行命令,要解决 kubectl 的安装和权限分配问题。 |
1 |
为了方便配置一个 Pod Templates,在配置 kubernetes 连接内容的下面,这里的模板只是模板(与类一样使用时还要实例化过程),名称和标签列表不要以为是 Pod 的 name 和 label,这里的名称和标签列表只是 Jenkins 查找选择模板时使用的,Jenkins 自动创建 Pod 的 name 是项目名称+随机字母的组合,所以我们填写 jenkins-slave,命名空间填写对应的 namespace。 |

这边要注意,还要向pod内添加 几个 container
3.6、添加jenskins-slave通信连接容器 【jnlp】
1 |
容器名称是jnlp, Docker 镜像填写:jenkins/jnlp-slave:4.13.2-1-jdk11 (注意这里的镜像版本必须和jenkins的环境版本一致,比如都jdk11以上,否则slave起不来),后面的使用 |

3.7、然后再添加编译容器【maven】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
容器名称是maven, Docker 镜像填写:registry.cn-shanghai.aliyuncs.com/shooer/jdk-maven:v1.0 #注意镜像自行打包可参考:https://blog.csdn.net/cloud_engineer/article/details/126690346) ####本人自用 FROM centos:7.9.2009 LABEL maintainer |