Deployed this way, any subject which may create a Pod (including a Jenkins job) may
-assume the jenkins-operator role by using its’ ServiceAccount, create RBAC rules, and thus escape its granted permissions.
-Any namespace to which the jenkins-operator is deployed must be considered to implicitly grant all
-possible permissions to any subject which can create a Pod in that namespace.
---
@@ -1123,7 +1079,7 @@ copy the manifest you see below to jenkins-operator-rbac.yamlfile.<
Now install the required resources in jenkins-operator namespace with:
kubectl apply -n jenkins-operator -f jenkins-operator-rbac.yaml
There’s only one thing left to install in jenkins-operator namespace, and that is the Operator itself. The manifest
-below contains the Operator as defined in all-in-one manifest found in Installating the Operator
+below contains the Operator as defined in all-in-one manifest found in Installing the Operator
page, the only difference is that the one here sets WATCH_NAMESPACE to the jenkins namespace we created.
Copy its content to jenkins-operator.yaml file.
@@ -1185,7 +1141,9 @@ spec:
there are two things left to do: creating necessary Role and RoleBinding for the Operator in jenkins namespace, and
deploying actual Jenkins instance there.
-Below you can find manifest with RBAC that need to be created in jenkins namespace. Copy its content to jenkins-ns-rbac.yaml file.
+Create necessary resources in Jenkins namespace
+
+Below you can find manifest with RBAC that needs to be created in jenkins namespace. Copy its content to jenkins-ns-rbac.yaml file.
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
@@ -1427,13 +1385,9 @@ Copy it to jenkins-instance.yaml
With this, you have just set up Jenkins Operator and Jenkins in separate namespaces. Now the Operator will run in
its own namespace (jenkins-operator), watch for CRs in jenkins namespace, and deploy Jenkins there.
-Report a Security Vulnerability
-
-If you find a vulnerability or any misconfiguration in Jenkins, please report it in the issues.
-
- Last modified August 20, 2021
+
Last modified October 6, 2021
diff --git a/docs/docs/getting-started/v0.1.x/aks/index.html b/docs/docs/getting-started/v0.1.x/aks/index.html
index 5779afe7..c287442f 100644
--- a/docs/docs/getting-started/v0.1.x/aks/index.html
+++ b/docs/docs/getting-started/v0.1.x/aks/index.html
@@ -219,24 +219,18 @@
+
+
+
+
+
+
Custom backup and restore providers
-
-
-
-
-
-
-
-
-
-
-
-
@@ -669,6 +663,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/docs/getting-started/v0.1.x/configuration/index.html b/docs/docs/getting-started/v0.1.x/configuration/index.html
index 857b875d..0258a06a 100644
--- a/docs/docs/getting-started/v0.1.x/configuration/index.html
+++ b/docs/docs/getting-started/v0.1.x/configuration/index.html
@@ -219,24 +219,18 @@
+
+
+
+
+
+
Custom backup and restore providers
-
-
-
-
-
-
-
-
-
-
-
-
@@ -669,6 +663,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/docs/getting-started/v0.1.x/configure-backup-and-restore/index.html b/docs/docs/getting-started/v0.1.x/configure-backup-and-restore/index.html
index d0c76e2d..830fc098 100644
--- a/docs/docs/getting-started/v0.1.x/configure-backup-and-restore/index.html
+++ b/docs/docs/getting-started/v0.1.x/configure-backup-and-restore/index.html
@@ -219,24 +219,18 @@
+
+
+
+
+
+
Custom backup and restore providers
-
-
-
-
-
-
-
-
-
-
-
-
@@ -669,6 +663,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/docs/getting-started/v0.1.x/customization/index.html b/docs/docs/getting-started/v0.1.x/customization/index.html
index 842596a5..9b3a37a6 100644
--- a/docs/docs/getting-started/v0.1.x/customization/index.html
+++ b/docs/docs/getting-started/v0.1.x/customization/index.html
@@ -219,24 +219,18 @@
+
+
+
+
+
+
Custom backup and restore providers
-
-
-
-
-
-
-
-
-
-
-
-
@@ -669,6 +663,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/docs/getting-started/v0.1.x/deploy-jenkins/index.html b/docs/docs/getting-started/v0.1.x/deploy-jenkins/index.html
index c63aae60..1801f89b 100644
--- a/docs/docs/getting-started/v0.1.x/deploy-jenkins/index.html
+++ b/docs/docs/getting-started/v0.1.x/deploy-jenkins/index.html
@@ -219,24 +219,18 @@
+
+
+
+
+
+
Custom backup and restore providers
-
-
-
-
-
-
-
-
-
-
-
-
@@ -669,6 +663,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/docs/getting-started/v0.1.x/diagnostics/index.html b/docs/docs/getting-started/v0.1.x/diagnostics/index.html
index fb5f9a7a..6040b8cb 100644
--- a/docs/docs/getting-started/v0.1.x/diagnostics/index.html
+++ b/docs/docs/getting-started/v0.1.x/diagnostics/index.html
@@ -219,24 +219,18 @@
+
+
+
+
+
+
Custom backup and restore providers
-
-
-
-
-
-
-
-
-
-
-
-
@@ -669,6 +663,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/docs/getting-started/v0.1.x/index.html b/docs/docs/getting-started/v0.1.x/index.html
index 8b22fe06..299c4d40 100644
--- a/docs/docs/getting-started/v0.1.x/index.html
+++ b/docs/docs/getting-started/v0.1.x/index.html
@@ -212,24 +212,18 @@
+
+
+
+
+
+
Custom backup and restore providers
-
-
-
-
-
-
-
-
-
-
-
-
@@ -662,6 +656,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
@@ -999,8 +1010,6 @@
-
-
diff --git a/docs/docs/getting-started/v0.1.x/migration-guide-v1alpha1-to-v1alpha2/index.html b/docs/docs/getting-started/v0.1.x/migration-guide-v1alpha1-to-v1alpha2/index.html
index 22dcbc77..42a3b538 100644
--- a/docs/docs/getting-started/v0.1.x/migration-guide-v1alpha1-to-v1alpha2/index.html
+++ b/docs/docs/getting-started/v0.1.x/migration-guide-v1alpha1-to-v1alpha2/index.html
@@ -219,24 +219,18 @@
+
+
+
+
+
+
Custom backup and restore providers
-
-
-
-
-
-
-
-
-
-
-
-
@@ -669,6 +663,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/docs/getting-started/v0.1.x/scheme/index.html b/docs/docs/getting-started/v0.1.x/scheme/index.html
index 5d67fe8e..abe4c4e8 100644
--- a/docs/docs/getting-started/v0.1.x/scheme/index.html
+++ b/docs/docs/getting-started/v0.1.x/scheme/index.html
@@ -219,24 +219,18 @@
+
+
+
+
+
+
Custom backup and restore providers
-
-
-
-
-
-
-
-
-
-
-
-
@@ -669,6 +663,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/docs/getting-started/v0.2.x/aks/index.html b/docs/docs/getting-started/v0.2.x/aks/index.html
index 2bdcf3b6..528ca390 100644
--- a/docs/docs/getting-started/v0.2.x/aks/index.html
+++ b/docs/docs/getting-started/v0.2.x/aks/index.html
@@ -219,24 +219,18 @@
+
+
+
+
+
+
Custom backup and restore providers
-
-
-
-
-
-
-
-
-
-
-
-
@@ -669,6 +663,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/docs/getting-started/v0.2.x/configuration/index.html b/docs/docs/getting-started/v0.2.x/configuration/index.html
index 251df601..d635e91c 100644
--- a/docs/docs/getting-started/v0.2.x/configuration/index.html
+++ b/docs/docs/getting-started/v0.2.x/configuration/index.html
@@ -219,24 +219,18 @@
+
+
+
+
+
+
Custom backup and restore providers
-
-
-
-
-
-
-
-
-
-
-
-
@@ -669,6 +663,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/docs/getting-started/v0.2.x/configure-backup-and-restore/index.html b/docs/docs/getting-started/v0.2.x/configure-backup-and-restore/index.html
index b5dd9c80..d5887ae2 100644
--- a/docs/docs/getting-started/v0.2.x/configure-backup-and-restore/index.html
+++ b/docs/docs/getting-started/v0.2.x/configure-backup-and-restore/index.html
@@ -219,24 +219,18 @@
+
+
+
+
+
+
Custom backup and restore providers
-
-
-
-
-
-
-
-
-
-
-
-
@@ -669,6 +663,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/docs/getting-started/v0.2.x/custom-backup-and-restore/index.html b/docs/docs/getting-started/v0.2.x/custom-backup-and-restore/index.html
index 59e3baca..2d802714 100644
--- a/docs/docs/getting-started/v0.2.x/custom-backup-and-restore/index.html
+++ b/docs/docs/getting-started/v0.2.x/custom-backup-and-restore/index.html
@@ -219,24 +219,18 @@
+
+
+
+
+
+
Custom backup and restore providers
-
-
-
-
-
-
-
-
-
-
-
-
@@ -669,6 +663,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/docs/getting-started/v0.2.x/customization/index.html b/docs/docs/getting-started/v0.2.x/customization/index.html
index e143b851..f394df77 100644
--- a/docs/docs/getting-started/v0.2.x/customization/index.html
+++ b/docs/docs/getting-started/v0.2.x/customization/index.html
@@ -219,24 +219,18 @@
+
+
+
+
+
+
Custom backup and restore providers
-
-
-
-
-
-
-
-
-
-
-
-
@@ -669,6 +663,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/docs/getting-started/v0.2.x/deploy-jenkins/index.html b/docs/docs/getting-started/v0.2.x/deploy-jenkins/index.html
index 3c79521a..58279328 100644
--- a/docs/docs/getting-started/v0.2.x/deploy-jenkins/index.html
+++ b/docs/docs/getting-started/v0.2.x/deploy-jenkins/index.html
@@ -219,24 +219,18 @@
+
+
+
+
+
+
Custom backup and restore providers
-
-
-
-
-
-
-
-
-
-
-
-
@@ -669,6 +663,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/docs/getting-started/v0.2.x/diagnostics/index.html b/docs/docs/getting-started/v0.2.x/diagnostics/index.html
index 17836346..e792d212 100644
--- a/docs/docs/getting-started/v0.2.x/diagnostics/index.html
+++ b/docs/docs/getting-started/v0.2.x/diagnostics/index.html
@@ -219,24 +219,18 @@
+
+
+
+
+
+
Custom backup and restore providers
-
-
-
-
-
-
-
-
-
-
-
-
@@ -669,6 +663,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/docs/getting-started/v0.2.x/index.html b/docs/docs/getting-started/v0.2.x/index.html
index 69989402..052b11b0 100644
--- a/docs/docs/getting-started/v0.2.x/index.html
+++ b/docs/docs/getting-started/v0.2.x/index.html
@@ -212,24 +212,18 @@
+
+
+
+
+
+
Custom backup and restore providers
-
-
-
-
-
-
-
-
-
-
-
-
@@ -662,6 +656,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1017,8 +1028,6 @@
-
-
diff --git a/docs/docs/getting-started/v0.2.x/migration/index.html b/docs/docs/getting-started/v0.2.x/migration/index.html
index 8218aed9..97cfe27e 100644
--- a/docs/docs/getting-started/v0.2.x/migration/index.html
+++ b/docs/docs/getting-started/v0.2.x/migration/index.html
@@ -219,24 +219,18 @@
+
+
+
+
+
+
Custom backup and restore providers
-
-
-
-
-
-
-
-
-
-
-
-
@@ -669,6 +663,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/docs/getting-started/v0.2.x/schema/index.html b/docs/docs/getting-started/v0.2.x/schema/index.html
index 726ff5ea..fa3debd5 100644
--- a/docs/docs/getting-started/v0.2.x/schema/index.html
+++ b/docs/docs/getting-started/v0.2.x/schema/index.html
@@ -219,24 +219,18 @@
+
+
+
+
+
+
Custom backup and restore providers
-
-
-
-
-
-
-
-
-
-
-
-
@@ -669,6 +663,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/docs/getting-started/v0.3.x/aks/index.html b/docs/docs/getting-started/v0.3.x/aks/index.html
index c4bdc55c..a0e7098a 100644
--- a/docs/docs/getting-started/v0.3.x/aks/index.html
+++ b/docs/docs/getting-started/v0.3.x/aks/index.html
@@ -219,24 +219,18 @@
+
+
+
+
+
+
Custom backup and restore providers
-
-
-
-
-
-
-
-
-
-
-
-
@@ -669,6 +663,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/docs/getting-started/v0.3.x/configuration/index.html b/docs/docs/getting-started/v0.3.x/configuration/index.html
index fea849a3..8721e33b 100644
--- a/docs/docs/getting-started/v0.3.x/configuration/index.html
+++ b/docs/docs/getting-started/v0.3.x/configuration/index.html
@@ -219,24 +219,18 @@
+
+
+
+
+
+
Custom backup and restore providers
-
-
-
-
-
-
-
-
-
-
-
-
@@ -669,6 +663,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/docs/getting-started/v0.3.x/configure-backup-and-restore/index.html b/docs/docs/getting-started/v0.3.x/configure-backup-and-restore/index.html
index 2012db27..198dffc9 100644
--- a/docs/docs/getting-started/v0.3.x/configure-backup-and-restore/index.html
+++ b/docs/docs/getting-started/v0.3.x/configure-backup-and-restore/index.html
@@ -219,24 +219,18 @@
+
+
+
+
+
+
Custom backup and restore providers
-
-
-
-
-
-
-
-
-
-
-
-
@@ -669,6 +663,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/docs/getting-started/v0.3.x/custom-backup-and-restore/index.html b/docs/docs/getting-started/v0.3.x/custom-backup-and-restore/index.html
index 32662237..54a21d71 100644
--- a/docs/docs/getting-started/v0.3.x/custom-backup-and-restore/index.html
+++ b/docs/docs/getting-started/v0.3.x/custom-backup-and-restore/index.html
@@ -219,24 +219,18 @@
+
+
+
+
+
+
Custom backup and restore providers
-
-
-
-
-
-
-
-
-
-
-
-
@@ -669,6 +663,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/docs/getting-started/v0.3.x/customization/index.html b/docs/docs/getting-started/v0.3.x/customization/index.html
index 0786fe84..3e3857d9 100644
--- a/docs/docs/getting-started/v0.3.x/customization/index.html
+++ b/docs/docs/getting-started/v0.3.x/customization/index.html
@@ -219,24 +219,18 @@
+
+
+
+
+
+
Custom backup and restore providers
-
-
-
-
-
-
-
-
-
-
-
-
@@ -669,6 +663,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/docs/getting-started/v0.3.x/deploy-jenkins/index.html b/docs/docs/getting-started/v0.3.x/deploy-jenkins/index.html
index 30285b35..5ad6d2ba 100644
--- a/docs/docs/getting-started/v0.3.x/deploy-jenkins/index.html
+++ b/docs/docs/getting-started/v0.3.x/deploy-jenkins/index.html
@@ -219,24 +219,18 @@
+
+
+
+
+
+
Custom backup and restore providers
-
-
-
-
-
-
-
-
-
-
-
-
@@ -669,6 +663,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/docs/getting-started/v0.3.x/diagnostics/index.html b/docs/docs/getting-started/v0.3.x/diagnostics/index.html
index a72c7fe9..520b1fcf 100644
--- a/docs/docs/getting-started/v0.3.x/diagnostics/index.html
+++ b/docs/docs/getting-started/v0.3.x/diagnostics/index.html
@@ -219,24 +219,18 @@
+
+
+
+
+
+
Custom backup and restore providers
-
-
-
-
-
-
-
-
-
-
-
-
@@ -669,6 +663,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/docs/getting-started/v0.3.x/index.html b/docs/docs/getting-started/v0.3.x/index.html
index e591302e..e19cb26f 100644
--- a/docs/docs/getting-started/v0.3.x/index.html
+++ b/docs/docs/getting-started/v0.3.x/index.html
@@ -212,24 +212,18 @@
+
+
+
+
+
+
Custom backup and restore providers
-
-
-
-
-
-
-
-
-
-
-
-
@@ -662,6 +656,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1019,8 +1030,6 @@
-
-
diff --git a/docs/docs/getting-started/v0.3.x/migration/index.html b/docs/docs/getting-started/v0.3.x/migration/index.html
index a73a21ef..396f1e63 100644
--- a/docs/docs/getting-started/v0.3.x/migration/index.html
+++ b/docs/docs/getting-started/v0.3.x/migration/index.html
@@ -219,24 +219,18 @@
+
+
+
+
+
+
Custom backup and restore providers
-
-
-
-
-
-
-
-
-
-
-
-
@@ -669,6 +663,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/docs/getting-started/v0.3.x/notifications/index.html b/docs/docs/getting-started/v0.3.x/notifications/index.html
index fade65a8..2c8bb590 100644
--- a/docs/docs/getting-started/v0.3.x/notifications/index.html
+++ b/docs/docs/getting-started/v0.3.x/notifications/index.html
@@ -219,24 +219,18 @@
+
+
+
+
+
+
Custom backup and restore providers
-
-
-
-
-
-
-
-
-
-
-
-
@@ -669,6 +663,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/docs/getting-started/v0.3.x/schema/index.html b/docs/docs/getting-started/v0.3.x/schema/index.html
index 096fc2f2..2b5f4b4c 100644
--- a/docs/docs/getting-started/v0.3.x/schema/index.html
+++ b/docs/docs/getting-started/v0.3.x/schema/index.html
@@ -219,24 +219,18 @@
+
+
+
+
+
+
Custom backup and restore providers
-
-
-
-
-
-
-
-
-
-
-
-
@@ -669,6 +663,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/docs/getting-started/v0.4.x/aks/index.html b/docs/docs/getting-started/v0.4.x/aks/index.html
index 94a400c4..3411ac24 100644
--- a/docs/docs/getting-started/v0.4.x/aks/index.html
+++ b/docs/docs/getting-started/v0.4.x/aks/index.html
@@ -219,24 +219,18 @@
+
+
+
+
+
+
Custom backup and restore providers
-
-
-
-
-
-
-
-
-
-
-
-
@@ -669,6 +663,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/docs/getting-started/v0.4.x/configuration/index.html b/docs/docs/getting-started/v0.4.x/configuration/index.html
index ff89ab1b..f04b585e 100644
--- a/docs/docs/getting-started/v0.4.x/configuration/index.html
+++ b/docs/docs/getting-started/v0.4.x/configuration/index.html
@@ -219,24 +219,18 @@
+
+
+
+
+
+
Custom backup and restore providers
-
-
-
-
-
-
-
-
-
-
-
-
@@ -669,6 +663,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/docs/getting-started/v0.4.x/configure-backup-and-restore/index.html b/docs/docs/getting-started/v0.4.x/configure-backup-and-restore/index.html
index 850b1381..45edc6de 100644
--- a/docs/docs/getting-started/v0.4.x/configure-backup-and-restore/index.html
+++ b/docs/docs/getting-started/v0.4.x/configure-backup-and-restore/index.html
@@ -219,24 +219,18 @@
+
+
+
+
+
+
Custom backup and restore providers
-
-
-
-
-
-
-
-
-
-
-
-
@@ -669,6 +663,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/docs/getting-started/v0.4.x/custom-backup-and-restore/index.html b/docs/docs/getting-started/v0.4.x/custom-backup-and-restore/index.html
index cad57394..de94435e 100644
--- a/docs/docs/getting-started/v0.4.x/custom-backup-and-restore/index.html
+++ b/docs/docs/getting-started/v0.4.x/custom-backup-and-restore/index.html
@@ -219,24 +219,18 @@
+
+
+
+
+
+
Custom backup and restore providers
-
-
-
-
-
-
-
-
-
-
-
-
@@ -669,6 +663,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/docs/getting-started/v0.4.x/customization/index.html b/docs/docs/getting-started/v0.4.x/customization/index.html
index 8e0ee0cf..ae931d6e 100644
--- a/docs/docs/getting-started/v0.4.x/customization/index.html
+++ b/docs/docs/getting-started/v0.4.x/customization/index.html
@@ -219,24 +219,18 @@
+
+
+
+
+
+
Custom backup and restore providers
-
-
-
-
-
-
-
-
-
-
-
-
@@ -669,6 +663,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/docs/getting-started/v0.4.x/deploy-jenkins/index.html b/docs/docs/getting-started/v0.4.x/deploy-jenkins/index.html
index c31679f2..e876a2eb 100644
--- a/docs/docs/getting-started/v0.4.x/deploy-jenkins/index.html
+++ b/docs/docs/getting-started/v0.4.x/deploy-jenkins/index.html
@@ -219,24 +219,18 @@
+
+
+
+
+
+
Custom backup and restore providers
-
-
-
-
-
-
-
-
-
-
-
-
@@ -669,6 +663,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/docs/getting-started/v0.4.x/diagnostics/index.html b/docs/docs/getting-started/v0.4.x/diagnostics/index.html
index 67eaa6df..01933eb6 100644
--- a/docs/docs/getting-started/v0.4.x/diagnostics/index.html
+++ b/docs/docs/getting-started/v0.4.x/diagnostics/index.html
@@ -219,24 +219,18 @@
+
+
+
+
+
+
Custom backup and restore providers
-
-
-
-
-
-
-
-
-
-
-
-
@@ -669,6 +663,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/docs/getting-started/v0.4.x/index.html b/docs/docs/getting-started/v0.4.x/index.html
index 18f6ece2..b3883fc8 100644
--- a/docs/docs/getting-started/v0.4.x/index.html
+++ b/docs/docs/getting-started/v0.4.x/index.html
@@ -212,24 +212,18 @@
+
+
+
+
+
+
Custom backup and restore providers
-
-
-
-
-
-
-
-
-
-
-
-
@@ -662,6 +656,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1018,8 +1029,6 @@
-
-
Diagnostics
diff --git a/docs/docs/getting-started/v0.4.x/notifications/index.html b/docs/docs/getting-started/v0.4.x/notifications/index.html
index 552c5746..48021d2c 100644
--- a/docs/docs/getting-started/v0.4.x/notifications/index.html
+++ b/docs/docs/getting-started/v0.4.x/notifications/index.html
@@ -219,24 +219,18 @@
+
+
+
+
+
+
Custom backup and restore providers
-
-
-
-
-
-
-
-
-
-
-
-
@@ -669,6 +663,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/docs/getting-started/v0.4.x/openshift/index.html b/docs/docs/getting-started/v0.4.x/openshift/index.html
index 0d209bb2..1566fb92 100644
--- a/docs/docs/getting-started/v0.4.x/openshift/index.html
+++ b/docs/docs/getting-started/v0.4.x/openshift/index.html
@@ -219,24 +219,18 @@
+
+
+
+
+
+
Custom backup and restore providers
-
-
-
-
-
-
-
-
-
-
-
-
@@ -669,6 +663,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/docs/getting-started/v0.4.x/schema/index.html b/docs/docs/getting-started/v0.4.x/schema/index.html
index 7ef0aa24..1763f6e3 100644
--- a/docs/docs/getting-started/v0.4.x/schema/index.html
+++ b/docs/docs/getting-started/v0.4.x/schema/index.html
@@ -219,24 +219,18 @@
+
+
+
+
+
+
Custom backup and restore providers
-
-
-
-
-
-
-
-
-
-
-
-
@@ -669,6 +663,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/docs/getting-started/v0.5.x/aks/index.html b/docs/docs/getting-started/v0.5.x/aks/index.html
index 19cb8ae1..f537fa80 100644
--- a/docs/docs/getting-started/v0.5.x/aks/index.html
+++ b/docs/docs/getting-started/v0.5.x/aks/index.html
@@ -219,24 +219,18 @@
+
+
+
+
+
+
Custom backup and restore providers
-
-
-
-
-
-
-
-
-
-
-
-
@@ -669,6 +663,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/docs/getting-started/v0.5.x/configuration/index.html b/docs/docs/getting-started/v0.5.x/configuration/index.html
index 9cd850fa..97d496cb 100644
--- a/docs/docs/getting-started/v0.5.x/configuration/index.html
+++ b/docs/docs/getting-started/v0.5.x/configuration/index.html
@@ -219,24 +219,18 @@
+
+
+
+
+
+
Custom backup and restore providers
-
-
-
-
-
-
-
-
-
-
-
-
@@ -669,6 +663,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/docs/getting-started/v0.5.x/configure-backup-and-restore/index.html b/docs/docs/getting-started/v0.5.x/configure-backup-and-restore/index.html
index 272e21e2..3229a349 100644
--- a/docs/docs/getting-started/v0.5.x/configure-backup-and-restore/index.html
+++ b/docs/docs/getting-started/v0.5.x/configure-backup-and-restore/index.html
@@ -219,24 +219,18 @@
+
+
+
+
+
+
Custom backup and restore providers
-
-
-
-
-
-
-
-
-
-
-
-
@@ -669,6 +663,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/docs/getting-started/v0.5.x/custom-backup-and-restore/index.html b/docs/docs/getting-started/v0.5.x/custom-backup-and-restore/index.html
index 43839d9e..43ea11dd 100644
--- a/docs/docs/getting-started/v0.5.x/custom-backup-and-restore/index.html
+++ b/docs/docs/getting-started/v0.5.x/custom-backup-and-restore/index.html
@@ -219,24 +219,18 @@
+
+
+
+
+
+
Custom backup and restore providers
-
-
-
-
-
-
-
-
-
-
-
-
@@ -669,6 +663,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/docs/getting-started/v0.5.x/customization/index.html b/docs/docs/getting-started/v0.5.x/customization/index.html
index 8eed3bd0..7fa03222 100644
--- a/docs/docs/getting-started/v0.5.x/customization/index.html
+++ b/docs/docs/getting-started/v0.5.x/customization/index.html
@@ -219,24 +219,18 @@
+
+
+
+
+
+
Custom backup and restore providers
-
-
-
-
-
-
-
-
-
-
-
-
@@ -669,6 +663,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/docs/getting-started/v0.5.x/deploy-jenkins/index.html b/docs/docs/getting-started/v0.5.x/deploy-jenkins/index.html
index a5cff0db..f06f2f64 100644
--- a/docs/docs/getting-started/v0.5.x/deploy-jenkins/index.html
+++ b/docs/docs/getting-started/v0.5.x/deploy-jenkins/index.html
@@ -219,24 +219,18 @@
+
+
+
+
+
+
Custom backup and restore providers
-
-
-
-
-
-
-
-
-
-
-
-
@@ -669,6 +663,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/docs/getting-started/v0.5.x/diagnostics/index.html b/docs/docs/getting-started/v0.5.x/diagnostics/index.html
index 75d944a4..873d739b 100644
--- a/docs/docs/getting-started/v0.5.x/diagnostics/index.html
+++ b/docs/docs/getting-started/v0.5.x/diagnostics/index.html
@@ -219,24 +219,18 @@
+
+
+
+
+
+
Custom backup and restore providers
-
-
-
-
-
-
-
-
-
-
-
-
@@ -669,6 +663,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/docs/getting-started/v0.5.x/index.html b/docs/docs/getting-started/v0.5.x/index.html
index 51be5650..c183f95d 100644
--- a/docs/docs/getting-started/v0.5.x/index.html
+++ b/docs/docs/getting-started/v0.5.x/index.html
@@ -212,24 +212,18 @@
+
+
+
+
+
+
Custom backup and restore providers
-
-
-
-
-
-
-
-
-
-
-
-
@@ -662,6 +656,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
@@ -854,6 +865,8 @@
+
+
Configuration
@@ -921,8 +934,6 @@
-
-
@@ -1014,8 +1025,6 @@
-
-
Diagnostics
diff --git a/docs/docs/getting-started/v0.5.x/notifications/index.html b/docs/docs/getting-started/v0.5.x/notifications/index.html
index ca81e65a..f92ab324 100644
--- a/docs/docs/getting-started/v0.5.x/notifications/index.html
+++ b/docs/docs/getting-started/v0.5.x/notifications/index.html
@@ -219,24 +219,18 @@
+
+
+
+
+
+
Custom backup and restore providers
-
-
-
-
-
-
-
-
-
-
-
-
@@ -669,6 +663,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/docs/getting-started/v0.5.x/openshift/index.html b/docs/docs/getting-started/v0.5.x/openshift/index.html
index f7dc5aa9..3e0f52ca 100644
--- a/docs/docs/getting-started/v0.5.x/openshift/index.html
+++ b/docs/docs/getting-started/v0.5.x/openshift/index.html
@@ -219,24 +219,18 @@
+
+
+
+
+
+
Custom backup and restore providers
-
-
-
-
-
-
-
-
-
-
-
-
@@ -669,6 +663,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/docs/getting-started/v0.5.x/schema/index.html b/docs/docs/getting-started/v0.5.x/schema/index.html
index fb73700b..44508b09 100644
--- a/docs/docs/getting-started/v0.5.x/schema/index.html
+++ b/docs/docs/getting-started/v0.5.x/schema/index.html
@@ -219,24 +219,18 @@
+
+
+
+
+
+
Custom backup and restore providers
-
-
-
-
-
-
-
-
-
-
-
-
@@ -669,6 +663,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/docs/how-it-works/architecture-and-design/index.html b/docs/docs/how-it-works/architecture-and-design/index.html
index d1462fde..98f8b923 100644
--- a/docs/docs/how-it-works/architecture-and-design/index.html
+++ b/docs/docs/how-it-works/architecture-and-design/index.html
@@ -219,24 +219,18 @@
+
+
+
+
+
+
Custom backup and restore providers
-
-
-
-
-
-
-
-
-
-
-
-
@@ -669,6 +663,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/docs/how-it-works/index.html b/docs/docs/how-it-works/index.html
index 751db213..94c0273e 100644
--- a/docs/docs/how-it-works/index.html
+++ b/docs/docs/how-it-works/index.html
@@ -212,24 +212,18 @@
+
+
+
+
+
+
Custom backup and restore providers
-
-
-
-
-
-
-
-
-
-
-
-
@@ -662,6 +656,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
@@ -964,8 +975,6 @@
-
-
diff --git a/docs/docs/how-it-works/jenkins-docker-images/index.html b/docs/docs/how-it-works/jenkins-docker-images/index.html
index 6d174250..e68adaee 100644
--- a/docs/docs/how-it-works/jenkins-docker-images/index.html
+++ b/docs/docs/how-it-works/jenkins-docker-images/index.html
@@ -219,24 +219,18 @@
+
+
+
+
+
+
Custom backup and restore providers
-
-
-
-
-
-
-
-
-
-
-
-
@@ -669,6 +663,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/docs/index.html b/docs/docs/index.html
index 4b964874..dfe1c8e4 100644
--- a/docs/docs/index.html
+++ b/docs/docs/index.html
@@ -209,24 +209,18 @@
+
+
+
+
+
+
Custom backup and restore providers
-
-
-
-
-
-
-
-
-
-
-
-
@@ -659,6 +653,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
@@ -845,13 +856,9 @@
-
-
-
-
Jenkins security and hardening out of the box
@@ -869,6 +876,24 @@
+
+
+
+
+
+
+
Troubleshooting Jenkins Operator
+
+
+
+
+
+
+
+
+
Developer Guide
@@ -885,10 +910,6 @@
-
-
-
-
FAQ
@@ -971,10 +992,6 @@
-
-
-
-
diff --git a/docs/docs/index.xml b/docs/docs/index.xml
index 5772e28b..fd1ec3d2 100644
--- a/docs/docs/index.xml
+++ b/docs/docs/index.xml
@@ -1407,6 +1407,108 @@ kubectl get secret jenkins-operator-credentials-<cr_name> -o <s
+ -
+ Docs: Deploying Jenkins
+ https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/deploying-jenkins/
+ Wed, 06 Oct 2021 00:00:00 +0000
+
+ https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/deploying-jenkins/
+
+
+
+
+
+
+
+<div class="pageinfo pageinfo-primary">
+<p>This document describes the procedure for deploying Jenkins.</p>
+
+</div>
+
+
+<h2 id="prerequisites">Prerequisites</h2>
+
+<p>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 <code>jenkins.enabled</code> was set to false.
+That’s because by default, installation via Helm chart also covers deploying Jenkins.</p>
+
+<h2 id="deploying-jenkins-instance">Deploying Jenkins instance</h2>
+
+<p>Once Jenkins Operator is up and running let’s deploy actual Jenkins instance.
+Create manifest e.g. <strong><code>jenkins_instance.yaml</code></strong> with following data and save it on drive.</p>
+<div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-yaml" data-lang="yaml">apiVersion<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins.io/v1alpha2<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"></span>kind<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>Jenkins<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"></span>metadata<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>example<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>namespace<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>default<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"></span>spec<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>configurationAsCode<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>configurations<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">[</span><span style="color:#000;font-weight:bold">]</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>secret<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">""</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>groovyScripts<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>configurations<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">[</span><span style="color:#000;font-weight:bold">]</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>secret<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">""</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkinsAPISettings<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>authorizationStrategy<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>createUser<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>master<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>disableCSRFProtection<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">false</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>containers<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins-master<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>image<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins/jenkins<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">2.277</span><span style="color:#0000cf;font-weight:bold">.4</span>-lts-alpine<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>imagePullPolicy<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>Always<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>livenessProbe<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>failureThreshold<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">12</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>httpGet<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>path<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>/login<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>port<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>http<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>scheme<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>HTTP<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>initialDelaySeconds<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">100</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>periodSeconds<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">10</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>successThreshold<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>timeoutSeconds<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">5</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>readinessProbe<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>failureThreshold<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">10</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>httpGet<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>path<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>/login<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>port<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>http<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>scheme<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>HTTP<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>initialDelaySeconds<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">80</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>periodSeconds<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">10</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>successThreshold<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>timeoutSeconds<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>resources<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>limits<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>cpu<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>1500m<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>memory<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>3Gi<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>requests<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>cpu<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"1"</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>memory<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>500Mi<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>seedJobs<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>id<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins-operator<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>targets<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"cicd/jobs/*.jenkins"</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>description<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"Jenkins Operator repository"</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>repositoryBranch<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>master<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>repositoryUrl<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>https<span style="color:#000;font-weight:bold">:</span>//github.com/jenkinsci/kubernetes-operator.git</code></pre></div>
+<p>Deploy a Jenkins to Kubernetes:</p>
+<div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">kubectl create -f jenkins_instance.yaml</code></pre></div>
+<p>Watch the Jenkins instance being created:</p>
+<div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">kubectl get pods -w</code></pre></div>
+<p>Get the Jenkins credentials:</p>
+<div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">kubectl get secret jenkins-operator-credentials-<cr_name> -o <span style="color:#4e9a06">'jsonpath={.data.user}'</span> <span style="color:#000;font-weight:bold">|</span> base64 -d
+kubectl get secret jenkins-operator-credentials-<cr_name> -o <span style="color:#4e9a06">'jsonpath={.data.password}'</span> <span style="color:#000;font-weight:bold">|</span> base64 -d</code></pre></div>
+<p>Connect to the Jenkins instance (minikube):</p>
+<div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">minikube service jenkins-operator-http-<cr_name> --url</code></pre></div>
+<p>Connect to the Jenkins instance (actual Kubernetes cluster):</p>
+<div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">kubectl port-forward jenkins-<cr_name> 8080:8080</code></pre></div>
+<p>Then open browser with address <code>http://localhost:8080</code>.</p>
+
+<p><img src="https://jenkinsci.github.io/kubernetes-operator/kubernetes-operator/img/jenkins.png" alt="jenkins" /></p>
+
+
+
+
-
Docs: Configuration
https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.5.x/configuration/
@@ -1690,90 +1792,6 @@ $ ssh-keygen -p -f <filename> -m pem</code></pre></
- -
- Docs: Deploying Jenkins
- https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/deploying-jenkins/
- Thu, 19 Aug 2021 00:00:00 +0000
-
- https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/deploying-jenkins/
-
-
-
- <p>Once Jenkins Operator is up and running let’s deploy actual Jenkins instance.
-Create manifest e.g. <strong><code>jenkins_instance.yaml</code></strong> with following data and save it on drive.</p>
-<div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-yaml" data-lang="yaml">apiVersion<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins.io/v1alpha2<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"></span>kind<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>Jenkins<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"></span>metadata<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>example<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>namespace<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>default<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"></span>spec<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>configurationAsCode<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>configurations<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">[</span><span style="color:#000;font-weight:bold">]</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>secret<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">""</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>groovyScripts<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>configurations<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">[</span><span style="color:#000;font-weight:bold">]</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>secret<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">""</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkinsAPISettings<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>authorizationStrategy<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>createUser<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>master<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>disableCSRFProtection<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">false</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>containers<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins-master<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>image<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins/jenkins<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">2.277</span><span style="color:#0000cf;font-weight:bold">.4</span>-lts-alpine<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>imagePullPolicy<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>Always<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>livenessProbe<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>failureThreshold<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">12</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>httpGet<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>path<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>/login<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>port<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>http<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>scheme<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>HTTP<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>initialDelaySeconds<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">100</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>periodSeconds<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">10</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>successThreshold<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>timeoutSeconds<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">5</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>readinessProbe<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>failureThreshold<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">10</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>httpGet<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>path<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>/login<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>port<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>http<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>scheme<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>HTTP<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>initialDelaySeconds<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">80</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>periodSeconds<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">10</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>successThreshold<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>timeoutSeconds<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>resources<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>limits<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>cpu<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>1500m<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>memory<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>3Gi<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>requests<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>cpu<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"1"</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>memory<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>500Mi<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>seedJobs<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>id<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins-operator<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>targets<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"cicd/jobs/*.jenkins"</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>description<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"Jenkins Operator repository"</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>repositoryBranch<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>master<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>repositoryUrl<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>https<span style="color:#000;font-weight:bold">:</span>//github.com/jenkinsci/kubernetes-operator.git</code></pre></div>
-<p>Deploy a Jenkins to Kubernetes:</p>
-<div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">kubectl create -f jenkins_instance.yaml</code></pre></div>
-<p>Watch the Jenkins instance being created:</p>
-<div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">kubectl get pods -w</code></pre></div>
-<p>Get the Jenkins credentials:</p>
-<div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">kubectl get secret jenkins-operator-credentials-<cr_name> -o <span style="color:#4e9a06">'jsonpath={.data.user}'</span> <span style="color:#000;font-weight:bold">|</span> base64 -d
-kubectl get secret jenkins-operator-credentials-<cr_name> -o <span style="color:#4e9a06">'jsonpath={.data.password}'</span> <span style="color:#000;font-weight:bold">|</span> base64 -d</code></pre></div>
-<p>Connect to the Jenkins instance (minikube):</p>
-<div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">minikube service jenkins-operator-http-<cr_name> --url</code></pre></div>
-<p>Connect to the Jenkins instance (actual Kubernetes cluster):</p>
-<div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">kubectl port-forward jenkins-<cr_name> 8080:8080</code></pre></div>
-<p>Then open browser with address <code>http://localhost:8080</code>.</p>
-
-<p><img src="https://jenkinsci.github.io/kubernetes-operator/kubernetes-operator/img/jenkins.png" alt="jenkins" /></p>
-
-
-
-
-
Docs: Configuration
https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.4.x/configuration/
@@ -4188,360 +4206,23 @@ up. Therefore, the backup script makes a copy of jobs history only.</p>
-
- Docs: Custom backup and restore providers
- https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/custom-backup-and-restore/
- Thu, 19 Aug 2021 00:00:00 +0000
+ Docs: Separate namespaces for Jenkins and Operator
+ https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/separate-namespaces/
+ Wed, 06 Oct 2021 00:00:00 +0000
- https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/custom-backup-and-restore/
+ https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/separate-namespaces/
-<p>With enough effort one can create a custom backup and restore provider
-for the Jenkins Operator.</p>
-
-<h2 id="requirements">Requirements</h2>
-
-<p>Two commands (e.g. scripts) are required:</p>
-
-<ul>
-<li>a backup command, e.g. <code>backup.sh</code> that takes one argument, a <strong>backup number</strong></li>
-<li>a restore command, e.g. <code>backup.sh</code> that takes one argument, a <strong>backup number</strong></li>
-</ul>
-
-<p>Both scripts need to return an exit code of <code>0</code> on success and <code>1</code> or greater for failure.</p>
-
-<p>One of those scripts (or the entry point of the container) needs to be responsible
-for backup cleanup or rotation if required, or an external system.</p>
-
-<h2 id="how-it-works">How it works</h2>
-
-<p>The mechanism relies on basic Kubernetes and UNIX functionalities.</p>
-
-<p>The backup (and restore) container runs as a sidecar in the same
-Kubernetes pod as the Jenkins master.</p>
-
-<p>Name of the backup and restore containers can be set as necessary using
-<code>spec.backup.containerName</code> and <code>spec.restore.containerName</code>.
-In most cases it will be the same container, but we allow for less common use cases.</p>
-
-<p>The operator will call a backup or restore commands inside a sidecar container when necessary:</p>
-
-<ul>
-<li>backup command (defined in <code>spec.backup.action.exec.command</code>)
-will be called every <code>N</code> seconds configurable in: <code>spec.backup.interval</code>
-and on pod shutdown (if enabled in <code>spec.backup.makeBackupBeforePodDeletion</code>)
-with an integer representing the current backup number as first and only argument</li>
-<li>restore command (defined in <code>spec.restore.action.exec.command</code>)
-will be called at Jenkins startup
-with an integer representing the backup number to restore as first and only argument
-(can be overridden using <code>spec.restore.recoveryOnce</code>)</li>
-</ul>
-
-<h2 id="example-aws-s3-backup-using-the-cli">Example AWS S3 backup using the CLI</h2>
-
-<p>This example shows abbreviated version of a simple AWS S3 backup implementation
-using: <code>aws-cli</code>, <code>bash</code> and <code>kube2iam</code>.</p>
-
-<p>In addition to your normal <code>Jenkins</code> <code>CustomResource</code> some additional settings
-for backup and restore are required, e.g.:</p>
-<div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-yaml" data-lang="yaml">kind<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>Jenkins<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"></span>apiVersion<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins.io/v1alpha1<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"></span>metadata<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>example<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>namespace<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"></span>spec<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>master<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>masterAnnotations<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>iam.amazonaws.com/role<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"my-example-backup-role"</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># tell kube2iam where the AWS IAM role is</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>containers<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins-master<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>...<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>backup<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># container responsible for backup and restore</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>image<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>quay.io/virtuslab/aws-cli<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1.16</span><span style="color:#0000cf;font-weight:bold">.263</span><span style="color:#0000cf;font-weight:bold">-2</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>workingDir<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>command<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># our container entry point</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>sleep<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>infinity<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>env<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>BACKUP_BUCKET<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>value<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>my-example-bucket<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># the S3 bucket name to use</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>BACKUP_PATH<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>value<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>my-backup-path<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># the S3 bucket path prefix to use</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>JENKINS_HOME<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>value<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>/jenkins-home<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># the path to mount jenkins home dir in the backup container</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>volumeMounts<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>mountPath<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>/jenkins-home<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># Jenkins home volume</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins-home<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>mountPath<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/backup.sh<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>backup-scripts<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>subPath<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>backup.sh<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>readOnly<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">true</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>mountPath<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/restore.sh<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>backup-scripts<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>subPath<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>restore.sh<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>readOnly<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">true</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>volumes<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>backup-scripts<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>configMap<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>defaultMode<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">0754</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins-operator-backup-s3<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>securityContext<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># make sure both containers use the same UID and GUID</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>runAsUser<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1000</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>fsGroup<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1000</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>...<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>backup<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>containerName<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>backup<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># container name responsible for backup</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>interval<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">3600</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># how often make a backup in seconds</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>makeBackupBeforePodDeletion<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">true</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># trigger backup just before deleting the pod</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>action<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>exec<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>command<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># this command is invoked on "backup" container to create a backup,</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># <backup_number> is passed by operator,</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># for example /home/user/bin/backup.sh <backup_number></span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/backup.sh<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>restore<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>containerName<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>backup<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># container name is responsible for restore backup</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>action<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>exec<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>command<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># this command is invoked on "backup" container to restore a backup,</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># <backup_number> is passed by operator</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># for example /home/user/bin/restore.sh <backup_number></span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/restore.sh<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#8f5902;font-style:italic"># recoveryOnce: <backup_number> # if want to restore specific backup configure this field and then Jenkins will be restarted and desired backup will be restored</span></code></pre></div>
-<p>The actual backup and restore scripts will be provided in a <code>ConfigMap</code>:</p>
-<div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-yaml" data-lang="yaml">kind<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>ConfigMap<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"></span>apiVersion<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>v1<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"></span>metadata<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins-operator-backup-s3<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>namespace<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>labels<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>app<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins-operator<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"></span>data<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>backup.sh<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>|<span style="color:#8f5902;font-style:italic">-
-</span><span style="color:#8f5902;font-style:italic"> </span><span style="color:#8f5902;font-style:italic"> </span><span style="color:#8f5902;font-style:italic">#!/bin/bash -xeu</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">[</span><span style="color:#000;font-weight:bold">[</span><span style="color:#f8f8f8;text-decoration:underline"> </span>!<span style="color:#f8f8f8;text-decoration:underline"> </span>$<span style="color:#8f5902;font-style:italic"># -eq 1 ]] && echo "Usage: $0 backup_number" && exit 1;</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">[</span><span style="color:#000;font-weight:bold">[</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-z<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"${BACKUP_BUCKET}"</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">]</span><span style="color:#000;font-weight:bold">]</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic">&&</span><span style="color:#f8f8f8;text-decoration:underline"> </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"Required 'BACKUP_BUCKET' env not set"</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic">&&</span><span style="color:#f8f8f8;text-decoration:underline"> </span>exit<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1</span>;<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">[</span><span style="color:#000;font-weight:bold">[</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-z<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"${BACKUP_PATH}"</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">]</span><span style="color:#000;font-weight:bold">]</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic">&&</span><span style="color:#f8f8f8;text-decoration:underline"> </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"Required 'BACKUP_PATH' env not set"</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic">&&</span><span style="color:#f8f8f8;text-decoration:underline"> </span>exit<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1</span>;<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">[</span><span style="color:#000;font-weight:bold">[</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-z<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"${JENKINS_HOME}"</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">]</span><span style="color:#000;font-weight:bold">]</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic">&&</span><span style="color:#f8f8f8;text-decoration:underline"> </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"Required 'JENKINS_HOME' env not set"</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic">&&</span><span style="color:#f8f8f8;text-decoration:underline"> </span>exit<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1</span>;<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>backup_number=$<span style="color:#0000cf;font-weight:bold">1</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"Running backup #${backup_number}"</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>BACKUP_TMP_DIR=$(mktemp<span style="color:#f8f8f8;text-decoration:underline"> </span>-d)<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>tar<span style="color:#f8f8f8;text-decoration:underline"> </span>-C<span style="color:#f8f8f8;text-decoration:underline"> </span>${JENKINS_HOME}<span style="color:#f8f8f8;text-decoration:underline"> </span>-czf<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"${BACKUP_TMP_DIR}/${backup_number}.tar.gz"</span><span style="color:#f8f8f8;text-decoration:underline"> </span>--exclude<span style="color:#f8f8f8;text-decoration:underline"> </span>jobs/<span style="color:#8f5902;font-style:italic">*/workspace*</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-c<span style="color:#f8f8f8;text-decoration:underline"> </span>jobs<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic">&&</span><span style="color:#f8f8f8;text-decoration:underline"> </span>\<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>aws<span style="color:#f8f8f8;text-decoration:underline"> </span>s3<span style="color:#f8f8f8;text-decoration:underline"> </span>cp<span style="color:#f8f8f8;text-decoration:underline"> </span>${BACKUP_TMP_DIR}/${backup_number}.tar.gz<span style="color:#f8f8f8;text-decoration:underline"> </span>s3<span style="color:#000;font-weight:bold">:</span>//${BACKUP_BUCKET}/${BACKUP_PATH}/${backup_number}.tar.gz<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span>Done<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>restore.sh<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>|<span style="color:#8f5902;font-style:italic">-
-</span><span style="color:#8f5902;font-style:italic"> </span><span style="color:#8f5902;font-style:italic"> </span><span style="color:#8f5902;font-style:italic">#!/bin/bash -xeu</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">[</span><span style="color:#000;font-weight:bold">[</span><span style="color:#f8f8f8;text-decoration:underline"> </span>!<span style="color:#f8f8f8;text-decoration:underline"> </span>$<span style="color:#8f5902;font-style:italic"># -eq 1 ]] && echo "Usage: $0 backup_number" && exit 1</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">[</span><span style="color:#000;font-weight:bold">[</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-z<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"${BACKUP_BUCKET}"</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">]</span><span style="color:#000;font-weight:bold">]</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic">&&</span><span style="color:#f8f8f8;text-decoration:underline"> </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"Required 'BACKUP_BUCKET' env not set"</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic">&&</span><span style="color:#f8f8f8;text-decoration:underline"> </span>exit<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1</span>;<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">[</span><span style="color:#000;font-weight:bold">[</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-z<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"${BACKUP_PATH}"</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">]</span><span style="color:#000;font-weight:bold">]</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic">&&</span><span style="color:#f8f8f8;text-decoration:underline"> </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"Required 'BACKUP_PATH' env not set"</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic">&&</span><span style="color:#f8f8f8;text-decoration:underline"> </span>exit<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1</span>;<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">[</span><span style="color:#000;font-weight:bold">[</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-z<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"${JENKINS_HOME}"</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">]</span><span style="color:#000;font-weight:bold">]</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic">&&</span><span style="color:#f8f8f8;text-decoration:underline"> </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"Required 'JENKINS_HOME' env not set"</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic">&&</span><span style="color:#f8f8f8;text-decoration:underline"> </span>exit<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1</span>;<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>backup_number=$<span style="color:#0000cf;font-weight:bold">1</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"Running restore #${backup_number}"</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>BACKUP_TMP_DIR=$(mktemp<span style="color:#f8f8f8;text-decoration:underline"> </span>-d)<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>aws<span style="color:#f8f8f8;text-decoration:underline"> </span>s3<span style="color:#f8f8f8;text-decoration:underline"> </span>cp<span style="color:#f8f8f8;text-decoration:underline"> </span>s3<span style="color:#000;font-weight:bold">:</span>//${BACKUP_BUCKET}/${BACKUP_PATH}/${backup_number}.tar.gz<span style="color:#f8f8f8;text-decoration:underline"> </span>${BACKUP_TMP_DIR}/${backup_number}.tar.gz<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>tar<span style="color:#f8f8f8;text-decoration:underline"> </span>-C<span style="color:#f8f8f8;text-decoration:underline"> </span>${JENKINS_HOME}<span style="color:#f8f8f8;text-decoration:underline"> </span>-zxf<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"${BACKUP_TMP_DIR}/${backup_number}.tar.gz"</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span>Done</code></pre></div>
-<p>In our example we will use S3 bucket lifecycle policy to keep
-the number of backups under control, e.g. Cloud Formation fragment:</p>
-<div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-yaml" data-lang="yaml"><span style="color:#f8f8f8;text-decoration:underline"> </span>Type<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>AWS<span style="color:#000;font-weight:bold">:</span><span style="color:#000;font-weight:bold">:</span>S3<span style="color:#000;font-weight:bold">:</span><span style="color:#000;font-weight:bold">:</span>Bucket<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>Properties<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>BucketName<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>my-example-bucket<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>...<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>LifecycleConfiguration<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>Rules<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>Id<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>BackupCleanup<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>Status<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>Enabled<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>Prefix<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>my-backup-path<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>ExpirationInDays<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">7</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>NoncurrentVersionExpirationInDays<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">14</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>AbortIncompleteMultipartUpload<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>DaysAfterInitiation<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">3</span></code></pre></div>
-
-
-
- -
- Docs: Notifications
- https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/notifications/
- Thu, 19 Aug 2021 00:00:00 +0000
-
- https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/notifications/
-
-
-
-
-
-<h2 id="slack">Slack</h2>
-
-<p>Please follow <a href="https://api.slack.com/incoming-webhooks">this</a> instructions to get web hook URL.</p>
-
-<p>Create web hook secret with name <code>jenkins-operator-notification-data</code>. Contains key <code>url</code> with provided web hook URL.</p>
-<div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">$ kubectl create secret generic jenkins-operator-notification-data --from-literal<span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#000">url</span><span style="color:#ce5c00;font-weight:bold">=</span><webhook_url></code></pre></div>
-<p>Example configuration for Slack:</p>
-<div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-yaml" data-lang="yaml">kind<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>Jenkins<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"></span>spec<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>master<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>notifications<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>level<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>info<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>verbose<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">true</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><name<span style="color:#8f5902;font-style:italic">>
-</span><span style="color:#8f5902;font-style:italic"> </span><span style="color:#8f5902;font-style:italic"> </span><span style="color:#8f5902;font-style:italic">slack:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>webHookURLSecretKeySelector<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>secret<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><secret_name<span style="color:#8f5902;font-style:italic">>
-</span><span style="color:#8f5902;font-style:italic"> </span><span style="color:#8f5902;font-style:italic"> </span><span style="color:#8f5902;font-style:italic">key: <key></span></code></pre></div>
-<h2 id="microsoft-teams">Microsoft Teams</h2>
-
-<p>Please follow <a href="https://docs.microsoft.com/en-gb/outlook/actionable-messages/send-via-connectors">this</a> instructions to get web hook URL.</p>
-
-<p>Example configuration for Microsoft Teams:</p>
-<div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-yaml" data-lang="yaml">kind<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>Jenkins<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"></span>spec<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>master<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>notifications<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>level<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>info<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>verbose<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">true</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><name<span style="color:#8f5902;font-style:italic">>
-</span><span style="color:#8f5902;font-style:italic"> </span><span style="color:#8f5902;font-style:italic"> </span><span style="color:#8f5902;font-style:italic">teams:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>webHookURLSecretKeySelector<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>secret<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><secret_name<span style="color:#8f5902;font-style:italic">>
-</span><span style="color:#8f5902;font-style:italic"> </span><span style="color:#8f5902;font-style:italic"> </span><span style="color:#8f5902;font-style:italic">key: <key></span></code></pre></div>
-<h2 id="mailgun">Mailgun</h2>
-
-<p>Example configuration for Mailgun:</p>
-<div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-yaml" data-lang="yaml">kind<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>Jenkins<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"></span>spec<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>master<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>notifications<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>level<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>info<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>verbose<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">true</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><name<span style="color:#8f5902;font-style:italic">>
-</span><span style="color:#8f5902;font-style:italic"> </span><span style="color:#8f5902;font-style:italic"> </span><span style="color:#8f5902;font-style:italic">mailgun:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>domain<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><domain<span style="color:#8f5902;font-style:italic">>
-</span><span style="color:#8f5902;font-style:italic"> </span><span style="color:#8f5902;font-style:italic"> </span><span style="color:#8f5902;font-style:italic">apiKeySecretKeySelector:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>secret<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><secret_name<span style="color:#8f5902;font-style:italic">>
-</span><span style="color:#8f5902;font-style:italic"> </span><span style="color:#8f5902;font-style:italic"> </span><span style="color:#8f5902;font-style:italic">key: <key></span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>recipient<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><your_email<span style="color:#8f5902;font-style:italic">>
-</span><span style="color:#8f5902;font-style:italic"> </span><span style="color:#8f5902;font-style:italic"> </span><span style="color:#8f5902;font-style:italic">from: <mailgun_email></span></code></pre></div>
-<h2 id="debug-options">Debug options</h2>
-
-<p>As you see there is two debugging options:</p>
-
-<ul>
-<li><p><code>level</code> (warning/info) - Set level of messages to send.</p></li>
-
-<li><p><code>verbose</code> - Print stacktrace and additional error messages</p></li>
-</ul>
-
-<h2 id="multiple-providers">Multiple providers</h2>
-
-<p>You can use multiple providers to send notification to another communication channels at the same time.
-For example you will send notifications to Slack and Teams.</p>
-<div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-yaml" data-lang="yaml">kind<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>Jenkins<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"></span>spec<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>master<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>notifications<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>level<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>info<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>verbose<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">true</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>nslack<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>slack<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>webHookURLSecretKeySelector<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>secret<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><secret_name<span style="color:#8f5902;font-style:italic">>
-</span><span style="color:#8f5902;font-style:italic"> </span><span style="color:#8f5902;font-style:italic"> </span><span style="color:#8f5902;font-style:italic">key: <key></span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>level<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>info<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>verbose<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">true</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>nteams<span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>teams<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>webHookURLSecretKeySelector<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>secret<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
-</span><span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><secret_name<span style="color:#8f5902;font-style:italic">>
-</span><span style="color:#8f5902;font-style:italic"> </span><span style="color:#8f5902;font-style:italic"> </span><span style="color:#8f5902;font-style:italic">key: <key></span></code></pre></div>
-
-
-
- -
- Docs: Security
- https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/security/
- Fri, 20 Aug 2021 00:00:00 +0000
-
- https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/security/
-
-
-
-
-
-<p>By default <strong>Jenkins Operator</strong> performs an initial security hardening of Jenkins instance
-via groovy scripts to prevent any security gaps.</p>
-
-<h2 id="jenkins-access-control">Jenkins Access Control</h2>
-
-<p>Currently <strong>Jenkins Operator</strong> generates a username and random password and stores them in a Kubernetes Secret.
-However any other authorization mechanisms are possible and can be done via groovy scripts or configuration as code plugin.
-For more information take a look at <a href="https://jenkinsci.github.io/kubernetes-operator/kubernetes-operator/docs/getting-started/latest/customizing-jenkins/">getting-started#jenkins-customization</a>.</p>
-
-<p>Any change to Security Realm or Authorization requires that user called <code>jenkins-operator</code> must have admin rights
-because <strong>Jenkins Operator</strong> calls Jenkins API.</p>
-
-<h2 id="jenkins-hardening">Jenkins Hardening</h2>
-
-<p>The list below describes all the default security setting configured by the <strong>Jenkins Operator</strong>:</p>
-
-<ul>
-<li>basic settings - use <code>Mode.EXCLUSIVE</code> - Jobs must specify that they want to run on master node</li>
-<li>enable CSRF - Cross Site Request Forgery Protection is enabled</li>
-<li>disable usage stats - Jenkins usage stats submitting is disabled</li>
-<li>enable master access control - Slave to Master Access Control is enabled</li>
-<li>disable old JNLP protocols - <code>JNLP3-connect</code>, <code>JNLP2-connect</code> and <code>JNLP-connect</code> are disabled</li>
-<li>disable CLI - CLI access of <code>/cli</code> URL is disabled</li>
-<li>configure kubernetes-plugin - secure configuration for Kubernetes plugin</li>
-</ul>
-
-<p>If you would like to dig a little bit into the code, take a look <a href="https://github.com/jenkinsci/kubernetes-operator/blob/master/pkg/configuration/base/resources/base_configuration_configmap.go">here</a>.</p>
-
-<h2 id="jenkins-api">Jenkins API</h2>
-
-<p>The <strong>Jenkins Operator</strong> generates and configures Basic Authentication token for Jenkins Go client
-and stores it in a Kubernetes Secret.</p>
-
-<h2 id="kubernetes">Kubernetes</h2>
-
-<p>Kubernetes API permissions are limited by the following roles:</p>
-
-<ul>
-<li><a href="https://github.com/jenkinsci/kubernetes-operator/blob/v0.6.0/deploy/all-in-one-v1alpha2.yaml">jenkins-operator role</a><br /></li>
-<li><a href="https://github.com/jenkinsci/kubernetes-operator/blob/v0.6.0/pkg/configuration/base/resources/rbac.go">Jenkins Master role</a></li>
-</ul>
-
-<p>Since <strong>Jenkins Operator</strong> must be able to grant permission for its deployed Jenkins masters
-to spawn pods (the <code>Jenkins Master role</code> above),
-the operator itself requires permission to create RBAC resources (the <code>jenkins-operator role</code> above).</p>
-
-<p>Deployed this way, any subject which may create a Pod (including a Jenkins job) may
-assume the <code>jenkins-operator</code> role by using its’ ServiceAccount, create RBAC rules, and thus escape its granted permissions.
-Any namespace to which the <code>jenkins-operator</code> is deployed must be considered to implicitly grant all
-possible permissions to any subject which can create a Pod in that namespace.</p>
-
-<p>To mitigate this issue <strong>Jenkins Operator</strong> should be deployed in one namespace, and the Jenkins CR should be created in a separate namespace.
-Section below contains instructions on how to do it.</p>
-
-<h2 id="setup-jenkins-operator-and-jenkins-in-separate-namespaces">Setup Jenkins Operator and Jenkins in separate namespaces</h2>
+<h2 id="create-namespaces">Create namespaces</h2>
<p>You need to create two namespaces, for example we’ll call them <strong>jenkins</strong> for Jenkins and <strong>jenkins-operator</strong> for Jenkins Operator.</p>
<div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">$ kubectl create ns jenkins-operator
$ kubectl create ns jenkins</code></pre></div>
+<h2 id="create-necessary-resources-in-jenkins-operator-namespace">Create necessary resources in Jenkins Operator namespace</h2>
+
<p>Next, you need to install resources necessary for the Operator to work in the <code>jenkins-operator</code> namespace. To do that,
copy the manifest you see below to <code>jenkins-operator-rbac.yaml</code>file.</p>
<div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-yaml" data-lang="yaml">---<span style="color:#f8f8f8;text-decoration:underline">
@@ -4769,7 +4450,7 @@ copy the manifest you see below to <code>jenkins-operator-rbac.yaml</co
<p>Now install the required resources in <code>jenkins-operator</code> namespace with:</p>
<div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">kubectl apply -n jenkins-operator -f jenkins-operator-rbac.yaml</code></pre></div>
<p>There’s only one thing left to install in <code>jenkins-operator</code> namespace, and that is the Operator itself. The manifest
-below contains the Operator as defined in all-in-one manifest found in <a href="https://jenkinsci.github.io/kubernetes-operator/kubernetes-operator/docs/getting-started/latest/installing-the-operator/">Installating the Operator</a>
+below contains the Operator as defined in all-in-one manifest found in <a href="https://jenkinsci.github.io/kubernetes-operator/kubernetes-operator/docs/getting-started/latest/installing-the-operator/">Installing the Operator</a>
page, the only difference is that the one here sets <code>WATCH_NAMESPACE</code> to the <code>jenkins</code> namespace we created.</p>
<p>Copy its content to <code>jenkins-operator.yaml</code> file.</p>
@@ -4831,7 +4512,9 @@ spec:
there are two things left to do: creating necessary Role and RoleBinding for the Operator in <code>jenkins</code> namespace, and
deploying actual Jenkins instance there.</p>
-<p>Below you can find manifest with RBAC that need to be created in <code>jenkins</code> namespace. Copy its content to <code>jenkins-ns-rbac.yaml</code> file.</p>
+<h2 id="create-necessary-resources-in-jenkins-namespace">Create necessary resources in Jenkins namespace</h2>
+
+<p>Below you can find manifest with RBAC that needs to be created in <code>jenkins</code> namespace. Copy its content to <code>jenkins-ns-rbac.yaml</code> file.</p>
<div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-yaml" data-lang="yaml">apiVersion<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>rbac.authorization.k8s.io/v1<span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"></span>kind<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>Role<span style="color:#f8f8f8;text-decoration:underline">
</span><span style="color:#f8f8f8;text-decoration:underline"></span>metadata<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
@@ -5073,17 +4756,196 @@ Copy it to <code>jenkins-instance.yaml</code></p>
<p>With this, you have just set up Jenkins Operator and Jenkins in separate namespaces. Now the Operator will run in
its own namespace (<code>jenkins-operator</code>), watch for CRs in <code>jenkins</code> namespace, and deploy Jenkins there.</p>
-<h2 id="report-a-security-vulnerability">Report a Security Vulnerability</h2>
+
+
+
+ -
+ Docs: Custom backup and restore providers
+ https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/custom-backup-and-restore/
+ Wed, 06 Oct 2021 00:00:00 +0000
+
+ https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/custom-backup-and-restore/
+
+
+
+
-<p>If you find a vulnerability or any misconfiguration in Jenkins, please report it in the <a href="https://github.com/jenkinsci/kubernetes-operator/issues">issues</a>.</p>
+<p>With enough effort one can create a custom backup and restore provider
+for the Jenkins Operator.</p>
+<h2 id="requirements">Requirements</h2>
+
+<p>Two commands (e.g. scripts) are required:</p>
+
+<ul>
+<li>a backup command, e.g. <code>backup.sh</code> that takes one argument, a <strong>backup number</strong></li>
+<li>a restore command, e.g. <code>backup.sh</code> that takes one argument, a <strong>backup number</strong></li>
+</ul>
+
+<p>Both scripts need to return an exit code of <code>0</code> on success and <code>1</code> or greater for failure.</p>
+
+<p>One of those scripts (or the entry point of the container) needs to be responsible
+for backup cleanup or rotation if required, or an external system.</p>
+
+<h2 id="how-it-works">How it works</h2>
+
+<p>The mechanism relies on basic Kubernetes and UNIX functionalities.</p>
+
+<p>The backup (and restore) container runs as a sidecar in the same
+Kubernetes pod as the Jenkins master.</p>
+
+<p>Name of the backup and restore containers can be set as necessary using
+<code>spec.backup.containerName</code> and <code>spec.restore.containerName</code>.
+In most cases it will be the same container, but we allow for less common use cases.</p>
+
+<p>The operator will call a backup or restore commands inside a sidecar container when necessary:</p>
+
+<ul>
+<li>backup command (defined in <code>spec.backup.action.exec.command</code>)
+will be called every <code>N</code> seconds configurable in: <code>spec.backup.interval</code>
+and on pod shutdown (if enabled in <code>spec.backup.makeBackupBeforePodDeletion</code>)
+with an integer representing the current backup number as first and only argument</li>
+<li>restore command (defined in <code>spec.restore.action.exec.command</code>)
+will be called at Jenkins startup
+with an integer representing the backup number to restore as first and only argument
+(can be overridden using <code>spec.restore.recoveryOnce</code>)</li>
+</ul>
+
+<h2 id="example-aws-s3-backup-using-the-cli">Example AWS S3 backup using the CLI</h2>
+
+<p>This example shows abbreviated version of a simple AWS S3 backup implementation
+using: <code>aws-cli</code>, <code>bash</code> and <code>kube2iam</code>.</p>
+
+<p>In addition to your normal <code>Jenkins</code> <code>CustomResource</code> some additional settings
+for backup and restore are required, e.g.:</p>
+<div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-yaml" data-lang="yaml">kind<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>Jenkins<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"></span>apiVersion<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins.io/v1alpha1<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"></span>metadata<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>example<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>namespace<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"></span>spec<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>master<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>masterAnnotations<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>iam.amazonaws.com/role<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"my-example-backup-role"</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># tell kube2iam where the AWS IAM role is</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>containers<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins-master<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>...<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>backup<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># container responsible for backup and restore</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>image<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>quay.io/virtuslab/aws-cli<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1.16</span><span style="color:#0000cf;font-weight:bold">.263</span><span style="color:#0000cf;font-weight:bold">-2</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>workingDir<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>command<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># our container entry point</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>sleep<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>infinity<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>env<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>BACKUP_BUCKET<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>value<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>my-example-bucket<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># the S3 bucket name to use</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>BACKUP_PATH<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>value<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>my-backup-path<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># the S3 bucket path prefix to use</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>JENKINS_HOME<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>value<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>/jenkins-home<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># the path to mount jenkins home dir in the backup container</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>volumeMounts<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>mountPath<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>/jenkins-home<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># Jenkins home volume</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins-home<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>mountPath<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/backup.sh<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>backup-scripts<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>subPath<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>backup.sh<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>readOnly<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">true</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>mountPath<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/restore.sh<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>backup-scripts<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>subPath<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>restore.sh<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>readOnly<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">true</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>volumes<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>backup-scripts<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>configMap<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>defaultMode<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">0754</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins-operator-backup-s3<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>securityContext<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># make sure both containers use the same UID and GUID</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>runAsUser<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1000</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>fsGroup<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1000</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>...<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>backup<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>containerName<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>backup<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># container name responsible for backup</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>interval<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">3600</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># how often make a backup in seconds</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>makeBackupBeforePodDeletion<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">true</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># trigger backup just before deleting the pod</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>action<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>exec<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>command<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># this command is invoked on "backup" container to create a backup,</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># <backup_number> is passed by operator,</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># for example /home/user/bin/backup.sh <backup_number></span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/backup.sh<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>restore<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>containerName<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>backup<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># container name is responsible for restore backup</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>action<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>exec<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>command<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># this command is invoked on "backup" container to restore a backup,</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># <backup_number> is passed by operator</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># for example /home/user/bin/restore.sh <backup_number></span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/restore.sh<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#8f5902;font-style:italic"># recoveryOnce: <backup_number> # if want to restore specific backup configure this field and then Jenkins will be restarted and desired backup will be restored</span></code></pre></div>
+<p>The actual backup and restore scripts will be provided in a <code>ConfigMap</code>:</p>
+<div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-yaml" data-lang="yaml">kind<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>ConfigMap<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"></span>apiVersion<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>v1<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"></span>metadata<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins-operator-backup-s3<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>namespace<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>labels<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>app<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins-operator<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"></span>data<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>backup.sh<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>|<span style="color:#8f5902;font-style:italic">-
+</span><span style="color:#8f5902;font-style:italic"> </span><span style="color:#8f5902;font-style:italic"> </span><span style="color:#8f5902;font-style:italic">#!/bin/bash -xeu</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">[</span><span style="color:#000;font-weight:bold">[</span><span style="color:#f8f8f8;text-decoration:underline"> </span>!<span style="color:#f8f8f8;text-decoration:underline"> </span>$<span style="color:#8f5902;font-style:italic"># -eq 1 ]] && echo "Usage: $0 backup_number" && exit 1;</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">[</span><span style="color:#000;font-weight:bold">[</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-z<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"${BACKUP_BUCKET}"</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">]</span><span style="color:#000;font-weight:bold">]</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic">&&</span><span style="color:#f8f8f8;text-decoration:underline"> </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"Required 'BACKUP_BUCKET' env not set"</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic">&&</span><span style="color:#f8f8f8;text-decoration:underline"> </span>exit<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1</span>;<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">[</span><span style="color:#000;font-weight:bold">[</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-z<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"${BACKUP_PATH}"</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">]</span><span style="color:#000;font-weight:bold">]</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic">&&</span><span style="color:#f8f8f8;text-decoration:underline"> </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"Required 'BACKUP_PATH' env not set"</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic">&&</span><span style="color:#f8f8f8;text-decoration:underline"> </span>exit<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1</span>;<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">[</span><span style="color:#000;font-weight:bold">[</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-z<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"${JENKINS_HOME}"</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">]</span><span style="color:#000;font-weight:bold">]</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic">&&</span><span style="color:#f8f8f8;text-decoration:underline"> </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"Required 'JENKINS_HOME' env not set"</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic">&&</span><span style="color:#f8f8f8;text-decoration:underline"> </span>exit<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1</span>;<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>backup_number=$<span style="color:#0000cf;font-weight:bold">1</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"Running backup #${backup_number}"</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>BACKUP_TMP_DIR=$(mktemp<span style="color:#f8f8f8;text-decoration:underline"> </span>-d)<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>tar<span style="color:#f8f8f8;text-decoration:underline"> </span>-C<span style="color:#f8f8f8;text-decoration:underline"> </span>${JENKINS_HOME}<span style="color:#f8f8f8;text-decoration:underline"> </span>-czf<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"${BACKUP_TMP_DIR}/${backup_number}.tar.gz"</span><span style="color:#f8f8f8;text-decoration:underline"> </span>--exclude<span style="color:#f8f8f8;text-decoration:underline"> </span>jobs/<span style="color:#8f5902;font-style:italic">*/workspace*</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-c<span style="color:#f8f8f8;text-decoration:underline"> </span>jobs<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic">&&</span><span style="color:#f8f8f8;text-decoration:underline"> </span>\<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>aws<span style="color:#f8f8f8;text-decoration:underline"> </span>s3<span style="color:#f8f8f8;text-decoration:underline"> </span>cp<span style="color:#f8f8f8;text-decoration:underline"> </span>${BACKUP_TMP_DIR}/${backup_number}.tar.gz<span style="color:#f8f8f8;text-decoration:underline"> </span>s3<span style="color:#000;font-weight:bold">:</span>//${BACKUP_BUCKET}/${BACKUP_PATH}/${backup_number}.tar.gz<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span>Done<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>restore.sh<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>|<span style="color:#8f5902;font-style:italic">-
+</span><span style="color:#8f5902;font-style:italic"> </span><span style="color:#8f5902;font-style:italic"> </span><span style="color:#8f5902;font-style:italic">#!/bin/bash -xeu</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">[</span><span style="color:#000;font-weight:bold">[</span><span style="color:#f8f8f8;text-decoration:underline"> </span>!<span style="color:#f8f8f8;text-decoration:underline"> </span>$<span style="color:#8f5902;font-style:italic"># -eq 1 ]] && echo "Usage: $0 backup_number" && exit 1</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">[</span><span style="color:#000;font-weight:bold">[</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-z<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"${BACKUP_BUCKET}"</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">]</span><span style="color:#000;font-weight:bold">]</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic">&&</span><span style="color:#f8f8f8;text-decoration:underline"> </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"Required 'BACKUP_BUCKET' env not set"</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic">&&</span><span style="color:#f8f8f8;text-decoration:underline"> </span>exit<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1</span>;<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">[</span><span style="color:#000;font-weight:bold">[</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-z<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"${BACKUP_PATH}"</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">]</span><span style="color:#000;font-weight:bold">]</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic">&&</span><span style="color:#f8f8f8;text-decoration:underline"> </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"Required 'BACKUP_PATH' env not set"</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic">&&</span><span style="color:#f8f8f8;text-decoration:underline"> </span>exit<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1</span>;<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">[</span><span style="color:#000;font-weight:bold">[</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-z<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"${JENKINS_HOME}"</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">]</span><span style="color:#000;font-weight:bold">]</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic">&&</span><span style="color:#f8f8f8;text-decoration:underline"> </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"Required 'JENKINS_HOME' env not set"</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic">&&</span><span style="color:#f8f8f8;text-decoration:underline"> </span>exit<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1</span>;<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>backup_number=$<span style="color:#0000cf;font-weight:bold">1</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"Running restore #${backup_number}"</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>BACKUP_TMP_DIR=$(mktemp<span style="color:#f8f8f8;text-decoration:underline"> </span>-d)<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>aws<span style="color:#f8f8f8;text-decoration:underline"> </span>s3<span style="color:#f8f8f8;text-decoration:underline"> </span>cp<span style="color:#f8f8f8;text-decoration:underline"> </span>s3<span style="color:#000;font-weight:bold">:</span>//${BACKUP_BUCKET}/${BACKUP_PATH}/${backup_number}.tar.gz<span style="color:#f8f8f8;text-decoration:underline"> </span>${BACKUP_TMP_DIR}/${backup_number}.tar.gz<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>tar<span style="color:#f8f8f8;text-decoration:underline"> </span>-C<span style="color:#f8f8f8;text-decoration:underline"> </span>${JENKINS_HOME}<span style="color:#f8f8f8;text-decoration:underline"> </span>-zxf<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"${BACKUP_TMP_DIR}/${backup_number}.tar.gz"</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span>Done</code></pre></div>
+<p>In our example we will use S3 bucket lifecycle policy to keep
+the number of backups under control, e.g. Cloud Formation fragment:</p>
+<div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-yaml" data-lang="yaml"><span style="color:#f8f8f8;text-decoration:underline"> </span>Type<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>AWS<span style="color:#000;font-weight:bold">:</span><span style="color:#000;font-weight:bold">:</span>S3<span style="color:#000;font-weight:bold">:</span><span style="color:#000;font-weight:bold">:</span>Bucket<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>Properties<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>BucketName<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>my-example-bucket<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>...<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>LifecycleConfiguration<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>Rules<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>Id<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>BackupCleanup<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>Status<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>Enabled<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>Prefix<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>my-backup-path<span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>ExpirationInDays<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">7</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>NoncurrentVersionExpirationInDays<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">14</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>AbortIncompleteMultipartUpload<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
+</span><span style="color:#f8f8f8;text-decoration:underline"> </span>DaysAfterInitiation<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">3</span></code></pre></div>
-
Docs: AKS
https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/aks/
- Thu, 19 Aug 2021 00:00:00 +0000
+ Wed, 06 Oct 2021 00:00:00 +0000
https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/aks/
@@ -9669,50 +9531,2679 @@ OpenShift oauth authentication. By default, the jenkins http service is named
-
- Docs: Tools
- https://jenkinsci.github.io/kubernetes-operator/docs/developer-guide/tools/
- Mon, 05 Aug 2019 00:00:00 +0000
+ Docs: Diagnostics
+ https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.5.x/diagnostics/
+ Mon, 18 Jan 2021 00:00:00 +0000
- https://jenkinsci.github.io/kubernetes-operator/docs/developer-guide/tools/
+ https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.5.x/diagnostics/
+<p>Turn on debug in <strong>Jenkins Operator</strong> deployment:</p>
+<div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">sed -i <span style="color:#4e9a06">'s|\(args:\).*|\1\ ["--debug"\]|'</span> deploy/operator.yaml
+kubectl apply -f deploy/operator.yaml</code></pre></div>
+<p>Watch Kubernetes events:</p>
+<div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">kubectl get events --sort-by<span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#4e9a06">'{.lastTimestamp}'</span></code></pre></div>
+<p>Verify Jenkins master logs:</p>
+<div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">kubectl logs -f jenkins-<cr_name></code></pre></div>
+<p>Verify the <code>jenkins-operator</code> logs:</p>
+<div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">kubectl logs deployment/jenkins-operator</code></pre></div>
+<h2 id="troubleshooting">Troubleshooting</h2>
+<p>Delete the Jenkins master pod and wait for the new one to come up:</p>
+<div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">kubectl delete pod jenkins-<cr_name></code></pre></div>
+
+
+
+ -
+ Docs: Schema
+ https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.5.x/schema/
+ Mon, 18 Jan 2021 00:00:00 +0000
+
+ https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.5.x/schema/
+
+
+
+
<div class="pageinfo pageinfo-primary">
-<p>This document explains how to install the Go tools used by the development process.</p>
+<p>This document contains API scheme for <code>jenkins-operator</code> Custom Resource Definition manifest</p>
</div>
-<h2 id="configure-environment-variables">Configure environment variables</h2>
-<div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash"><span style="color:#204a87">export</span> <span style="color:#000">GOPATH</span><span style="color:#ce5c00;font-weight:bold">=</span>/home/go <span style="color:#8f5902;font-style:italic"># example value</span>
-<span style="color:#204a87">export</span> <span style="color:#000">GOROOT</span><span style="color:#ce5c00;font-weight:bold">=</span>/usr/lib/go-1.12 <span style="color:#8f5902;font-style:italic"># example value</span>
-<span style="color:#204a87">export</span> <span style="color:#000">PATH</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#000">$GOPATH</span>/bin:<span style="color:#000">$PATH</span></code></pre></div>
-<h2 id="goimports">goimports</h2>
-<pre><code>go get golang.org/x/tools/cmd/goimports
-cd $GOPATH/src/golang.org/x/tools/cmd/goimports
-go build
-go install</code></pre>
-<h2 id="golint">golint</h2>
-<pre><code>go get -u golang.org/x/lint/golint
-cd $GOPATH/src/golang.org/x/lint/golint
-go build
-go install</code></pre>
-<h2 id="checkmake">checkmake</h2>
-<pre><code>go get github.com/mrtazz/checkmake
-cd $GOPATH/src/github.com/mrtazz/checkmake
-go build
-go install</code></pre>
-<h2 id="staticcheck">staticcheck</h2>
-<pre><code>mkdir -p $GOPATH/src/github.com/dominikh/
-cd $GOPATH/src/github.com/dominikh/
-git clone https://github.com/dominikh/go-tools.git
-cd $GOPATH/src/github.com/dominikh/go-tools/staticcheck
-go build
-go install</code></pre>
+<p>Packages:</p>
+<ul>
+<li>
+<a href="#jenkins.io">jenkins.io</a>
+</li>
+</ul>
+<h2 id="jenkins.io">jenkins.io</h2>
+<p>
+<p>Package v1alpha2 contains API Schema definitions for the jenkins.io v1alpha2 API group</p>
+</p>
+Resource Types:
+<ul><li>
+<a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.Jenkins">Jenkins</a>
+</li></ul>
+<h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Jenkins">Jenkins
+</h3>
+<p>
+<p>Jenkins is the Schema for the jenkins API</p>
+</p>
+<table>
+<thead>
+<tr>
+<th>Field</th>
+<th>Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>
+<code>apiVersion</code></br>
+string</td>
+<td>
+<code>
+jenkins.io/v1alpha2
+</code>
+</td>
+</tr>
+<tr>
+<td>
+<code>kind</code></br>
+string
+</td>
+<td><code>Jenkins</code></td>
+</tr>
+<tr>
+<td>
+<code>metadata</code></br>
+<em>
+<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#objectmeta-v1-meta">
+Kubernetes meta/v1.ObjectMeta
+</a>
+</em>
+</td>
+<td>
+Refer to the Kubernetes API documentation for the fields of the
+<code>metadata</code> field.
+</td>
+</tr>
+<tr>
+<td>
+<code>spec</code></br>
+<em>
+<a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.JenkinsSpec">
+JenkinsSpec
+</a>
+</em>
+</td>
+<td>
+<p>Spec defines the desired state of the Jenkins</p>
+<br/>
+<br/>
+<table>
+<tr>
+<td>
+<code>master</code></br>
+<em>
+<a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.JenkinsMaster">
+JenkinsMaster
+</a>
+</em>
+</td>
+<td>
+<p>Master represents Jenkins master pod properties and Jenkins plugins.
+Every single change here requires a pod restart.</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>seedJobs</code></br>
+<em>
+<a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.SeedJob">
+[][]github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.SeedJob
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>SeedJobs defines list of Jenkins Seed Job configurations
+More info: <a href="https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/configuration#configure-seed-jobs-and-pipelines">https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/configuration#configure-seed-jobs-and-pipelines</a></p>
+</td>
+</tr>
+<tr>
+<td>
+<code>notifications</code></br>
+<em>
+<a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Notification">
+[][]github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Notification
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Notifications defines list of a services which are used to inform about Jenkins status
+Can be used to integrate chat services like Slack, Microsoft Teams or Mailgun</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>service</code></br>
+<em>
+<a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Service">
+Service
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Service is Kubernetes service of Jenkins master HTTP pod
+Defaults to :
+port: 8080
+type: ClusterIP</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>slaveService</code></br>
+<em>
+<a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Service">
+Service
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Service is Kubernetes service of Jenkins slave pods
+Defaults to :
+port: 50000
+type: ClusterIP</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>backup</code></br>
+<em>
+<a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Backup">
+Backup
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Backup defines configuration of Jenkins backup
+More info: <a href="https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/configure-backup-and-restore/">https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/configure-backup-and-restore/</a></p>
+</td>
+</tr>
+<tr>
+<td>
+<code>restore</code></br>
+<em>
+<a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Restore">
+Restore
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Backup defines configuration of Jenkins backup restore
+More info: <a href="https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/configure-backup-and-restore/">https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/configure-backup-and-restore/</a></p>
+</td>
+</tr>
+<tr>
+<td>
+<code>groovyScripts</code></br>
+<em>
+<a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.GroovyScripts">
+GroovyScripts
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>GroovyScripts defines configuration of Jenkins customization via groovy scripts</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>configurationAsCode</code></br>
+<em>
+<a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.ConfigurationAsCode">
+ConfigurationAsCode
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>ConfigurationAsCode defines configuration of Jenkins customization via Configuration as Code Jenkins plugin</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>roles</code></br>
+<em>
+<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#roleref-v1-rbac">
+[]Kubernetes rbac/v1.RoleRef
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Roles defines list of extra RBAC roles for the Jenkins Master pod service account</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>serviceAccount</code></br>
+<em>
+<a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.ServiceAccount">
+ServiceAccount
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>ServiceAccount defines Jenkins master service account attributes</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>jenkinsAPISettings</code></br>
+<em>
+<a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.JenkinsAPISettings">
+JenkinsAPISettings
+</a>
+</em>
+</td>
+<td>
+<p>JenkinsAPISettings defines configuration used by the operator to gain admin access to the Jenkins API</p>
+</td>
+</tr>
+</table>
+</td>
+</tr>
+<tr>
+<td>
+<code>status</code></br>
+<em>
+<a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.JenkinsStatus">
+JenkinsStatus
+</a>
+</em>
+</td>
+<td>
+<p>Status defines the observed state of Jenkins</p>
+</td>
+</tr>
+</tbody>
+</table>
+<h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.AppliedGroovyScript">AppliedGroovyScript
+</h3>
+<p>
+(<em>Appears on:</em>
+<a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.JenkinsStatus">JenkinsStatus</a>)
+</p>
+<p>
+<p>AppliedGroovyScript is the applied groovy script in Jenkins by the operator.</p>
+</p>
+<table>
+<thead>
+<tr>
+<th>Field</th>
+<th>Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>
+<code>configurationType</code></br>
+<em>
+string
+</em>
+</td>
+<td>
+<p>ConfigurationType is the name of the configuration type(base-groovy, user-groovy, user-casc)</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>source</code></br>
+<em>
+string
+</em>
+</td>
+<td>
+<p>Source is the name of source where is located groovy script</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>name</code></br>
+<em>
+string
+</em>
+</td>
+<td>
+<p>Name is the name of the groovy script</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>hash</code></br>
+<em>
+string
+</em>
+</td>
+<td>
+<p>Hash is the hash of the groovy script and secrets which it uses</p>
+</td>
+</tr>
+</tbody>
+</table>
+<h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.AuthorizationStrategy">AuthorizationStrategy
+(<code>string</code> alias)</p></h3>
+<p>
+(<em>Appears on:</em>
+<a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.JenkinsAPISettings">JenkinsAPISettings</a>)
+</p>
+<p>
+<p>AuthorizationStrategy defines authorization strategy of the operator for the Jenkins API</p>
+</p>
+<h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Backup">Backup
+</h3>
+<p>
+(<em>Appears on:</em>
+<a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.JenkinsSpec">JenkinsSpec</a>)
+</p>
+<p>
+<p>Backup defines configuration of Jenkins backup.</p>
+</p>
+<table>
+<thead>
+<tr>
+<th>Field</th>
+<th>Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>
+<code>containerName</code></br>
+<em>
+string
+</em>
+</td>
+<td>
+<p>ContainerName is the container name responsible for backup operation</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>action</code></br>
+<em>
+<a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Handler">
+Handler
+</a>
+</em>
+</td>
+<td>
+<p>Action defines action which performs backup in backup container sidecar</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>interval</code></br>
+<em>
+uint64
+</em>
+</td>
+<td>
+<p>Interval tells how often make backup in seconds
+Defaults to 30.</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>makeBackupBeforePodDeletion</code></br>
+<em>
+bool
+</em>
+</td>
+<td>
+<p>MakeBackupBeforePodDeletion tells operator to make backup before Jenkins master pod deletion</p>
+</td>
+</tr>
+</tbody>
+</table>
+<h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.ConfigMapRef">ConfigMapRef
+</h3>
+<p>
+(<em>Appears on:</em>
+<a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.Customization">Customization</a>)
+</p>
+<p>
+<p>ConfigMapRef is reference to Kubernetes ConfigMap.</p>
+</p>
+<table>
+<thead>
+<tr>
+<th>Field</th>
+<th>Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>
+<code>name</code></br>
+<em>
+string
+</em>
+</td>
+<td>
+</td>
+</tr>
+</tbody>
+</table>
+<h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.ConfigurationAsCode">ConfigurationAsCode
+</h3>
+<p>
+(<em>Appears on:</em>
+<a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.JenkinsSpec">JenkinsSpec</a>)
+</p>
+<p>
+<p>ConfigurationAsCode defines configuration of Jenkins customization via Configuration as Code Jenkins plugin.</p>
+</p>
+<table>
+<thead>
+<tr>
+<th>Field</th>
+<th>Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>
+<code>Customization</code></br>
+<em>
+<a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Customization">
+Customization
+</a>
+</em>
+</td>
+<td>
+<p>
+(Members of <code>Customization</code> are embedded into this type.)
+</p>
+</td>
+</tr>
+</tbody>
+</table>
+<h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Container">Container
+</h3>
+<p>
+(<em>Appears on:</em>
+<a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.JenkinsMaster">JenkinsMaster</a>)
+</p>
+<p>
+<p>Container defines Kubernetes container attributes.</p>
+</p>
+<table>
+<thead>
+<tr>
+<th>Field</th>
+<th>Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>
+<code>name</code></br>
+<em>
+string
+</em>
+</td>
+<td>
+<p>Name of the container specified as a DNS_LABEL.
+Each container in a pod must have a unique name (DNS_LABEL).</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>image</code></br>
+<em>
+string
+</em>
+</td>
+<td>
+<p>Docker image name.
+More info: <a href="https://kubernetes.io/docs/concepts/containers/images">https://kubernetes.io/docs/concepts/containers/images</a></p>
+</td>
+</tr>
+<tr>
+<td>
+<code>imagePullPolicy</code></br>
+<em>
+<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#pullpolicy-v1-core">
+Kubernetes core/v1.PullPolicy
+</a>
+</em>
+</td>
+<td>
+<p>Image pull policy.
+One of Always, Never, IfNotPresent.
+Defaults to Always.</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>resources</code></br>
+<em>
+<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#resourcerequirements-v1-core">
+Kubernetes core/v1.ResourceRequirements
+</a>
+</em>
+</td>
+<td>
+<p>Compute Resources required by this container.
+More info: <a href="https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/">https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/</a></p>
+</td>
+</tr>
+<tr>
+<td>
+<code>command</code></br>
+<em>
+[]string
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Entrypoint array. Not executed within a shell.
+The docker image’s ENTRYPOINT is used if this is not provided.
+Variable references $(VAR_NAME) are expanded using the container’s environment. If a variable
+cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax
+can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded,
+regardless of whether the variable exists or not.
+More info: <a href="https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell">https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell</a></p>
+</td>
+</tr>
+<tr>
+<td>
+<code>args</code></br>
+<em>
+[]string
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Arguments to the entrypoint.
+The docker image’s CMD is used if this is not provided.
+Variable references $(VAR_NAME) are expanded using the container’s environment. If a variable
+cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax
+can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded,
+regardless of whether the variable exists or not.
+More info: <a href="https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell">https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell</a></p>
+</td>
+</tr>
+<tr>
+<td>
+<code>workingDir</code></br>
+<em>
+string
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Container’s working directory.
+If not specified, the container runtime’s default will be used, which
+might be configured in the container image.</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>ports</code></br>
+<em>
+<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#containerport-v1-core">
+[]Kubernetes core/v1.ContainerPort
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>List of ports to expose from the container. Exposing a port here gives
+the system additional information about the network connections a
+container uses, but is primarily informational. Not specifying a port here
+DOES NOT prevent that port from being exposed. Any port which is
+listening on the default “0.0.0.0” address inside a container will be
+accessible from the network.</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>envFrom</code></br>
+<em>
+<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#envfromsource-v1-core">
+[]Kubernetes core/v1.EnvFromSource
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>List of sources to populate environment variables in the container.
+The keys defined within a source must be a C_IDENTIFIER. All invalid keys
+will be reported as an event when the container is starting. When a key exists in multiple
+sources, the value associated with the last source will take precedence.
+Values defined by an Env with a duplicate key will take precedence.</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>env</code></br>
+<em>
+<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#envvar-v1-core">
+[]Kubernetes core/v1.EnvVar
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>List of environment variables to set in the container.</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>volumeMounts</code></br>
+<em>
+<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#volumemount-v1-core">
+[]Kubernetes core/v1.VolumeMount
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Pod volumes to mount into the container’s filesystem.</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>livenessProbe</code></br>
+<em>
+<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#probe-v1-core">
+Kubernetes core/v1.Probe
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Periodic probe of container liveness.
+Container will be restarted if the probe fails.</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>readinessProbe</code></br>
+<em>
+<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#probe-v1-core">
+Kubernetes core/v1.Probe
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Periodic probe of container service readiness.
+Container will be removed from service endpoints if the probe fails.</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>lifecycle</code></br>
+<em>
+<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#lifecycle-v1-core">
+Kubernetes core/v1.Lifecycle
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Actions that the management system should take in response to container lifecycle events.</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>securityContext</code></br>
+<em>
+<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#securitycontext-v1-core">
+Kubernetes core/v1.SecurityContext
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Security options the pod should run with.
+More info: <a href="https://kubernetes.io/docs/concepts/policy/security-context/">https://kubernetes.io/docs/concepts/policy/security-context/</a>
+More info: <a href="https://kubernetes.io/docs/tasks/configure-pod-container/security-context/">https://kubernetes.io/docs/tasks/configure-pod-container/security-context/</a></p>
+</td>
+</tr>
+</tbody>
+</table>
+<h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Customization">Customization
+</h3>
+<p>
+(<em>Appears on:</em>
+<a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.ConfigurationAsCode">ConfigurationAsCode</a>,
+<a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.GroovyScripts">GroovyScripts</a>)
+</p>
+<p>
+<p>Customization defines configuration of Jenkins customization.</p>
+</p>
+<table>
+<thead>
+<tr>
+<th>Field</th>
+<th>Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>
+<code>secret</code></br>
+<em>
+<a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.SecretRef">
+SecretRef
+</a>
+</em>
+</td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<code>configurations</code></br>
+<em>
+<a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.ConfigMapRef">
+[][]github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.ConfigMapRef
+</a>
+</em>
+</td>
+<td>
+</td>
+</tr>
+</tbody>
+</table>
+<h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.GroovyScripts">GroovyScripts
+</h3>
+<p>
+(<em>Appears on:</em>
+<a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.JenkinsSpec">JenkinsSpec</a>)
+</p>
+<p>
+<p>GroovyScripts defines configuration of Jenkins customization via groovy scripts.</p>
+</p>
+<table>
+<thead>
+<tr>
+<th>Field</th>
+<th>Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>
+<code>Customization</code></br>
+<em>
+<a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Customization">
+Customization
+</a>
+</em>
+</td>
+<td>
+<p>
+(Members of <code>Customization</code> are embedded into this type.)
+</p>
+</td>
+</tr>
+</tbody>
+</table>
+<h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Handler">Handler
+</h3>
+<p>
+(<em>Appears on:</em>
+<a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.Backup">Backup</a>,
+<a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.Restore">Restore</a>)
+</p>
+<p>
+<p>Handler defines a specific action that should be taken.</p>
+</p>
+<table>
+<thead>
+<tr>
+<th>Field</th>
+<th>Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>
+<code>exec</code></br>
+<em>
+<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#execaction-v1-core">
+Kubernetes core/v1.ExecAction
+</a>
+</em>
+</td>
+<td>
+<p>Exec specifies the action to take.</p>
+</td>
+</tr>
+</tbody>
+</table>
+<h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Image">Image
+</h3>
+<p>
+(<em>Appears on:</em>
+<a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.JenkinsImageSpec">JenkinsImageSpec</a>)
+</p>
+<p>
+<p>Defines Jenkins Plugin structure</p>
+</p>
+<table>
+<thead>
+<tr>
+<th>Field</th>
+<th>Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>
+<code>name</code></br>
+<em>
+string
+</em>
+</td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<code>version</code></br>
+<em>
+string
+</em>
+</td>
+<td>
+</td>
+</tr>
+</tbody>
+</table>
+<h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.JenkinsAPISettings">JenkinsAPISettings
+</h3>
+<p>
+(<em>Appears on:</em>
+<a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.JenkinsSpec">JenkinsSpec</a>)
+</p>
+<p>
+<p>JenkinsAPISettings defines configuration used by the operator to gain admin access to the Jenkins API</p>
+</p>
+<table>
+<thead>
+<tr>
+<th>Field</th>
+<th>Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>
+<code>authorizationStrategy</code></br>
+<em>
+<a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.AuthorizationStrategy">
+AuthorizationStrategy
+</a>
+</em>
+</td>
+<td>
+</td>
+</tr>
+</tbody>
+</table>
+<h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.JenkinsCredentialType">JenkinsCredentialType
+(<code>string</code> alias)</p></h3>
+<p>
+(<em>Appears on:</em>
+<a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.SeedJob">SeedJob</a>)
+</p>
+<p>
+<p>JenkinsCredentialType defines type of Jenkins credential used to seed job mechanism.</p>
+</p>
+<h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.JenkinsImage">JenkinsImage
+</h3>
+<p>
+<p>JenkinsImage is the Schema for the jenkinsimages API</p>
+</p>
+<table>
+<thead>
+<tr>
+<th>Field</th>
+<th>Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>
+<code>metadata</code></br>
+<em>
+<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#objectmeta-v1-meta">
+Kubernetes meta/v1.ObjectMeta
+</a>
+</em>
+</td>
+<td>
+Refer to the Kubernetes API documentation for the fields of the
+<code>metadata</code> field.
+</td>
+</tr>
+<tr>
+<td>
+<code>spec</code></br>
+<em>
+<a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.JenkinsImageSpec">
+JenkinsImageSpec
+</a>
+</em>
+</td>
+<td>
+<br/>
+<br/>
+<table>
+<tr>
+<td>
+<code>image</code></br>
+<em>
+<a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Image">
+Image
+</a>
+</em>
+</td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<code>plugins</code></br>
+<em>
+<a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.JenkinsPlugin">
+[][]github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.JenkinsPlugin
+</a>
+</em>
+</td>
+<td>
+</td>
+</tr>
+</table>
+</td>
+</tr>
+<tr>
+<td>
+<code>status</code></br>
+<em>
+<a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.JenkinsImageStatus">
+JenkinsImageStatus
+</a>
+</em>
+</td>
+<td>
+</td>
+</tr>
+</tbody>
+</table>
+<h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.JenkinsImageSpec">JenkinsImageSpec
+</h3>
+<p>
+(<em>Appears on:</em>
+<a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.JenkinsImage">JenkinsImage</a>)
+</p>
+<p>
+<p>JenkinsImageSpec defines the desired state of JenkinsImage</p>
+</p>
+<table>
+<thead>
+<tr>
+<th>Field</th>
+<th>Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>
+<code>image</code></br>
+<em>
+<a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Image">
+Image
+</a>
+</em>
+</td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<code>plugins</code></br>
+<em>
+<a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.JenkinsPlugin">
+[][]github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.JenkinsPlugin
+</a>
+</em>
+</td>
+<td>
+</td>
+</tr>
+</tbody>
+</table>
+<h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.JenkinsImageStatus">JenkinsImageStatus
+</h3>
+<p>
+(<em>Appears on:</em>
+<a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.JenkinsImage">JenkinsImage</a>)
+</p>
+<p>
+<p>JenkinsImageStatus defines the observed state of JenkinsImage</p>
+</p>
+<table>
+<thead>
+<tr>
+<th>Field</th>
+<th>Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>
+<code>image</code></br>
+<em>
+string
+</em>
+</td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<code>md5sum</code></br>
+<em>
+string
+</em>
+</td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<code>installedPlugins</code></br>
+<em>
+<a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.JenkinsPlugin">
+[][]github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.JenkinsPlugin
+</a>
+</em>
+</td>
+<td>
+</td>
+</tr>
+</tbody>
+</table>
+<h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.JenkinsMaster">JenkinsMaster
+</h3>
+<p>
+(<em>Appears on:</em>
+<a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.JenkinsSpec">JenkinsSpec</a>)
+</p>
+<p>
+<p>JenkinsMaster defines the Jenkins master pod attributes and plugins,
+every single change requires a Jenkins master pod restart.</p>
+</p>
+<table>
+<thead>
+<tr>
+<th>Field</th>
+<th>Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>
+<code>annotations</code></br>
+<em>
+map[string]string
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Annotations is an unstructured key value map stored with a resource that may be
+set by external tools to store and retrieve arbitrary metadata. They are not
+queryable and should be preserved when modifying objects.
+More info: <a href="http://kubernetes.io/docs/user-guide/annotations">http://kubernetes.io/docs/user-guide/annotations</a></p>
+</td>
+</tr>
+<tr>
+<td>
+<code>masterAnnotations</code></br>
+<em>
+map[string]string
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Annotations is an unstructured key value map stored with a resource that may be
+set by external tools to store and retrieve arbitrary metadata. They are not
+queryable and should be preserved when modifying objects.
+More info: <a href="http://kubernetes.io/docs/user-guide/annotations">http://kubernetes.io/docs/user-guide/annotations</a>
+Deprecated: will be removed in the future, please use Annotations(annotations)</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>labels</code></br>
+<em>
+map[string]string
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Map of string keys and values that can be used to organize and categorize
+(scope and select) objects. May match selectors of replication controllers
+and services.
+More info: <a href="http://kubernetes.io/docs/user-guide/labels">http://kubernetes.io/docs/user-guide/labels</a></p>
+</td>
+</tr>
+<tr>
+<td>
+<code>nodeSelector</code></br>
+<em>
+map[string]string
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>NodeSelector is a selector which must be true for the pod to fit on a node.
+Selector which must match a node’s labels for the pod to be scheduled on that node.
+More info: <a href="https://kubernetes.io/docs/concepts/configuration/assign-pod-node/">https://kubernetes.io/docs/concepts/configuration/assign-pod-node/</a></p>
+</td>
+</tr>
+<tr>
+<td>
+<code>securityContext</code></br>
+<em>
+<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#podsecuritycontext-v1-core">
+Kubernetes core/v1.PodSecurityContext
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>SecurityContext that applies to all the containers of the Jenkins
+Master. As per kubernetes specification, it can be overridden
+for each container individually.
+Defaults to:
+runAsUser: 1000
+fsGroup: 1000</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>containers</code></br>
+<em>
+<a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Container">
+[][]github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Container
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>List of containers belonging to the pod.
+Containers cannot currently be added or removed.
+There must be at least one container in a Pod.
+Defaults to:
+- image: jenkins/jenkins:lts
+imagePullPolicy: Always
+livenessProbe:
+failureThreshold: 12
+httpGet:
+path: /login
+port: http
+scheme: HTTP
+initialDelaySeconds: 80
+periodSeconds: 10
+successThreshold: 1
+timeoutSeconds: 5
+name: jenkins-master
+readinessProbe:
+failureThreshold: 3
+httpGet:
+path: /login
+port: http
+scheme: HTTP
+initialDelaySeconds: 30
+periodSeconds: 10
+successThreshold: 1
+timeoutSeconds: 1
+resources:
+limits:
+cpu: 1500m
+memory: 3Gi
+requests:
+cpu: “1”
+memory: 600Mi</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>imagePullSecrets</code></br>
+<em>
+<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#localobjectreference-v1-core">
+[]Kubernetes core/v1.LocalObjectReference
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec.
+If specified, these secrets will be passed to individual puller implementations for them to use. For example,
+in the case of docker, only DockerConfig type secrets are honored.
+More info: <a href="https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod">https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod</a></p>
+</td>
+</tr>
+<tr>
+<td>
+<code>volumes</code></br>
+<em>
+<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#volume-v1-core">
+[]Kubernetes core/v1.Volume
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>List of volumes that can be mounted by containers belonging to the pod.
+More info: <a href="https://kubernetes.io/docs/concepts/storage/volumes">https://kubernetes.io/docs/concepts/storage/volumes</a></p>
+</td>
+</tr>
+<tr>
+<td>
+<code>tolerations</code></br>
+<em>
+<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#toleration-v1-core">
+[]Kubernetes core/v1.Toleration
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>If specified, the pod’s tolerations.</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>basePlugins</code></br>
+<em>
+<a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Plugin">
+[][]github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Plugin
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>BasePlugins contains plugins required by operator
+Defaults to :
+- name: kubernetes
+version: “1.28.6”
+- name: workflow-job
+version: “2.40”
+- name: workflow-aggregator
+version: “2.6”
+- name: git
+version: “4.5.0”
+- name: job-dsl
+version: “1.77”
+- name: configuration-as-code
+version: “1.46”
+- name: kubernetes-credentials-provider
+version: “0.15”</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>plugins</code></br>
+<em>
+<a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Plugin">
+[][]github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Plugin
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Plugins contains plugins required by user</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>disableCSRFProtection</code></br>
+<em>
+bool
+</em>
+</td>
+<td>
+<p>DisableCSRFProtection allows you to toggle CSRF Protection on Jenkins</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>priorityClassName</code></br>
+<em>
+string
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>PriorityClassName for Jenkins master pod</p>
+</td>
+</tr>
+</tbody>
+</table>
+<h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.JenkinsPlugin">JenkinsPlugin
+</h3>
+<p>
+(<em>Appears on:</em>
+<a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.JenkinsImageSpec">JenkinsImageSpec</a>,
+<a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.JenkinsImageStatus">JenkinsImageStatus</a>)
+</p>
+<p>
+<p>Defines Jenkins Plugin structure</p>
+</p>
+<table>
+<thead>
+<tr>
+<th>Field</th>
+<th>Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>
+<code>name</code></br>
+<em>
+string
+</em>
+</td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<code>version</code></br>
+<em>
+string
+</em>
+</td>
+<td>
+</td>
+</tr>
+</tbody>
+</table>
+<h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.JenkinsSpec">JenkinsSpec
+</h3>
+<p>
+(<em>Appears on:</em>
+<a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.Jenkins">Jenkins</a>)
+</p>
+<p>
+<p>JenkinsSpec defines the desired state of the Jenkins.</p>
+</p>
+<table>
+<thead>
+<tr>
+<th>Field</th>
+<th>Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>
+<code>master</code></br>
+<em>
+<a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.JenkinsMaster">
+JenkinsMaster
+</a>
+</em>
+</td>
+<td>
+<p>Master represents Jenkins master pod properties and Jenkins plugins.
+Every single change here requires a pod restart.</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>seedJobs</code></br>
+<em>
+<a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.SeedJob">
+[][]github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.SeedJob
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>SeedJobs defines list of Jenkins Seed Job configurations
+More info: <a href="https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/configuration#configure-seed-jobs-and-pipelines">https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/configuration#configure-seed-jobs-and-pipelines</a></p>
+</td>
+</tr>
+<tr>
+<td>
+<code>notifications</code></br>
+<em>
+<a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Notification">
+[][]github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Notification
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Notifications defines list of a services which are used to inform about Jenkins status
+Can be used to integrate chat services like Slack, Microsoft Teams or Mailgun</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>service</code></br>
+<em>
+<a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Service">
+Service
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Service is Kubernetes service of Jenkins master HTTP pod
+Defaults to :
+port: 8080
+type: ClusterIP</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>slaveService</code></br>
+<em>
+<a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Service">
+Service
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Service is Kubernetes service of Jenkins slave pods
+Defaults to :
+port: 50000
+type: ClusterIP</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>backup</code></br>
+<em>
+<a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Backup">
+Backup
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Backup defines configuration of Jenkins backup
+More info: <a href="https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/configure-backup-and-restore/">https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/configure-backup-and-restore/</a></p>
+</td>
+</tr>
+<tr>
+<td>
+<code>restore</code></br>
+<em>
+<a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Restore">
+Restore
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Backup defines configuration of Jenkins backup restore
+More info: <a href="https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/configure-backup-and-restore/">https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/configure-backup-and-restore/</a></p>
+</td>
+</tr>
+<tr>
+<td>
+<code>groovyScripts</code></br>
+<em>
+<a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.GroovyScripts">
+GroovyScripts
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>GroovyScripts defines configuration of Jenkins customization via groovy scripts</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>configurationAsCode</code></br>
+<em>
+<a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.ConfigurationAsCode">
+ConfigurationAsCode
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>ConfigurationAsCode defines configuration of Jenkins customization via Configuration as Code Jenkins plugin</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>roles</code></br>
+<em>
+<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#roleref-v1-rbac">
+[]Kubernetes rbac/v1.RoleRef
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Roles defines list of extra RBAC roles for the Jenkins Master pod service account</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>serviceAccount</code></br>
+<em>
+<a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.ServiceAccount">
+ServiceAccount
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>ServiceAccount defines Jenkins master service account attributes</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>jenkinsAPISettings</code></br>
+<em>
+<a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.JenkinsAPISettings">
+JenkinsAPISettings
+</a>
+</em>
+</td>
+<td>
+<p>JenkinsAPISettings defines configuration used by the operator to gain admin access to the Jenkins API</p>
+</td>
+</tr>
+</tbody>
+</table>
+<h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.JenkinsStatus">JenkinsStatus
+</h3>
+<p>
+(<em>Appears on:</em>
+<a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.Jenkins">Jenkins</a>)
+</p>
+<p>
+<p>JenkinsStatus defines the observed state of Jenkins</p>
+</p>
+<table>
+<thead>
+<tr>
+<th>Field</th>
+<th>Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>
+<code>operatorVersion</code></br>
+<em>
+string
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>OperatorVersion is the operator version which manages this CR</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>provisionStartTime</code></br>
+<em>
+<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#time-v1-meta">
+Kubernetes meta/v1.Time
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>ProvisionStartTime is a time when Jenkins master pod has been created</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>baseConfigurationCompletedTime</code></br>
+<em>
+<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#time-v1-meta">
+Kubernetes meta/v1.Time
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>BaseConfigurationCompletedTime is a time when Jenkins base configuration phase has been completed</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>userConfigurationCompletedTime</code></br>
+<em>
+<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#time-v1-meta">
+Kubernetes meta/v1.Time
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>UserConfigurationCompletedTime is a time when Jenkins user configuration phase has been completed</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>restoredBackup</code></br>
+<em>
+uint64
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>RestoredBackup is the restored backup number after Jenkins master pod restart</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>lastBackup</code></br>
+<em>
+uint64
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>LastBackup is the latest backup number</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>pendingBackup</code></br>
+<em>
+uint64
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>PendingBackup is the pending backup number</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>backupDoneBeforePodDeletion</code></br>
+<em>
+bool
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>BackupDoneBeforePodDeletion tells if backup before pod deletion has been made</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>userAndPasswordHash</code></br>
+<em>
+string
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>UserAndPasswordHash is a SHA256 hash made from user and password</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>createdSeedJobs</code></br>
+<em>
+[]string
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>CreatedSeedJobs contains list of seed job id already created in Jenkins</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>appliedGroovyScripts</code></br>
+<em>
+<a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.AppliedGroovyScript">
+[][]github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.AppliedGroovyScript
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>AppliedGroovyScripts is a list with all applied groovy scripts in Jenkins by the operator</p>
+</td>
+</tr>
+</tbody>
+</table>
+<h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Mailgun">Mailgun
+</h3>
+<p>
+(<em>Appears on:</em>
+<a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.Notification">Notification</a>)
+</p>
+<p>
+<p>Mailgun is handler for Mailgun email service notification channel.</p>
+</p>
+<table>
+<thead>
+<tr>
+<th>Field</th>
+<th>Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>
+<code>domain</code></br>
+<em>
+string
+</em>
+</td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<code>apiKeySecretKeySelector</code></br>
+<em>
+<a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.SecretKeySelector">
+SecretKeySelector
+</a>
+</em>
+</td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<code>recipient</code></br>
+<em>
+string
+</em>
+</td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<code>from</code></br>
+<em>
+string
+</em>
+</td>
+<td>
+</td>
+</tr>
+</tbody>
+</table>
+<h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.MicrosoftTeams">MicrosoftTeams
+</h3>
+<p>
+(<em>Appears on:</em>
+<a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.Notification">Notification</a>)
+</p>
+<p>
+<p>MicrosoftTeams is handler for Microsoft MicrosoftTeams notification channel.</p>
+</p>
+<table>
+<thead>
+<tr>
+<th>Field</th>
+<th>Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>
+<code>webHookURLSecretKeySelector</code></br>
+<em>
+<a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.SecretKeySelector">
+SecretKeySelector
+</a>
+</em>
+</td>
+<td>
+<p>The web hook URL to MicrosoftTeams App</p>
+</td>
+</tr>
+</tbody>
+</table>
+<h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Notification">Notification
+</h3>
+<p>
+(<em>Appears on:</em>
+<a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.JenkinsSpec">JenkinsSpec</a>)
+</p>
+<p>
+<p>Notification is a service configuration used to send notifications about Jenkins status.</p>
+</p>
+<table>
+<thead>
+<tr>
+<th>Field</th>
+<th>Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>
+<code>level</code></br>
+<em>
+<a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.NotificationLevel">
+NotificationLevel
+</a>
+</em>
+</td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<code>verbose</code></br>
+<em>
+bool
+</em>
+</td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<code>name</code></br>
+<em>
+string
+</em>
+</td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<code>slack</code></br>
+<em>
+<a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Slack">
+github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Slack
+</a>
+</em>
+</td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<code>teams</code></br>
+<em>
+<a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.MicrosoftTeams">
+github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.MicrosoftTeams
+</a>
+</em>
+</td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<code>mailgun</code></br>
+<em>
+<a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Mailgun">
+github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Mailgun
+</a>
+</em>
+</td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<code>smtp</code></br>
+<em>
+<a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.SMTP">
+github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.SMTP
+</a>
+</em>
+</td>
+<td>
+</td>
+</tr>
+</tbody>
+</table>
+<h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.NotificationLevel">NotificationLevel
+(<code>string</code> alias)</p></h3>
+<p>
+(<em>Appears on:</em>
+<a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.Notification">Notification</a>)
+</p>
+<p>
+<p>NotificationLevel defines the level of a Notification.</p>
+</p>
+<h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Plugin">Plugin
+</h3>
+<p>
+(<em>Appears on:</em>
+<a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.JenkinsMaster">JenkinsMaster</a>)
+</p>
+<p>
+<p>Plugin defines Jenkins plugin.</p>
+</p>
+<table>
+<thead>
+<tr>
+<th>Field</th>
+<th>Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>
+<code>name</code></br>
+<em>
+string
+</em>
+</td>
+<td>
+<p>Name is the name of Jenkins plugin</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>version</code></br>
+<em>
+string
+</em>
+</td>
+<td>
+<p>Version is the version of Jenkins plugin</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>downloadURL</code></br>
+<em>
+string
+</em>
+</td>
+<td>
+<p>DownloadURL is the custom url from where plugin has to be downloaded.</p>
+</td>
+</tr>
+</tbody>
+</table>
+<h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Restore">Restore
+</h3>
+<p>
+(<em>Appears on:</em>
+<a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.JenkinsSpec">JenkinsSpec</a>)
+</p>
+<p>
+<p>Restore defines configuration of Jenkins backup restore operation.</p>
+</p>
+<table>
+<thead>
+<tr>
+<th>Field</th>
+<th>Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>
+<code>containerName</code></br>
+<em>
+string
+</em>
+</td>
+<td>
+<p>ContainerName is the container name responsible for restore backup operation</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>action</code></br>
+<em>
+<a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Handler">
+Handler
+</a>
+</em>
+</td>
+<td>
+<p>Action defines action which performs restore backup in restore container sidecar</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>getLatestAction</code></br>
+<em>
+<a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Handler">
+Handler
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>GetLatestAction defines action which returns the latest backup number. If there is no backup “-1” should be
+returned.</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>recoveryOnce</code></br>
+<em>
+uint64
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>RecoveryOnce if want to restore specific backup set this field and then Jenkins will be restarted and desired backup will be restored</p>
+</td>
+</tr>
+</tbody>
+</table>
+<h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.SMTP">SMTP
+</h3>
+<p>
+(<em>Appears on:</em>
+<a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.Notification">Notification</a>)
+</p>
+<p>
+<p>SMTP is handler for sending emails via this protocol.</p>
+</p>
+<table>
+<thead>
+<tr>
+<th>Field</th>
+<th>Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>
+<code>usernameSecretKeySelector</code></br>
+<em>
+<a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.SecretKeySelector">
+SecretKeySelector
+</a>
+</em>
+</td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<code>passwordSecretKeySelector</code></br>
+<em>
+<a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.SecretKeySelector">
+SecretKeySelector
+</a>
+</em>
+</td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<code>port</code></br>
+<em>
+int
+</em>
+</td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<code>server</code></br>
+<em>
+string
+</em>
+</td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<code>tlsInsecureSkipVerify</code></br>
+<em>
+bool
+</em>
+</td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<code>from</code></br>
+<em>
+string
+</em>
+</td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<code>to</code></br>
+<em>
+string
+</em>
+</td>
+<td>
+</td>
+</tr>
+</tbody>
+</table>
+<h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.SecretKeySelector">SecretKeySelector
+</h3>
+<p>
+(<em>Appears on:</em>
+<a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.Mailgun">Mailgun</a>,
+<a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.MicrosoftTeams">MicrosoftTeams</a>,
+<a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.SMTP">SMTP</a>,
+<a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.Slack">Slack</a>)
+</p>
+<p>
+<p>SecretKeySelector selects a key of a Secret.</p>
+</p>
+<table>
+<thead>
+<tr>
+<th>Field</th>
+<th>Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>
+<code>secret</code></br>
+<em>
+<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#localobjectreference-v1-core">
+Kubernetes core/v1.LocalObjectReference
+</a>
+</em>
+</td>
+<td>
+<p>The name of the secret in the pod’s namespace to select from.</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>key</code></br>
+<em>
+string
+</em>
+</td>
+<td>
+<p>The key of the secret to select from. Must be a valid secret key.</p>
+</td>
+</tr>
+</tbody>
+</table>
+<h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.SecretRef">SecretRef
+</h3>
+<p>
+(<em>Appears on:</em>
+<a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.Customization">Customization</a>)
+</p>
+<p>
+<p>SecretRef is reference to Kubernetes secret.</p>
+</p>
+<table>
+<thead>
+<tr>
+<th>Field</th>
+<th>Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>
+<code>name</code></br>
+<em>
+string
+</em>
+</td>
+<td>
+</td>
+</tr>
+</tbody>
+</table>
+<h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.SeedJob">SeedJob
+</h3>
+<p>
+(<em>Appears on:</em>
+<a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.JenkinsSpec">JenkinsSpec</a>)
+</p>
+<p>
+<p>SeedJob defines configuration for seed job
+More info: <a href="https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/configuration/#configure-seed-jobs-and-pipelines">https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/configuration/#configure-seed-jobs-and-pipelines</a>.</p>
+</p>
+<table>
+<thead>
+<tr>
+<th>Field</th>
+<th>Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>
+<code>id</code></br>
+<em>
+string
+</em>
+</td>
+<td>
+<p>ID is the unique seed job name</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>credentialID</code></br>
+<em>
+string
+</em>
+</td>
+<td>
+<p>CredentialID is the Kubernetes secret name which stores repository access credentials</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>description</code></br>
+<em>
+string
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Description is the description of the seed job</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>targets</code></br>
+<em>
+string
+</em>
+</td>
+<td>
+<p>Targets is the repository path where are seed job definitions</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>repositoryBranch</code></br>
+<em>
+string
+</em>
+</td>
+<td>
+<p>RepositoryBranch is the repository branch where are seed job definitions</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>repositoryUrl</code></br>
+<em>
+string
+</em>
+</td>
+<td>
+<p>RepositoryURL is the repository access URL. Can be SSH or HTTPS.</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>credentialType</code></br>
+<em>
+<a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.JenkinsCredentialType">
+JenkinsCredentialType
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>JenkinsCredentialType is the <a href="https://jenkinsci.github.io/kubernetes-credentials-provider-plugin/">https://jenkinsci.github.io/kubernetes-credentials-provider-plugin/</a> credential type</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>bitbucketPushTrigger</code></br>
+<em>
+bool
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>BitbucketPushTrigger is used for Bitbucket web hooks</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>githubPushTrigger</code></br>
+<em>
+bool
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>GitHubPushTrigger is used for GitHub web hooks</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>buildPeriodically</code></br>
+<em>
+string
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>BuildPeriodically is setting for scheduled trigger</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>pollSCM</code></br>
+<em>
+string
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>PollSCM is setting for polling changes in SCM</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>ignoreMissingFiles</code></br>
+<em>
+bool
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>IgnoreMissingFiles is setting for Job DSL API plugin to ignore files that miss</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>additionalClasspath</code></br>
+<em>
+string
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>AdditionalClasspath is setting for Job DSL API plugin to set Additional Classpath</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>failOnMissingPlugin</code></br>
+<em>
+bool
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>FailOnMissingPlugin is setting for Job DSL API plugin that fails job if required plugin is missing</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>unstableOnDeprecation</code></br>
+<em>
+bool
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>UnstableOnDeprecation is setting for Job DSL API plugin that sets build status as unstable if build using deprecated features</p>
+</td>
+</tr>
+</tbody>
+</table>
+<h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Service">Service
+</h3>
+<p>
+(<em>Appears on:</em>
+<a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.JenkinsSpec">JenkinsSpec</a>)
+</p>
+<p>
+<p>Service defines Kubernetes service attributes</p>
+</p>
+<table>
+<thead>
+<tr>
+<th>Field</th>
+<th>Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>
+<code>annotations</code></br>
+<em>
+map[string]string
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Annotations is an unstructured key value map stored with a resource that may be
+set by external tools to store and retrieve arbitrary metadata. They are not
+queryable and should be preserved when modifying objects.
+More info: <a href="http://kubernetes.io/docs/user-guide/annotations">http://kubernetes.io/docs/user-guide/annotations</a></p>
+</td>
+</tr>
+<tr>
+<td>
+<code>labels</code></br>
+<em>
+map[string]string
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Route service traffic to pods with label keys and values matching this
+selector. If empty or not present, the service is assumed to have an
+external process managing its endpoints, which Kubernetes will not
+modify. Only applies to types ClusterIP, NodePort, and LoadBalancer.
+Ignored if type is ExternalName.
+More info: <a href="https://kubernetes.io/docs/concepts/services-networking/service/">https://kubernetes.io/docs/concepts/services-networking/service/</a></p>
+</td>
+</tr>
+<tr>
+<td>
+<code>type</code></br>
+<em>
+<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#servicetype-v1-core">
+Kubernetes core/v1.ServiceType
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Type determines how the Service is exposed. Defaults to ClusterIP. Valid
+options are ExternalName, ClusterIP, NodePort, and LoadBalancer.
+“ExternalName” maps to the specified externalName.
+“ClusterIP” allocates a cluster-internal IP address for load-balancing to
+endpoints. Endpoints are determined by the selector or if that is not
+specified, by manual construction of an Endpoints object. If clusterIP is
+“None”, no virtual IP is allocated and the endpoints are published as a
+set of endpoints rather than a stable IP.
+“NodePort” builds on ClusterIP and allocates a port on every node which
+routes to the clusterIP.
+“LoadBalancer” builds on NodePort and creates an
+external load-balancer (if supported in the current cloud) which routes
+to the clusterIP.
+More info: <a href="https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services---service-types">https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services—service-types</a></p>
+</td>
+</tr>
+<tr>
+<td>
+<code>port</code></br>
+<em>
+int32
+</em>
+</td>
+<td>
+<p>The port that are exposed by this service.
+More info: <a href="https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies">https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies</a></p>
+</td>
+</tr>
+<tr>
+<td>
+<code>nodePort</code></br>
+<em>
+int32
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>The port on each node on which this service is exposed when type=NodePort or LoadBalancer.
+Usually assigned by the system. If specified, it will be allocated to the service
+if unused or else creation of the service will fail.
+Default is to auto-allocate a port if the ServiceType of this Service requires one.
+More info: <a href="https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport">https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport</a></p>
+</td>
+</tr>
+<tr>
+<td>
+<code>loadBalancerSourceRanges</code></br>
+<em>
+[]string
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>If specified and supported by the platform, this will restrict traffic through the cloud-provider
+load-balancer will be restricted to the specified client IPs. This field will be ignored if the
+cloud-provider does not support the feature.”
+More info: <a href="https://kubernetes.io/docs/tasks/administer-cluster/securing-a-cluster/#restricting-cloud-metadata-api-access">https://kubernetes.io/docs/tasks/administer-cluster/securing-a-cluster/#restricting-cloud-metadata-api-access</a></p>
+</td>
+</tr>
+<tr>
+<td>
+<code>loadBalancerIP</code></br>
+<em>
+string
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Only applies to Service Type: LoadBalancer
+LoadBalancer will get created with the IP specified in this field.
+This feature depends on whether the underlying cloud-provider supports specifying
+the loadBalancerIP when a load balancer is created.
+This field will be ignored if the cloud-provider does not support the feature.</p>
+</td>
+</tr>
+</tbody>
+</table>
+<h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.ServiceAccount">ServiceAccount
+</h3>
+<p>
+(<em>Appears on:</em>
+<a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.JenkinsSpec">JenkinsSpec</a>)
+</p>
+<p>
+<p>ServiceAccount defines Kubernetes service account attributes</p>
+</p>
+<table>
+<thead>
+<tr>
+<th>Field</th>
+<th>Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>
+<code>annotations</code></br>
+<em>
+map[string]string
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Annotations is an unstructured key value map stored with a resource that may be
+set by external tools to store and retrieve arbitrary metadata. They are not
+queryable and should be preserved when modifying objects.
+More info: <a href="http://kubernetes.io/docs/user-guide/annotations">http://kubernetes.io/docs/user-guide/annotations</a></p>
+</td>
+</tr>
+</tbody>
+</table>
+<h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Slack">Slack
+</h3>
+<p>
+(<em>Appears on:</em>
+<a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.Notification">Notification</a>)
+</p>
+<p>
+<p>Slack is handler for Slack notification channel.</p>
+</p>
+<table>
+<thead>
+<tr>
+<th>Field</th>
+<th>Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>
+<code>webHookURLSecretKeySelector</code></br>
+<em>
+<a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.SecretKeySelector">
+SecretKeySelector
+</a>
+</em>
+</td>
+<td>
+<p>The web hook URL to Slack App</p>
+</td>
+</tr>
+</tbody>
+</table>
+<hr/>
+<p><em>
+Generated with <code>gen-crd-api-reference-docs</code>
+on git commit <code>fe81e5a</code>.
+</em></p>
+
diff --git a/docs/docs/developer-guide/tools/index.html b/docs/docs/security/index.html
similarity index 76%
rename from docs/docs/developer-guide/tools/index.html
rename to docs/docs/security/index.html
index ddcd4c68..d178f9ba 100644
--- a/docs/docs/developer-guide/tools/index.html
+++ b/docs/docs/security/index.html
@@ -7,6 +7,7 @@
+
@@ -20,25 +21,17 @@
-Tools | Jenkins Operator
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
@@ -54,9 +47,9 @@
crossorigin="anonymous">
- Tools | Jenkins Operator
+ Security | Jenkins Operator
-
+
@@ -796,9 +800,6 @@
-
-
-
Documentation
@@ -806,15 +807,8 @@
-
- Developer Guide
-
-
-
-
-
- Tools
+ Security
@@ -822,51 +816,230 @@
-
Tools
-
Required tools for building and running Jenkins Operator
+
Security
+
Jenkins security and hardening out of the box
+
By default Jenkins Operator performs an initial security hardening of Jenkins instance
+via groovy scripts to prevent any security gaps.
+
Jenkins Access Control
-
-
This document explains how to install the Go tools used by the development process.
+
Currently Jenkins Operator generates a username and random password and stores them in a Kubernetes Secret.
+However any other authorization mechanisms are possible and can be done via groovy scripts or configuration as code plugin.
+For more information take a look at the section on customizing Jenkins.
+
Any change to Security Realm or Authorization requires that user called jenkins-operator must have admin rights
+because Jenkins Operator calls Jenkins API.
+
+
Jenkins Hardening
+
+
The list below describes all the default security setting configured by the Jenkins Operator:
+
+
+- basic settings - use
Mode.EXCLUSIVE - Jobs must specify that they want to run on master node
+- enable CSRF - Cross Site Request Forgery Protection is enabled
+- disable usage stats - Jenkins usage stats submitting is disabled
+- enable master access control - Slave to Master Access Control is enabled
+- disable old JNLP protocols -
JNLP3-connect, JNLP2-connect and JNLP-connect are disabled
+- disable CLI - CLI access of
/cli URL is disabled
+- configure kubernetes-plugin - secure configuration for Kubernetes plugin
+
+
+
If you would like to dig a little bit into the code, take a look here.
+
+
Jenkins API
+
+
The Jenkins Operator generates and configures Basic Authentication token for Jenkins Go client
+and stores it in a Kubernetes Secret.
+
+
Kubernetes
+
+
Kubernetes API permissions are limited by the following roles:
+
+
+
+
Since Jenkins Operator must be able to grant permission for its deployed Jenkins masters
+to spawn pods (the Jenkins Master role above),
+the operator itself requires permission to create RBAC resources (the jenkins-operator role above).
+
+
Deployed this way, any subject which may create a Pod (including a Jenkins job) may
+assume the jenkins-operator role by using its’ ServiceAccount, create RBAC rules, and thus escape its granted permissions.
+Any namespace to which the jenkins-operator is deployed must be considered to implicitly grant all
+possible permissions to any subject which can create a Pod in that namespace.
+
+
To mitigate this issue, Jenkins Operator should be deployed in one namespace, and the Jenkins CR should be created in
+a separate namespace. For instructions on how to deploy Jenkins Operator and Jenkins in separate namespaces, head over
+to the Separate namespaces section of Getting Started
+guide.
+
+
Report a Security Vulnerability
+
+
If you find a vulnerability or any misconfiguration in Jenkins, please report it in the issues.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
export GOPATH=/home/go # example value
-export GOROOT=/usr/lib/go-1.12 # example value
-export PATH=$GOPATH/bin:$PATH
-
goimports
-
go get golang.org/x/tools/cmd/goimports
-cd $GOPATH/src/golang.org/x/tools/cmd/goimports
-go build
-go install
-
golint
-
go get -u golang.org/x/lint/golint
-cd $GOPATH/src/golang.org/x/lint/golint
-go build
-go install
-
checkmake
-
go get github.com/mrtazz/checkmake
-cd $GOPATH/src/github.com/mrtazz/checkmake
-go build
-go install
-
staticcheck
-
mkdir -p $GOPATH/src/github.com/dominikh/
-cd $GOPATH/src/github.com/dominikh/
-git clone https://github.com/dominikh/go-tools.git
-cd $GOPATH/src/github.com/dominikh/go-tools/staticcheck
-go build
-go install
-
Last modified August 5, 2019
+
Last modified October 6, 2021
-
diff --git a/docs/docs/security/index.xml b/docs/docs/security/index.xml
new file mode 100644
index 00000000..10fcf5b5
--- /dev/null
+++ b/docs/docs/security/index.xml
@@ -0,0 +1,23 @@
+
+
+ Jenkins Operator – Security
+ https://jenkinsci.github.io/kubernetes-operator/docs/security/
+ Recent Hugo news from gohugo.io
+ Hugo -- gohugo.io
+ Wed, 06 Oct 2021 00:00:00 +0000
+
+ https://jenkinsci.github.io/kubernetes-operator/img/hugo.png
+ GoHugo.io
+ https://jenkinsci.github.io/kubernetes-operator/docs/security/
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/docs/troubleshooting/index.html b/docs/docs/troubleshooting/index.html
index 3ced57bd..339c2d06 100644
--- a/docs/docs/troubleshooting/index.html
+++ b/docs/docs/troubleshooting/index.html
@@ -22,16 +22,16 @@
Troubleshooting | Jenkins Operator
-
-
+
-
-
@@ -212,24 +212,18 @@
+
+
+
+
+
+
Custom backup and restore providers
-
-
-
-
-
-
-
-
-
-
-
-
@@ -662,6 +656,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
@@ -806,7 +817,7 @@
Troubleshooting
-
Jenkins security and hardening out of the box
+
Troubleshooting Jenkins Operator
This document helps you to state the reason for an error in the Jenkins Operator, which is the first step in solving it.
@@ -815,7 +826,7 @@
Jenkins Operator can provide some useful logs. To get them, run:
$ kubectl logs <controller-manager-pod-name> -f
-
In the logs look for WARNING, ERROR and SEVERE keywords.
+
In the logs look for WARNING, ERROR and SEVERE keywords.
Jenkins logs
@@ -840,7 +851,7 @@ and the rest will be discarded. Chances are the buggy part will be gone.
$ kubectl delete pod <jenkins-pod>
Operator debug mode
-
If you need to access additional logs from the Operator, you can run it in debug mode. To do that, add "--debug""
+
If you need to access additional logs from the Operator, you can run it in debug mode. To do that, add "--debug"
argument to jenkins-operator container args in your Operator deployment.
@@ -991,8 +1002,6 @@ argument to jenkins-operator container args in your Operator deployment.
-
-
@@ -1001,7 +1010,7 @@ argument to jenkins-operator container args in your Operator deployment.
-
Last modified August 19, 2021
+
Last modified October 6, 2021
diff --git a/docs/docs/troubleshooting/index.xml b/docs/docs/troubleshooting/index.xml
index 1c47c314..50c731d3 100644
--- a/docs/docs/troubleshooting/index.xml
+++ b/docs/docs/troubleshooting/index.xml
@@ -4,7 +4,7 @@
https://jenkinsci.github.io/kubernetes-operator/docs/troubleshooting/
Recent Hugo news from gohugo.io
Hugo -- gohugo.io
-
Thu, 19 Aug 2021 00:00:00 +0000
+
Wed, 06 Oct 2021 00:00:00 +0000
https://jenkinsci.github.io/kubernetes-operator/img/hugo.png
GoHugo.io
diff --git a/docs/index.html b/docs/index.html
index b3e52d78..d9cd9ff7 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -25,7 +25,7 @@
-
+
diff --git a/docs/index.xml b/docs/index.xml
index e8ec76e6..2f2c250d 100644
--- a/docs/index.xml
+++ b/docs/index.xml
@@ -4,7 +4,7 @@
https://jenkinsci.github.io/kubernetes-operator/
Recent Hugo news from gohugo.io
Hugo -- gohugo.io
- Fri, 01 Oct 2021 00:00:00 +0000
+ Wed, 06 Oct 2021 00:00:00 +0000
https://jenkinsci.github.io/kubernetes-operator/img/hugo.png
GoHugo.io
diff --git a/docs/sitemap.xml b/docs/sitemap.xml
index 2c1c1499..d659728c 100644
--- a/docs/sitemap.xml
+++ b/docs/sitemap.xml
@@ -48,13 +48,13 @@
- https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.5.x/configuration/
- 2021-10-01T00:00:00+00:00
+ https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/deploying-jenkins/
+ 2021-10-06T00:00:00+00:00
- https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/deploying-jenkins/
- 2021-08-19T00:00:00+00:00
+ https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.5.x/configuration/
+ 2021-10-01T00:00:00+00:00
@@ -87,6 +87,11 @@
2019-08-05T00:00:00+00:00
+
+ https://jenkinsci.github.io/kubernetes-operator/docs/security/
+ 2021-10-06T00:00:00+00:00
+
+
https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.5.x/customization/
2021-10-01T00:00:00+00:00
@@ -97,11 +102,6 @@
2021-08-20T00:00:00+00:00
-
- https://jenkinsci.github.io/kubernetes-operator/docs/troubleshooting/
- 2021-08-19T00:00:00+00:00
-
-
https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.4.x/
2021-08-19T00:00:00+00:00
@@ -128,8 +128,8 @@
- https://jenkinsci.github.io/kubernetes-operator/docs/developer-guide/
- 2021-10-01T00:00:00+00:00
+ https://jenkinsci.github.io/kubernetes-operator/docs/troubleshooting/
+ 2021-10-06T00:00:00+00:00
@@ -142,6 +142,11 @@
2021-08-19T00:00:00+00:00
+
+ https://jenkinsci.github.io/kubernetes-operator/docs/developer-guide/
+ 2021-10-06T00:00:00+00:00
+
+
https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/configuring-backup-and-restore/
2021-08-19T00:00:00+00:00
@@ -153,8 +158,8 @@
- https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/custom-backup-and-restore/
- 2021-08-19T00:00:00+00:00
+ https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/separate-namespaces/
+ 2021-10-06T00:00:00+00:00
@@ -168,18 +173,13 @@
- https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/notifications/
- 2021-08-19T00:00:00+00:00
-
-
-
- https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/security/
- 2021-08-20T00:00:00+00:00
+ https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/custom-backup-and-restore/
+ 2021-10-06T00:00:00+00:00
https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/aks/
- 2021-08-19T00:00:00+00:00
+ 2021-10-06T00:00:00+00:00
@@ -317,11 +317,6 @@
2018-01-04T00:00:00+00:00
-
- https://jenkinsci.github.io/kubernetes-operator/docs/developer-guide/tools/
- 2019-08-05T00:00:00+00:00
-
-
https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.5.x/diagnostics/
2021-01-18T00:00:00+00:00
@@ -379,7 +374,7 @@
https://jenkinsci.github.io/kubernetes-operator/
- 2021-10-01T00:00:00+00:00
+ 2021-10-06T00:00:00+00:00
diff --git a/website/content/en/docs/Developer Guide/_index.md b/website/content/en/docs/Developer Guide/_index.md
index 4157a8c8..57801ec5 100644
--- a/website/content/en/docs/Developer Guide/_index.md
+++ b/website/content/en/docs/Developer Guide/_index.md
@@ -2,7 +2,7 @@
title: "Developer Guide"
linkTitle: "Developer Guide"
weight: 5
-date: 2021-10-01
+date: 2021-10-06
description: >
Jenkins Operator for developers
---
diff --git a/website/content/en/docs/Getting Started/latest/aks.md b/website/content/en/docs/Getting Started/latest/aks.md
index 8c190b9d..9ea287bc 100644
--- a/website/content/en/docs/Getting Started/latest/aks.md
+++ b/website/content/en/docs/Getting Started/latest/aks.md
@@ -2,7 +2,7 @@
title: "AKS"
linkTitle: "AKS"
weight: 8
-date: 2021-08-19
+date: 2021-10-06
description: >
Additional configuration for Azure Kubernetes Service
---
diff --git a/website/content/en/docs/Getting Started/latest/custom-backup-and-restore.md b/website/content/en/docs/Getting Started/latest/custom-backup-and-restore.md
index da4258d3..c1cc883c 100644
--- a/website/content/en/docs/Getting Started/latest/custom-backup-and-restore.md
+++ b/website/content/en/docs/Getting Started/latest/custom-backup-and-restore.md
@@ -2,7 +2,7 @@
title: "Custom backup and restore providers"
linkTitle: "Custom backup and restore providers"
weight: 7
-date: 2021-08-19
+date: 2021-10-06
description: >
Custom backup and restore provider
---
diff --git a/website/content/en/docs/Getting Started/latest/deploying-jenkins.md b/website/content/en/docs/Getting Started/latest/deploying-jenkins.md
index a178012c..fc51ff39 100644
--- a/website/content/en/docs/Getting Started/latest/deploying-jenkins.md
+++ b/website/content/en/docs/Getting Started/latest/deploying-jenkins.md
@@ -2,7 +2,7 @@
title: "Deploying Jenkins"
linkTitle: "Deploying Jenkins"
weight: 2
-date: 2021-08-19
+date: 2021-10-06
description: >
Deploy production ready Jenkins manifest
---
diff --git a/website/content/en/docs/Getting Started/latest/separate-namespaces.md b/website/content/en/docs/Getting Started/latest/separate-namespaces.md
index 03001f82..f52bdaf6 100644
--- a/website/content/en/docs/Getting Started/latest/separate-namespaces.md
+++ b/website/content/en/docs/Getting Started/latest/separate-namespaces.md
@@ -2,7 +2,7 @@
title: "Separate namespaces for Jenkins and Operator"
linkTitle: "Separate namespaces for Jenkins and Operator"
weight: 6
-date: 2021-08-20
+date: 2021-10-06
description: >
How to install Jenkins and Jenkins Operator in separate namespaces
---
diff --git a/website/content/en/docs/Security/_index.md b/website/content/en/docs/Security/_index.md
index 187c7a9a..13dbe4f6 100644
--- a/website/content/en/docs/Security/_index.md
+++ b/website/content/en/docs/Security/_index.md
@@ -2,7 +2,7 @@
title: "Security"
linkTitle: "Security"
weight: 3
-date: 2019-08-05
+date: 2021-10-06
description: >
Jenkins security and hardening out of the box
---
diff --git a/website/content/en/docs/Troubleshooting/_index.md b/website/content/en/docs/Troubleshooting/_index.md
index 989999a6..ee97095e 100644
--- a/website/content/en/docs/Troubleshooting/_index.md
+++ b/website/content/en/docs/Troubleshooting/_index.md
@@ -2,7 +2,7 @@
title: "Troubleshooting"
linkTitle: "Troubleshooting"
weight: 4
-date: 2021-08-19
+date: 2021-10-06
description: >
Troubleshooting Jenkins Operator
---
diff --git a/website/package-lock.json b/website/package-lock.json
index 766009d9..aae84b44 100644
--- a/website/package-lock.json
+++ b/website/package-lock.json
@@ -129,27 +129,27 @@
"dev": true
},
"autoprefixer": {
- "version": "9.8.7",
- "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.7.tgz",
- "integrity": "sha512-7Hg99B1eTH5+LgmUBUSmov1Z3bsggQJS7v3IMGo6wcScnbRuvtMc871J9J+4bSbIqa9LSX/zypFXJ8sXHpMJeQ==",
+ "version": "9.8.8",
+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz",
+ "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==",
"dev": true,
"requires": {
"browserslist": "^4.12.0",
"caniuse-lite": "^1.0.30001109",
- "nanocolors": "^0.2.8",
"normalize-range": "^0.1.2",
"num2fraction": "^1.2.2",
+ "picocolors": "^0.2.1",
"postcss": "^7.0.32",
"postcss-value-parser": "^4.1.0"
},
"dependencies": {
"postcss": {
- "version": "7.0.38",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz",
- "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==",
+ "version": "7.0.39",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
"dev": true,
"requires": {
- "nanocolors": "^0.2.2",
+ "picocolors": "^0.2.1",
"source-map": "^0.6.1"
}
},
@@ -278,16 +278,16 @@
}
},
"browserslist": {
- "version": "4.17.2",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.2.tgz",
- "integrity": "sha512-jSDZyqJmkKMEMi7SZAgX5UltFdR5NAO43vY0AwTpu4X3sGH7GLLQ83KiUomgrnvZRCeW0yPPnKqnxPqQOER9zQ==",
+ "version": "4.17.3",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.3.tgz",
+ "integrity": "sha512-59IqHJV5VGdcJZ+GZ2hU5n4Kv3YiASzW6Xk5g9tf5a/MAzGeFwgGWU39fVzNIOVcgB3+Gp+kiQu0HEfTVU/3VQ==",
"dev": true,
"requires": {
- "caniuse-lite": "^1.0.30001261",
- "electron-to-chromium": "^1.3.854",
+ "caniuse-lite": "^1.0.30001264",
+ "electron-to-chromium": "^1.3.857",
"escalade": "^3.1.1",
- "nanocolors": "^0.2.12",
- "node-releases": "^1.1.76"
+ "node-releases": "^1.1.77",
+ "picocolors": "^0.2.1"
}
},
"cache-base": {
@@ -320,9 +320,9 @@
"dev": true
},
"caniuse-lite": {
- "version": "1.0.30001263",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001263.tgz",
- "integrity": "sha512-doiV5dft6yzWO1WwU19kt8Qz8R0/8DgEziz6/9n2FxUasteZNwNNYSmJO3GLBH8lCVE73AB1RPDPAeYbcO5Cvw==",
+ "version": "1.0.30001265",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001265.tgz",
+ "integrity": "sha512-YzBnspggWV5hep1m9Z6sZVLOt7vrju8xWooFAgN6BA5qvy98qPAPb7vNUzypFaoh2pb3vlfzbDO8tB57UPGbtw==",
"dev": true
},
"chalk": {
@@ -552,9 +552,9 @@
}
},
"electron-to-chromium": {
- "version": "1.3.856",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.856.tgz",
- "integrity": "sha512-lSezYIe1/p5qkEswAfaQUseOBiwGwuCvRl/MKzOEVe++DcmQ92+43dznDl4rFJ4Zpu+kevhwyIf7KjJevyDA/A==",
+ "version": "1.3.860",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.860.tgz",
+ "integrity": "sha512-gWwGZ+Wv4Mou2SJRH6JQzhTPjL5f95SX7n6VkLTQ/Q/INsZLZNQ1vH2GlZjozKyvT0kkFuCmWTwIoCj+/hUDPw==",
"dev": true
},
"end-of-stream": {
@@ -1328,12 +1328,6 @@
"dev": true,
"optional": true
},
- "nanocolors": {
- "version": "0.2.12",
- "resolved": "https://registry.npmjs.org/nanocolors/-/nanocolors-0.2.12.tgz",
- "integrity": "sha512-SFNdALvzW+rVlzqexid6epYdt8H9Zol7xDoQarioEFcFN0JHo4CYNztAxmtfgGTVRCmFlEOqqhBpoFGKqSAMug==",
- "dev": true
- },
"nanomatch": {
"version": "1.2.13",
"resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
@@ -1360,9 +1354,9 @@
"dev": true
},
"node-releases": {
- "version": "1.1.76",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.76.tgz",
- "integrity": "sha512-9/IECtNr8dXNmPWmFXepT0/7o5eolGesHUa3mtr0KlgnCvnZxwh2qensKL42JJY2vQKC3nIBXetFAqR+PW1CmA==",
+ "version": "1.1.77",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.77.tgz",
+ "integrity": "sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ==",
"dev": true
},
"normalize-path": {
@@ -1569,6 +1563,12 @@
"pify": "^3.0.0"
}
},
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
"pify": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
diff --git a/website/package.json b/website/package.json
index 047d5a40..86108202 100644
--- a/website/package.json
+++ b/website/package.json
@@ -17,7 +17,7 @@
},
"homepage": "https://github.com/bep/tech-doc-hugo#readme",
"devDependencies": {
- "autoprefixer": "^9.8.7",
+ "autoprefixer": "^9.8.8",
"postcss-cli": "^5.0.1"
}
}