实战-基于Jenkins+K8s构建DevOps平台(九)

实验步骤如下:

    • 第一部分:安装持久化存储nfs

1、在k8s-master和k8s-node1上安装nfs服务

[root@k8s-master ~]# yum install nfs-utils -y

[root@k8s-master ~]# systemctl start nfs

[root@k8s-master ~]# systemctl enable nfs

[root@k8s-node1 ~]# yum install nfs-utils -y

[root@k8s-node1 ~]# systemctl start nfs

[root@k8s-node1 ~]# systemctl enable nfs

[root@k8s-node2 ~]# yum install nfs-utils -y

[root@k8s-node2~]# systemctl start nfs

[root@k8s-node2 ~]# systemctl enable nfs

2、在k8s-master上创建一个nfs共享目录

[root@k8s-master ~]# mkdir /data/v2 -p

[root@k8s-master ~]# vim /etc/exports

/data/v2 *(rw,no_root_squash)

3、使nfs配置文件生效

[root@k8s-master ~]# exportfs -arv

[root@k8s-master ~]# systemctl restart nfs

    • 第二部分:基于nfs做持久化存储pv

1、创建名称空间

[root@k8s-master ~]# kubectl create namespace jenkins-k8s

2、创建pv

[root@k8s-master]# kubectl apply -f pv.yaml

3、查看pv是否创建成功

[root@k8s-master]# kubectl get pv

pv.yaml文件内容如下:

apiVersion: v1

kind: PersistentVolume

metadata:

name: jenkins-K8s-pv

spec:

capacity:

storage: 10Gi

accessModes:

- ReadWriteMany

nfs:

server: 192.168.190.61

path: /data/v2

4、创建pvc

[root@k8s-master]# kubectl apply -f pvc.yaml

5、查看pvc是否创建成功

[root@k8s-master]# kubectl get pvc -n jenkins-k8s

kind: PersistentVolumeClaim

apiVersion: v1

metadata:

name: jenkins-K8s-pvc

namespace: jenkins-K8s

spec:

resources:

requests:

storage: 10Gi

accessModes:

- ReadWriteMany

    • 第三部分:在K8s集群安装Jenkins

1、创建一个sa账号

[root@k8s-master]# kubectl create sa jenkins-k8s-sa -n jenkins-k8s

2、把上面的sa账号做rbac授权

[root@k8s-master]# kubectl create clusterrolebinding jenkins-k8s-sa-cluster -n jenkins-k8s --clusterrole=cluster-admin --serviceaccount=jenkins-k8s:jenkins-k8s-sa

3、通过deployment部署jenkins

[root@k8s-node1 ~]# docker pull jenkins/jenkins:latest

[root@k8s-node1 ~]# docker load -i jenkins-jnlp.tar.gz

4、更新资源清单文件

[root@k8s-master]# kubectl apply -f jenkins-deployment.yaml

5、查看jenkins是否创建成功

[root@k8s-master jenkins]# kubectl get pods -n jenkins-k8s

6、看到jenkins-5fc55f45f4-vltrr是CrashLoopBackOff状态,查看日志:

[root@k8s-master]# kubectl logs jenkins-5fc55f45f4-vltrr -n jenkins-k8s

日志信息显示:

touch: cannot touch '/var/jenkins_home/copy_reference_file.log

'

: Permission denied

Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume

permissions?

7、报错显示没有权限操作/var/jenkins_home/copy_reference_file.log文件,解决办法如下:

[root@k8s-master]# kubectl delete -f jenkins-deployment.yaml

[root@k8s-master]# chown -R 1000.1000 /data/v2

[root@k8s-master]# kubectl apply -f jenkins-deployment.yaml

8、查看pod是否创建成功:

[root@k8s-master]# kubectl get pods -n jenkins-k8s

显示如下,说明部署成功了:

 

9、把jenkins前端加上service,提供外部网络访问

[root@k8s-master]# kubectl apply -f jenkins-service.yaml

10、查看service是否创建成功

[root@k8s-master]# kubectl get svc -n jenkins-k8s

    • 第四部分:配置Jenkins

1、在浏览器访问jenkins的web界面: http://192.168.190.61:30002/login?from=%2F

实战-基于Jenkins+K8s构建DevOps平台(九)_第1张图片

得到密码:

cat /data/v2/jenkins-home/secrets/initialAdminPassword

ae00364cab9c42adb2edc09b0c592473

11、通过上面可以看到service的8080端口在物理机映射的端口是30002

第四部分:配置Jenkins 2、获取管理员密码: 在nfs服务端,也就是我们的master1节点获取密码: [root@k8s-master ~]# cat /data/v2/jenkins-home/secrets/initialAdminPassword

实战-基于Jenkins+K8s构建DevOps平台(九)_第2张图片

 实战-基于Jenkins+K8s构建DevOps平台(九)_第3张图片

实战-基于Jenkins+K8s构建DevOps平台(九)_第4张图片

实战-基于Jenkins+K8s构建DevOps平台(九)_第5张图片

实战-基于Jenkins+K8s构建DevOps平台(九)_第6张图片

实战-基于Jenkins+K8s构建DevOps平台(九)_第7张图片

 实战-基于Jenkins+K8s构建DevOps平台(九)_第8张图片

    • 第五部分:测试Jenkins CI/CD流水线-扩展

实战-基于Jenkins+K8s构建DevOps平台(九)_第9张图片

这部分内容

1、Jenkins安装K8s插件

2、Jenkins安装Blueocean插件

3、配置Jenkins连接K8s集群

4、配置Jenkins slave pod模板

5、Jenkins ui界面添加dockerhub凭据

6、测试Jenkins发布应用到K8s测试、开发、生产环境-通过pipeline实现

7、基于Jenkins+K8s+Nexus+Sonarqube+gitlab+SpringCloud构建DevOps流水线

具体发布流程如下:

开发提交代码到代码仓库gitlab-jenkins检测到代码更新-调用K8s api在K8s中创建

jenkins slave pod:

Jenkins slave pod拉取代码---通过maven把拉取的代码进行构建成war包或者jar包--->上传代码到Sonarqube,进行静态代码扫描- -->基于war包构建docker image-->把镜像上传到harbor镜像仓库-->基于镜像部署应用到开发环境-->部署应用到测试环境--->部署应用到生产环境

你可能感兴趣的:(k8s技术,jenkins,docker,运维)