├── README.md ├── deployment.yaml ├── namespace.yaml ├── service.yaml ├── serviceAccount.yaml └── volume.yaml /README.md: -------------------------------------------------------------------------------- 1 | # Kubernetes Manifests for Jenkins Deployment 2 | 3 | Refer https://devopscube.com/setup-jenkins-on-kubernetes-cluster/ for step by step process to use these manifests. -------------------------------------------------------------------------------- /deployment.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: jenkins 5 | namespace: devops-tools 6 | spec: 7 | replicas: 1 8 | selector: 9 | matchLabels: 10 | app: jenkins-server 11 | template: 12 | metadata: 13 | labels: 14 | app: jenkins-server 15 | spec: 16 | securityContext: 17 | fsGroup: 1000 18 | runAsUser: 1000 19 | serviceAccountName: jenkins-admin 20 | containers: 21 | - name: jenkins 22 | image: jenkins/jenkins:lts 23 | resources: 24 | limits: 25 | memory: "2Gi" 26 | cpu: "1000m" 27 | requests: 28 | memory: "500Mi" 29 | cpu: "500m" 30 | ports: 31 | - name: httpport 32 | containerPort: 8080 33 | - name: jnlpport 34 | containerPort: 50000 35 | livenessProbe: 36 | httpGet: 37 | path: "/login" 38 | port: 8080 39 | initialDelaySeconds: 90 40 | periodSeconds: 10 41 | timeoutSeconds: 5 42 | failureThreshold: 5 43 | readinessProbe: 44 | httpGet: 45 | path: "/login" 46 | port: 8080 47 | initialDelaySeconds: 60 48 | periodSeconds: 10 49 | timeoutSeconds: 5 50 | failureThreshold: 3 51 | volumeMounts: 52 | - name: jenkins-data 53 | mountPath: /var/jenkins_home 54 | volumes: 55 | - name: jenkins-data 56 | persistentVolumeClaim: 57 | claimName: jenkins-pv-claim -------------------------------------------------------------------------------- /namespace.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Namespace 3 | metadata: 4 | name: devops-tools 5 | -------------------------------------------------------------------------------- /service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: jenkins-service 5 | namespace: devops-tools 6 | annotations: 7 | prometheus.io/scrape: 'true' 8 | prometheus.io/path: / 9 | prometheus.io/port: '8080' 10 | spec: 11 | selector: 12 | app: jenkins-server 13 | type: NodePort 14 | ports: 15 | - port: 8080 16 | targetPort: 8080 17 | nodePort: 32000 -------------------------------------------------------------------------------- /serviceAccount.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: rbac.authorization.k8s.io/v1 3 | kind: ClusterRole 4 | metadata: 5 | name: jenkins-admin 6 | rules: 7 | - apiGroups: [""] 8 | resources: ["*"] 9 | verbs: ["*"] 10 | 11 | --- 12 | apiVersion: v1 13 | kind: ServiceAccount 14 | metadata: 15 | name: jenkins-admin 16 | namespace: devops-tools 17 | 18 | --- 19 | apiVersion: rbac.authorization.k8s.io/v1 20 | kind: ClusterRoleBinding 21 | metadata: 22 | name: jenkins-admin 23 | roleRef: 24 | apiGroup: rbac.authorization.k8s.io 25 | kind: ClusterRole 26 | name: jenkins-admin 27 | subjects: 28 | - kind: ServiceAccount 29 | name: jenkins-admin 30 | namespace: devops-tools -------------------------------------------------------------------------------- /volume.yaml: -------------------------------------------------------------------------------- 1 | kind: StorageClass 2 | apiVersion: storage.k8s.io/v1 3 | metadata: 4 | name: local-storage 5 | provisioner: kubernetes.io/no-provisioner 6 | volumeBindingMode: WaitForFirstConsumer 7 | 8 | --- 9 | apiVersion: v1 10 | kind: PersistentVolume 11 | metadata: 12 | name: jenkins-pv-volume 13 | labels: 14 | type: local 15 | spec: 16 | storageClassName: local-storage 17 | claimRef: 18 | name: jenkins-pv-claim 19 | namespace: devops-tools 20 | capacity: 21 | storage: 10Gi 22 | accessModes: 23 | - ReadWriteOnce 24 | local: 25 | path: /mnt 26 | nodeAffinity: 27 | required: 28 | nodeSelectorTerms: 29 | - matchExpressions: 30 | - key: kubernetes.io/hostname 31 | operator: In 32 | values: 33 | - worker-node01 34 | 35 | --- 36 | apiVersion: v1 37 | kind: PersistentVolumeClaim 38 | metadata: 39 | name: jenkins-pv-claim 40 | namespace: devops-tools 41 | spec: 42 | storageClassName: local-storage 43 | accessModes: 44 | - ReadWriteOnce 45 | resources: 46 | requests: 47 | storage: 3Gi --------------------------------------------------------------------------------