I'm trying to deploy jenkins onto a kubernetes cluster on my windows machine. My issue is that when I restart docker desktop, I lose all of my Jenkins data. This means that I need to set up the admin user and install plugins each time I restart docker desktop.
I would like for the data to persist onto a folder I have in the "D:" drive of my PC so that even when docker desktop is restarted I will not lose my data.
This is my current configuration but it is not working as expected:
pv-pvc.yaml:
# PersistentVolume for Jenkins
apiVersion: v1
kind: PersistentVolume
metadata:
name: jenkins-pv
labels:
type: local
spec:
storageClassName: local-storage
persistentVolumeReclaimPolicy: Retain
capacity:
storage: 10Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
local:
path: /d/Kubernetes/storage/jenkins
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- docker-desktop
---
# PersistentVolumeClaim for Jenkins
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: jenkins-pvc
namespace: jenkins
spec:
storageClassName: local-storage
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
service.yaml:
apiVersion: v1
kind: Service
metadata:
name: jenkins
spec:
type: NodePort
ports:
- port: 8080
targetPort: 8080
nodePort: 30000
selector:
app: jenkins
---
apiVersion: v1
kind: Service
metadata:
name: jenkins-jnlp
spec:
type: ClusterIP
ports:
- port: 50000
targetPort: 50000
selector:
app: jenkins
deployment.yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: jenkins
spec:
replicas: 1
selector:
matchLabels:
app: jenkins
template:
metadata:
labels:
app: jenkins
spec:
securityContext:
fsGroup: 1000
containers:
- name: jenkins
image: jenkins/jenkins:lts
ports:
- name: http-port
containerPort: 8080
- name: jnlp-port
containerPort: 50000
volumeMounts:
- name: jenkins-vol
mountPath: /mnt/d/Kubernetes/storage/jenkins/var/jenkins_home
volumes:
- name: jenkins-vol
persistentVolumeClaim:
claimName: jenkins-pvc