Jenkins镜像制作
[root@xianchaomaster1 jenkins]# ll
total 1272340
-rwxr-xr-x. 1 root root 730 Mar 28 23:00 build-command.sh
-rw-r--r--. 1 root root 250 Jan 22 2022 Dockerfile
-rw-r--r--. 1 root root 72248203 Jan 22 2022 jenkins-2.319.2.war #自行下载
-rwxr-xr-x. 1 root root 144 Jan 22 2022 run_jenkins.sh
[root@xianchaomaster1 jenkins]# cat build-command.sh
#!/bin/bash
docker build -t harbor.magedu.net/magedu/jenkins:v2.319.2 .
echo "镜像制作完成,即将上传至Harbor服务器"
sleep 1
[root@xianchaomaster1 jenkins]# cat Dockerfile
#Jenkins Version 2.190.1
#前提需要打jdk镜像
FROM harbor.magedu.net/pub-images/jdk-base:v8.212
MAINTAINER zhangshijie zhangshijie@magedu.net
ADD jenkins-2.319.2.war /apps/jenkins/jenkins.war
ADD run_jenkins.sh /usr/bin/
EXPOSE 8080
CMD ["/usr/bin/run_jenkins.sh"]
[root@xianchaomaster1 jenkins]# cat run_jenkins.sh
#!/bin/bash
cd /apps/jenkins && java -server -Xms1024m -Xmx1024m -Xss512k -jar jenkins.war --webroot=/apps/jenkins/jenkins-data --httpPort=8080
Jenkins PV、PVC
前提需要配置NFS
[root@xianchaomaster1 pv]# cat /etc/exports
/data/k8sdata *(rw,no_root_squash)
[root@xianchaomaster1 pv]# mkdir -p /data/k8sdata/xks/jenkins-data
[root@xianchaomaster1 pv]# mkdir -p /data/k8sdata/xks/jenkins-root-data
[root@xianchaomaster1 pv]# exportfs -arv
[root@xianchaomaster1 pv]# cat jenkins-persistentvolume.yaml
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: jenkins-datadir-pv
spec:
capacity:
storage: 100Gi
accessModes:
- ReadWriteOnce
nfs:
server: 192.168.40.180
path: /data/k8sdata/xks/jenkins-data
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: jenkins-root-datadir-pv
namespace: magedu
spec:
capacity:
storage: 100Gi
accessModes:
- ReadWriteOnce
nfs:
server: 192.168.40.180
path: /data/k8sdata/xks/jenkins-root-data
[root@xianchaomaster1 pv]# kubectl apply -f kubectl apply -f jenkins-persistentvolume.yaml
#PVC
[root@xianchaomaster1 pv]# cat jenkins-persistentvolumeclaim.yaml
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: jenkins-datadir-pvc
spec:
volumeName: jenkins-datadir-pv
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 80Gi
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: jenkins-root-data-pvc
spec:
volumeName: jenkins-root-datadir-pv
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 80Gi
[root@xianchaomaster1 pv]# kubectl apply -f jenkins-persistentvolumeclaim.yaml
[root@xianchaomaster1 pv]# kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
jenkins-datadir-pv 100Gi RWO Retain Bound default/jenkins-datadir-pvc 21m
jenkins-root-datadir-pv 100Gi RWO Retain Bound default/jenkins-root-data-pvc 21m
[root@xianchaomaster1 pv]# kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
jenkins-datadir-pvc Bound jenkins-datadir-pv 100Gi RWO 21m
jenkins-root-data-pvc Bound jenkins-root-datadir-pv 100Gi RWO 21m
Jenkins Yaml文件
[root@xianchaomaster1 jenkins]# cat jenkins.yaml
kind: Deployment
#apiVersion: extensions/v1beta1
apiVersion: apps/v1
metadata:
labels:
app: magedu-jenkins
name: magedu-jenkins-deployment
spec:
replicas: 1
selector:
matchLabels:
app: magedu-jenkins
template:
metadata:
labels:
app: magedu-jenkins
spec:
containers:
- name: magedu-jenkins-container
image: harbor.magedu.net/magedu/jenkins:v2.319.2
imagePullPolicy: IfNotPresent
#imagePullPolicy: Always
ports:
- containerPort: 8080
protocol: TCP
name: http
volumeMounts:
- mountPath: "/apps/jenkins/jenkins-data/"
name: jenkins-datadir-magedu
- mountPath: "/root/.jenkins"
name: jenkins-root-datadir
volumes:
- name: jenkins-datadir-magedu
persistentVolumeClaim:
claimName: jenkins-datadir-pvc
- name: jenkins-root-datadir
persistentVolumeClaim:
claimName: jenkins-root-data-pvc
---
kind: Service
apiVersion: v1
metadata:
labels:
app: magedu-jenkins
name: magedu-jenkins-service
spec:
type: NodePort
ports:
- name: http
port: 80
protocol: TCP
targetPort: 8080
nodePort: 30080
selector:
app: magedu-jenkins
配置管理界面
![]()
![]()
![]()
![]()
![]()
![]()
![]()