Skip to main content
Version: 3.0

Back up Jenkins on Kubernetes

Applicable to both Classic and Federated modes

You can use the instructions on this page to create pre and post backup rules with Portworx Backup, which take application-consistent backups for Jenkins on Kubernetes in production.

Jenkins stores data within a directory known as JENKINS_HOME. Workspaces, plug-ins, jobs, user content and overall configuration exist within this directory and are vital when recovering from various types of failures.

See below for a snippet of what this might look like in a Kubernetes spec file.

...
volumeMounts:
- name: jenkins-home
mountPath: /var/jenkins_home
volumes:
- name: jenkins-home
persistentVolumeClaim:
claimName: jenkins-data
...

Once you configure a PVC to be mounted at /var/jenkins_home you can use the below guide for pre and post backup rules.

Installation

Prerequisites

note
  • You should configure a persistent volume for JENKINS_HOME so that the entire directory is backed by a volume to capture all data associated with Jenkins.

  • These examples assume that the Jenkins CLI is available within the Jenkins pod. You can make sure it's available in the Jenkins pod(s) by running the below command.

    kubectl exec <jenkins-deployment-pod> -n jenkins -- /bin/sh -c "wget http://<operations-center-url>:>port-number>/jnlpJars/jenkins-cli.jar -O /var/jenkins_home/cli.jar"

Create rules for Jenkins

Create rules for Jenkins that run both before and after the backup operation runs:

Create a pre-exec backup rule for Jenkins

Assuming the Jenkins deployment has a job called job-1, use the pre-exec rule to make sure this job is stopped before taking the snapshot.

note

Stopping a job is not necessary to back up Jenkins. It is used as an example of a pre backup rule. You may run other commands available within the Jenkins pod here as well.

  1. Navigate to Settings > Rules > Add New.

  2. In the Add Rule window, provide the following details:

    • Rule name: add a name for your backup rule

    • Pod Selector: add the following app label app=jenkins

    • Container: This field is mandatory if you're using mTLS with the Linkerd service mesh, provide the container name. Otherwise, leave this field blank.

    • Action: add the following action

        java -jar /var/jenkins_home/cli.jar -s http://jenkins:8080 -webSocket -auth username:password stop-builds job-1

Create a post-exec backup rule for Jenkins

After your backup is triggered, you can start the build for job-1 again using a post-exec rule. This ensures your job is not running during the backup and is restarted after the backup data is captured.

  1. From the home page, navigate to Settings > Rules > Add New.

  2. In the Add Rule window, provide the following details:

    • Rule name: add a name for your backup rule

    • Pod Selector: add the following app label appname=jenkins

    • Container: This field is mandatory if you're using mTLS with the Linkerd service mesh, provide the container name. Otherwise, leave this field blank.

    • Action: add the following action

      java -jar /var/jenkins_home/cli.jar -s http://jenkins:8080 -webSocket -auth username:password build job-1

Use the rules during backup of Jenkins

  1. During the backup creation process, select the rules in the pre-exec and post-exec drop-down lists:
  1. After you populate all the fields of the Create Backup window, click Create.