创建一个service-account绑定到rbac里面,rbac主要就是设置一些权限让jenkins访问到k8s,service-connout主要是让pod访问到apiserver,它去apiserver调度创建pod
这是我jenkins的地址,如果借鉴的需要将id_rsa.pub给我
deployment参数详解:
主要来部署jenkins的容器的配置
查看创建的storage class
[root@k8s-master1 jenkins]# kubectl get sc NAME PROVISIONER AGE managed-nfs-storage fuseim.pri/ifs 22hservice参数:
这里主要就是使用nodeport去开放一个端口,另外一般生产环境都使用ingress,ingress需要关联service,还要使用nginx做反向代理,将这个域名通过slb发布出去
[root@k8s-master1 jenkins]# kubectl apply -f .
四、jenkins pipeline及参数化构建
jenkins pipeline是一套插件,支持在jenkins中实现集成和持续交付管道;
pipeline通过特定语法对简单到复杂的传输管道进行建模;
声明式:遵循与Groovy相同语法。pipeline{}
脚本式:支持Groovy大部分功能,也是非常表达和灵活的工具。node{}
*jenkins pipeline的定义被写入一个文本文件,称为jenkinsfile。
去Manage jenkins去安装插件,找到manage plugins ,点击Available检索pipeline,进行安装,安装后选择install without restart
现在去创建一个流水线进行测试一下
部署完之后可以使用log查看登录的密码
一般最好进去的时候不安装插件,第一默认使用的国外的源,下载插件的时候很慢,我们需要做做一些优化
先创建一个test的pipeline的语法流水线,熟悉一下怎么发布任务
在这里就可以看到语法的格式,这里分为两种,以pipeline开头的也叫声明式语法,主要遵循的Groovy的相同语法来实现的pipeline {}
这个也是比较主流的方式。
测试一个hello的语法,默认提供的pipeline,进行使用
直接build,这个就能构建
当我们构建完成后,这里会显示一个执行的步骤显示一个具体的内容,可以看到jenkins的工作目录,默认传统部署jenkins的目录为/root/.jenkins下,而作为在k8s部署jenkins需要考虑数据的持久化了,因为pod遇到不确定的因素进行重启之后,那么这个pod的数据就会丢失,所以针对这个问题,我们就需要将这个pod的工作目录挂载到持久卷上,这样的话,即使pod重启飘移到其他的节点也能读取到相应的数据了。
可以看到k8s的持久化目录是在这个jobs目录下,将我们构建的内容和数据都放在这里了。 [root@k8s-node3 ~]# ll /ifi/kubernetes/default-jenkins-home-pvc-0d67f7f5-2b31-4dc8-aee2-5e7b9e0e7e19/jobs/test/ 总用量 8 drwxr-xr-x 3 1000 1000 50 1月 13 11:36 builds -rw-r--r-- 1 1000 1000 1021 1月 13 11:36 config.xml -rw-r--r-- 1 1000 1000 2 1月 13 11:36 nextBuildNumber