通过jenkins交付微服务到kubernetes(8)

创建一个service-account绑定到rbac里面,rbac主要就是设置一些权限让jenkins访问到k8s,service-connout主要是让pod访问到apiserver,它去apiserver调度创建pod
这是我jenkins的地址,如果借鉴的需要将id_rsa.pub给我

git clone git@gitee.com:zhaocheng172/jenkins-k8s.git [root@k8s-master1 jenkins]# ls deployment.yml ingress.yml rbac.yml service-account.yml service.yml

deployment参数详解:
主要来部署jenkins的容器的配置

serviceAccountName: jenkins 使用service-account创建的名字 image: jenkins/jenkins:lts 使用官方长期维护lts镜像 - containerPort: 8080 jenkins ui的访问的端口 - containerPort: 50000 slave访问master访问jenkins所使用的端口 volumeMounts: - name: jenkins-home mountPath: /var/jenkins_home 说到jenkins持久化数据,在jenkins中需要持久化的目录就是它的工作目录,也就是它所产生有状态的数据都放在这个/var/jenkins_home下 volumes: - name: jenkins-home persistentVolumeClaim: claimName: jenkins-home 而持久化的这个目录也都会落到这个pvc这个卷 name: jenkins-home spec: storageClassName: "managed-nfs-storage" accessModes: ["ReadWriteOnce"] 而pvc这里就是我们创建使用的storageclass自动供给来提供的pv,申请5G,设置都可读写

查看创建的storage class

[root@k8s-master1 jenkins]# kubectl get sc NAME PROVISIONER AGE managed-nfs-storage fuseim.pri/ifs 22h

service参数:
这里主要就是使用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查看登录的密码

[root@k8s-master jenkins]# kubectl logs jenkins-7d5fbd857d-tmwbm 6e22df63432f474f863dc07c9d291967

通过jenkins交付微服务到kubernetes


一般最好进去的时候不安装插件,第一默认使用的国外的源,下载插件的时候很慢,我们需要做做一些优化

通过jenkins交付微服务到kubernetes


通过jenkins交付微服务到kubernetes

先创建一个test的pipeline的语法流水线,熟悉一下怎么发布任务

通过jenkins交付微服务到kubernetes


在这里就可以看到语法的格式,这里分为两种,以pipeline开头的也叫声明式语法,主要遵循的Groovy的相同语法来实现的pipeline {}
这个也是比较主流的方式。

通过jenkins交付微服务到kubernetes


测试一个hello的语法,默认提供的pipeline,进行使用

通过jenkins交付微服务到kubernetes


直接build,这个就能构建

通过jenkins交付微服务到kubernetes


当我们构建完成后,这里会显示一个执行的步骤显示一个具体的内容,可以看到jenkins的工作目录,默认传统部署jenkins的目录为/root/.jenkins下,而作为在k8s部署jenkins需要考虑数据的持久化了,因为pod遇到不确定的因素进行重启之后,那么这个pod的数据就会丢失,所以针对这个问题,我们就需要将这个pod的工作目录挂载到持久卷上,这样的话,即使pod重启飘移到其他的节点也能读取到相应的数据了。

通过jenkins交付微服务到kubernetes


可以看到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 113 11:36 builds -rw-r--r-- 1 1000 1000 1021 113 11:36 config.xml -rw-r--r-- 1 1000 1000 2 113 11:36 nextBuildNumber

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/205c9d93803e5eb47c9e3dd7d0adc197.html