Kubernetes 实战-基于Jenkins部署(四)

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

配置管理界面

posted @ 2023-03-28 23:34  しみずよしだ  阅读(44)  评论(0)    收藏  举报