首页 > 运维 > jenkins > K8S结合Jenkins实现持续集成的动态配置详情
2022
12-09

K8S结合Jenkins实现持续集成的动态配置详情

Jenkins版本(Jenkins2.309)

1.安装kubernetes插件

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

3. 对接 K8S 集群

3.1 申请 K8S 凭据

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 集群凭据

填写完成后,点击确认

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 配置

这边要注意,还要向pod内添加 几个 container

3.6、添加jenskins-slave通信连接容器 【jnlp】

3.7、然后再添加编译容器【maven】

3.8、安装镜像打包容器【docker】

启动的时候记得把本机docker【/var/run/docker.sock】映射进去

ansible configmap挂载

3.9、安装kubectl容器【kubectl】

下面添加卷 Host Path Volume:

如果要打包前端项目,也可以单独设置nodejs镜像,也可以如上面和docker容器镜像做在一起

4、新建流水线项目,并且立即执行

4.1、执行结果:

5、常见错误:

5.1、java.lang.UnsupportedClassVersionError: Failed to load hudson.slaves.SlaveComputer$SlaveVersion

5.2、查看slave容器错误

5.3、再来看下面一段pipline

5.4、pipline执行完成

5.5、mvn执行报JAVA_HOME目录设置有误

解决办法:

相关挂载和配置文件挂载解析

全局:

局部:

6、为Maven挂载配置文件和本地仓库

6.1、创建pvc挂载卷,挂载到本地仓库

6.2、创建配置文件configmap(注意修改配置文件当中的相关仓库路径和私服地址以及私服登录账号密码)

7、pipline本人自用Jenkinsfile

Jenkins常见错误参考

镜像jdk-maven-docker-ansible-nodejs-python3.6

最后编辑:
作者:shooter
这个作者貌似有点懒,什么都没有留下。