Deploying Jenkins
This document describes the procedure for deploying Jenkins.
Prerequisites
The Operator needs to have been deployed beforehand. The procedure for deploying Jenkins described here doesn’t apply to
installation of Operator via Helm chart unless jenkins.enabled was set to false.
That’s because by default, installation via Helm chart also covers deploying Jenkins.
Deploying Jenkins instance
Once Jenkins Operator is up and running let’s deploy actual Jenkins instance.
Create manifest e.g. jenkins_instance.yaml with following data and save it on drive.
apiVersion: jenkins.io/v1alpha2
kind: Jenkins
metadata:
name: example
namespace: default
spec:
configurationAsCode:
configurations: []
secret:
name: ""
groovyScripts:
configurations: []
secret:
name: ""
jenkinsAPISettings:
authorizationStrategy: createUser
master:
disableCSRFProtection: false
containers:
- name: jenkins-master
image: jenkins/jenkins:2.401.1-lts
imagePullPolicy: Always
livenessProbe:
failureThreshold: 12
httpGet:
path: /login
port: http
scheme: HTTP
initialDelaySeconds: 100
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 5
readinessProbe:
failureThreshold: 10
httpGet:
path: /login
port: http
scheme: HTTP
initialDelaySeconds: 80
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
resources:
limits:
cpu: 1500m
memory: 3Gi
requests:
cpu: "1"
memory: 500Mi
seedJobs:
- id: jenkins-operator
targets: "cicd/jobs/*.jenkins"
description: "Jenkins Operator repository"
repositoryBranch: master
repositoryUrl: https://github.com/jenkinsci/kubernetes-operator.gitDeploy a Jenkins to Kubernetes:
kubectl create -f jenkins_instance.yamlWatch the Jenkins instance being created:
kubectl get pods -wGet the Jenkins credentials:
kubectl get secret jenkins-operator-credentials-<cr_name> -o 'jsonpath={.data.user}' | base64 -d
kubectl get secret jenkins-operator-credentials-<cr_name> -o 'jsonpath={.data.password}' | base64 -dConnect to the Jenkins instance (minikube):
minikube service jenkins-operator-http-<cr_name> --urlConnect to the Jenkins instance (actual Kubernetes cluster):
kubectl port-forward jenkins-<cr_name> 8080:8080Then open browser with address http://localhost:8080.
