This guide walks you through installing Jenkins in a Kubernetes cluster using Helm, with:
- A pre-created PersistentVolumeClaim (PVC)
- Custom admin credentials
- Traefik Ingress for public access
- Persistent data even after reinstallation
Prerequisites
- Kubernetes cluster (self-managed or on AWS EC2)
helm
andkubectl
installed- Traefik and StorageClass (e.g.,
ebs-sc
) already set up - DNS pointing
jenkins.maksonlee.com
to your cluster - Namespace
jenkins
not yet used
- Create a PersistentVolumeClaim
Save this as jenkins-pvc.yaml
:
# jenkins-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: jenkins-pvc
namespace: jenkins
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 2Gi
storageClassName: ebs-sc
Apply it:
kubectl create namespace jenkins
kubectl apply -f jenkins-pvc.yaml
- Prepare Helm
values.yaml
Save this as jenkins-values.yaml
:
controller:
initializeOnce: true
admin:
username: "admin"
password: "admin123"
createSecret: true
additionalPlugins:
- credentials-binding
- cloudbees-folder
ingress:
enabled: true
annotations:
traefik.ingress.kubernetes.io/router.entrypoints: websecure
traefik.ingress.kubernetes.io/router.tls: "true"
traefik.ingress.kubernetes.io/router.tls.certresolver: dns
hostName: jenkins.maksonlee.com
tls:
- hosts:
- jenkins.maksonlee.com
persistence:
existingClaim: jenkins-pvc
- Install Jenkins via Helm
Add the Jenkins chart repo:
helm repo add jenkins https://charts.jenkins.io
helm repo update
Install:
helm install jenkins jenkins/jenkins \
-n jenkins \
-f jenkins-values.yaml
- Access Jenkins
Once deployed, visit: https://jenkins.maksonlee.com
- Reinstall Without Data Loss
If you uninstall Jenkins:
helm uninstall jenkins -n jenkins
Your PVC (jenkins-pvc
) will still remain. Reinstall using the same steps to retain all your data.