From b2ea024bf3f707c6dd6a35ca0b2745551dc6ae76 Mon Sep 17 00:00:00 2001 From: Jakub Al-Khalili Date: Thu, 24 Oct 2019 16:12:06 +0200 Subject: [PATCH] Remove old folders --- .../getting-started/latest/aks/index.html | 8 +- .../latest/configuration/index.html | 26 +- .../configure-backup-and-restore/index.html | 12 +- .../latest/customization/index.html | 2 +- .../latest/deploy-jenkins/index.html | 12 +- .../latest/diagnostics/index.html | 4 +- docs/docs/getting-started/latest/index.xml | 110 +- .../latest/migration/index.html | 12 +- .../getting-started/latest/scheme/index.html | 48 +- .../getting-started/v0.1.1/aks/index.html | 517 ---- .../v0.1.1/configuration/index.html | 754 ----- .../configure-backup-and-restore/index.html | 573 ---- .../v0.1.1/customization/index.html | 608 ---- .../v0.1.1/deploy-jenkins/index.html | 568 ---- .../v0.1.1/diagnostics/index.html | 520 ---- docs/docs/getting-started/v0.1.1/index.html | 630 ---- docs/docs/getting-started/v0.1.1/index.xml | 2379 -------------- .../index.html | 815 ----- .../getting-started/v0.1.1/scheme/index.html | 1945 ------------ .../getting-started/v0.2.0/aks/index.html | 517 ---- .../v0.2.0/configuration/index.html | 795 ----- .../configure-backup-and-restore/index.html | 575 ---- .../v0.2.0/customization/index.html | 659 ---- .../v0.2.0/deploy-jenkins/index.html | 564 ---- .../v0.2.0/diagnostics/index.html | 520 ---- docs/docs/getting-started/v0.2.0/index.html | 630 ---- docs/docs/getting-started/v0.2.0/index.xml | 2722 ----------------- .../v0.2.0/migration/index.html | 533 ---- .../getting-started/v0.2.0/scheme/index.html | 2480 --------------- docs/docs/index.xml | 110 +- ...29c1a66ffdfb61529ff43fa8d08bba860b76496.js | 5 - ...f665cd640085d2539954f51d57c7346b9a92d74.js | 5 - 32 files changed, 172 insertions(+), 19486 deletions(-) delete mode 100644 docs/docs/getting-started/v0.1.1/aks/index.html delete mode 100644 docs/docs/getting-started/v0.1.1/configuration/index.html delete mode 100644 docs/docs/getting-started/v0.1.1/configure-backup-and-restore/index.html delete mode 100644 docs/docs/getting-started/v0.1.1/customization/index.html delete mode 100644 docs/docs/getting-started/v0.1.1/deploy-jenkins/index.html delete mode 100644 docs/docs/getting-started/v0.1.1/diagnostics/index.html delete mode 100644 docs/docs/getting-started/v0.1.1/index.html delete mode 100644 docs/docs/getting-started/v0.1.1/index.xml delete mode 100644 docs/docs/getting-started/v0.1.1/migration-guide-v1alpha1-to-v1alpha2/index.html delete mode 100644 docs/docs/getting-started/v0.1.1/scheme/index.html delete mode 100644 docs/docs/getting-started/v0.2.0/aks/index.html delete mode 100644 docs/docs/getting-started/v0.2.0/configuration/index.html delete mode 100644 docs/docs/getting-started/v0.2.0/configure-backup-and-restore/index.html delete mode 100644 docs/docs/getting-started/v0.2.0/customization/index.html delete mode 100644 docs/docs/getting-started/v0.2.0/deploy-jenkins/index.html delete mode 100644 docs/docs/getting-started/v0.2.0/diagnostics/index.html delete mode 100644 docs/docs/getting-started/v0.2.0/index.html delete mode 100644 docs/docs/getting-started/v0.2.0/index.xml delete mode 100644 docs/docs/getting-started/v0.2.0/migration/index.html delete mode 100644 docs/docs/getting-started/v0.2.0/scheme/index.html delete mode 100644 docs/js/main.min.5bda6af5e264133f7eab7e56629c1a66ffdfb61529ff43fa8d08bba860b76496.js delete mode 100644 docs/js/main.min.7b50e46a4d678dead3e0004b8f665cd640085d2539954f51d57c7346b9a92d74.js diff --git a/docs/docs/getting-started/latest/aks/index.html b/docs/docs/getting-started/latest/aks/index.html index 0b2861e7..1633f115 100644 --- a/docs/docs/getting-started/latest/aks/index.html +++ b/docs/docs/getting-started/latest/aks/index.html @@ -35,7 +35,7 @@ - + @@ -485,7 +485,7 @@

AKS

Additional configuration for Azure Kubernetes Service
-

Azure AKS managed Kubernetes service adds to every pod the following envs:

+

Azure AKS managed Kubernetes service adds to every pod the following environment variables:

- name: KUBERNETES_PORT_443_TCP_ADDR
   value:
 - name: KUBERNETES_PORT
@@ -494,8 +494,8 @@
   value: tcp://
 - name: KUBERNETES_SERVICE_HOST
   value:
-

The operator is aware of it and omits these envs when checking if Jenkins pod envs have been changed. It prevents -restart Jenkins pod over and over again.

+

The operator is aware of it and omits these environment variables when checking if a Jenkins pod environment has been changed. It prevents the +restart of a Jenkins pod over and over again.

diff --git a/docs/docs/getting-started/latest/configuration/index.html b/docs/docs/getting-started/latest/configuration/index.html index a04d2e75..a61dada1 100644 --- a/docs/docs/getting-started/latest/configuration/index.html +++ b/docs/docs/getting-started/latest/configuration/index.html @@ -35,7 +35,7 @@ - + @@ -530,7 +530,7 @@ and deploy keys.

└── build.jenkins -

cicd/jobs/build.jenkins it’s a job definition:

+

cicd/jobs/build.jenkins is a job definition:

#!/usr/bin/env groovy
 
@@ -554,7 +554,7 @@ pipelineJob('build-jenkins-operator') {
 }
 
-

cicd/pipelines/build.jenkins it’s an actual Jenkins pipeline:

+

cicd/pipelines/build.jenkins is an actual Jenkins pipeline:

#!/usr/bin/env groovy
 
@@ -623,13 +623,13 @@ spec:
     repositoryUrl: https://github.com/jenkinsci/kubernetes-operator.git
 
-

Jenkins Operator will automatically discover and configure all seed jobs.

+

Jenkins Operator will automatically discover and configure all the seed jobs.

-

You can verify if deploy keys were successfully configured in Jenkins Credentials tab.

+

You can verify if deploy keys were successfully configured in the Jenkins Credentials tab.

jenkins

-

You can verify if your pipelines were successfully configured in Jenkins Seed Job console output.

+

You can verify if your pipelines were successfully configured in the Jenkins Seed Job console output.

jenkins

@@ -656,7 +656,7 @@ $ ssh-keygen -p -f <filename> -m pem

Configure SSH authentication

-

Configure seed job like:

+

Configure a seed job like this:

apiVersion: jenkins.io/v1alpha2
 kind: Jenkins
@@ -673,7 +673,7 @@ spec:
     repositoryUrl: git@github.com:jenkinsci/kubernetes-operator.git
 
-

and create Kubernetes Secret(name of secret should be the same from credentialID field):

+

and create a Kubernetes Secret (name of secret should be the same from credentialID field):

apiVersion: v1
 kind: Secret
@@ -690,7 +690,7 @@ stringData:
 
 

Username & password authentication

-

Configure seed job like:

+

Configure the seed job like:

apiVersion: jenkins.io/v1alpha2
 kind: Jenkins
@@ -707,7 +707,7 @@ spec:
     repositoryUrl: https://github.com/jenkinsci/kubernetes-operator.git
 
-

and create Kubernetes Secret(name of secret should be the same from credentialID field):

+

and create a Kubernetes Secret (name of secret should be the same from credentialID field):

apiVersion: v1
 kind: Secret
@@ -720,7 +720,7 @@ stringData:
 
 

HTTP Proxy for downloading plugins

-

To use forwarding proxy with operator to downloading plugins you need to put environment var to Jenkins CR, for e.g.:

+

To use forwarding proxy with an operator to download plugins you need to add the following environment variable to Jenkins CR, for e.g.:

spec:
   master:
     containers:
@@ -732,7 +732,7 @@ stringData:
 
 

Pulling Docker images from private repositories

-

To pull Docker Image from private repository you can use imagePullSecrets.

+

To pull a Docker Image from private repository you can use imagePullSecrets.

Please follow the instructions on creating a secret with a docker config.

@@ -744,7 +744,7 @@ stringData:
kubectl -n <namespace> edit secret <name>

The .dockerconfigjson key’s value needs to be replaced with a modified version.

-

After modifications it needs to be encoded as Base64 value before setting the .dockerconfigjson key:q.

+

After modifications, it needs to be encoded as a Base64 value before setting the .dockerconfigjson key:q.

Example config file to modify and use:

diff --git a/docs/docs/getting-started/latest/configure-backup-and-restore/index.html b/docs/docs/getting-started/latest/configure-backup-and-restore/index.html index 8e4ff210..4759483f 100644 --- a/docs/docs/getting-started/latest/configure-backup-and-restore/index.html +++ b/docs/docs/getting-started/latest/configure-backup-and-restore/index.html @@ -35,7 +35,7 @@ - + @@ -505,13 +505,13 @@
Prevent loss of job history
-

Backup and restore is done by container sidecar.

+

Backup and restore is done by a container sidecar.

PVC

Create PVC

-

Save to file pvc.yaml:

+

Save to the file named pvc.yaml:

apiVersion: v1
 kind: PersistentVolumeClaim
 metadata:
@@ -523,7 +523,7 @@
   resources:
     requests:
       storage: 500Gi
-

Run command:

+

Run the following command:

$ kubectl -n <namespace> create -f pvc.yaml

Configure Jenkins CR

apiVersion: jenkins.io/v1alpha2
@@ -539,7 +539,7 @@
     containers:
     - name: jenkins-master
       image: jenkins/jenkins:lts
-    - name: backup # container responsible for backup and restore
+    - name: backup # container responsible for the backup and restore
       env:
       - name: BACKUP_DIR
         value: /backup
@@ -565,7 +565,7 @@
         command:
         - /home/user/bin/backup.sh # this command is invoked on "backup" container to make backup, for example /home/user/bin/backup.sh <backup_number>, <backup_number> is passed by operator
     interval: 30 # how often make backup in seconds
-    makeBackupBeforePodDeletion: true # make backup before pod deletion
+    makeBackupBeforePodDeletion: true # make a backup before pod deletion
   restore:
     containerName: backup # container name is responsible for restore backup
     action:
diff --git a/docs/docs/getting-started/latest/customization/index.html b/docs/docs/getting-started/latest/customization/index.html
index d7db7497..e48f91bb 100644
--- a/docs/docs/getting-started/latest/customization/index.html
+++ b/docs/docs/getting-started/latest/customization/index.html
@@ -652,7 +652,7 @@ spec:
       version: 0.12.1

You can change their versions.

-

Then the Jenkins Operator will automatically install plugins after the Jenkins master pod restarts.

+

The Jenkins Operator will then automatically install plugins after the Jenkins master pod restarts.

diff --git a/docs/docs/getting-started/latest/deploy-jenkins/index.html b/docs/docs/getting-started/latest/deploy-jenkins/index.html index ce658603..e74a2305 100644 --- a/docs/docs/getting-started/latest/deploy-jenkins/index.html +++ b/docs/docs/getting-started/latest/deploy-jenkins/index.html @@ -35,7 +35,7 @@ - + @@ -530,16 +530,16 @@ spec: description: "Jenkins Operator repository" repositoryBranch: master repositoryUrl: https://github.com/jenkinsci/kubernetes-operator.git
-

Deploy Jenkins to K8s:

+

Deploy a Jenkins to K8s:

kubectl create -f jenkins_instance.yaml
-

Watch Jenkins instance being created:

+

Watch the Jenkins instance being created:

kubectl get pods -w
-

Get Jenkins credentials:

+

Get the Jenkins credentials:

kubectl get secret jenkins-operator-credentials-<cr_name> -o 'jsonpath={.data.user}' | base64 -d
 kubectl get secret jenkins-operator-credentials-<cr_name> -o 'jsonpath={.data.password}' | base64 -d
-

Connect to Jenkins (minikube):

+

Connect to the Jenkins instance (minikube):

minikube service jenkins-operator-http-<cr_name> --url
-

Connect to Jenkins (actual Kubernetes cluster):

+

Connect to the Jenkins instance (actual Kubernetes cluster):

kubectl port-forward jenkins-<cr_name> 8080:8080

Then open browser with address http://localhost:8080. jenkins

diff --git a/docs/docs/getting-started/latest/diagnostics/index.html b/docs/docs/getting-started/latest/diagnostics/index.html index 26ae401b..d86fcf14 100644 --- a/docs/docs/getting-started/latest/diagnostics/index.html +++ b/docs/docs/getting-started/latest/diagnostics/index.html @@ -35,7 +35,7 @@ - + @@ -500,7 +500,7 @@ kubectl apply -f deploy/operator.yaml
kubectl logs deployment/jenkins-operator

Troubleshooting

-

Delete Jenkins master pod and wait for the new one to come up:

+

Delete the Jenkins master pod and wait for the new one to come up:

kubectl delete pod jenkins-<cr_name>
diff --git a/docs/docs/getting-started/latest/index.xml b/docs/docs/getting-started/latest/index.xml index 1e721427..3a5919ed 100644 --- a/docs/docs/getting-started/latest/index.xml +++ b/docs/docs/getting-started/latest/index.xml @@ -73,16 +73,16 @@ spec: description: <span style="color:#4e9a06">&#34;Jenkins Operator repository&#34;</span> repositoryBranch: master repositoryUrl: https://github.com/jenkinsci/kubernetes-operator.git</code></pre></div> -<p>Deploy Jenkins to K8s:</p> +<p>Deploy a Jenkins to K8s:</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 Jenkins instance being created:</p> +<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 Jenkins credentials:</p> +<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-&lt;cr_name&gt; -o <span style="color:#4e9a06">&#39;jsonpath={.data.user}&#39;</span> <span style="color:#000;font-weight:bold">|</span> base64 -d kubectl get secret jenkins-operator-credentials-&lt;cr_name&gt; -o <span style="color:#4e9a06">&#39;jsonpath={.data.password}&#39;</span> <span style="color:#000;font-weight:bold">|</span> base64 -d</code></pre></div> -<p>Connect to Jenkins (minikube):</p> +<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-&lt;cr_name&gt; --url</code></pre></div> -<p>Connect to Jenkins (actual Kubernetes cluster):</p> +<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-&lt;cr_name&gt; <span style="color:#0000cf;font-weight:bold">8080</span>:8080</code></pre></div> <p>Then open browser with address <code>http://localhost:8080</code>. <img src="https://jenkinsci.github.io/kubernetes-operator/img/jenkins.png" alt="jenkins" /></p> @@ -117,7 +117,7 @@ and deploy keys.</p> └── build.jenkins </code></pre> -<p><strong>cicd/jobs/build.jenkins</strong> it&rsquo;s a job definition:</p> +<p><strong>cicd/jobs/build.jenkins</strong> is a job definition:</p> <pre><code>#!/usr/bin/env groovy @@ -141,7 +141,7 @@ pipelineJob('build-jenkins-operator') { } </code></pre> -<p><strong>cicd/pipelines/build.jenkins</strong> it&rsquo;s an actual Jenkins pipeline:</p> +<p><strong>cicd/pipelines/build.jenkins</strong> is an actual Jenkins pipeline:</p> <pre><code>#!/usr/bin/env groovy @@ -210,13 +210,13 @@ spec: repositoryUrl: https://github.com/jenkinsci/kubernetes-operator.git </code></pre> -<p><strong>Jenkins Operator</strong> will automatically discover and configure all seed jobs.</p> +<p><strong>Jenkins Operator</strong> will automatically discover and configure all the seed jobs.</p> -<p>You can verify if deploy keys were successfully configured in Jenkins <strong>Credentials</strong> tab.</p> +<p>You can verify if deploy keys were successfully configured in the Jenkins <strong>Credentials</strong> tab.</p> <p><img src="https://jenkinsci.github.io/kubernetes-operator/kubernetes-operator/img/jenkins-credentials.png" alt="jenkins" /></p> -<p>You can verify if your pipelines were successfully configured in Jenkins Seed Job console output.</p> +<p>You can verify if your pipelines were successfully configured in the Jenkins Seed Job console output.</p> <p><img src="https://jenkinsci.github.io/kubernetes-operator/kubernetes-operator/img/jenkins-seed.png" alt="jenkins" /></p> @@ -243,7 +243,7 @@ $ ssh-keygen -p -f &lt;filename&gt; -m pem</code></pre></ <h4 id="configure-ssh-authentication">Configure SSH authentication</h4> -<p>Configure seed job like:</p> +<p>Configure a seed job like this:</p> <pre><code>apiVersion: jenkins.io/v1alpha2 kind: Jenkins @@ -260,7 +260,7 @@ spec: repositoryUrl: git@github.com:jenkinsci/kubernetes-operator.git </code></pre> -<p>and create Kubernetes Secret(name of secret should be the same from <code>credentialID</code> field):</p> +<p>and create a Kubernetes Secret (name of secret should be the same from <code>credentialID</code> field):</p> <pre><code>apiVersion: v1 kind: Secret @@ -277,7 +277,7 @@ stringData: <h3 id="username-password-authentication">Username &amp; password authentication</h3> -<p>Configure seed job like:</p> +<p>Configure the seed job like:</p> <pre><code>apiVersion: jenkins.io/v1alpha2 kind: Jenkins @@ -294,7 +294,7 @@ spec: repositoryUrl: https://github.com/jenkinsci/kubernetes-operator.git </code></pre> -<p>and create Kubernetes Secret(name of secret should be the same from <code>credentialID</code> field):</p> +<p>and create a Kubernetes Secret (name of secret should be the same from <code>credentialID</code> field):</p> <pre><code>apiVersion: v1 kind: Secret @@ -307,7 +307,7 @@ stringData: <h2 id="http-proxy-for-downloading-plugins">HTTP Proxy for downloading plugins</h2> -<p>To use forwarding proxy with operator to downloading plugins you need to put environment var to Jenkins CR, for e.g.:</p> +<p>To use forwarding proxy with an operator to download plugins you need to add the following environment variable to Jenkins CR, for 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">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>containers<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> @@ -319,7 +319,7 @@ stringData: <h2 id="pulling-docker-images-from-private-repositories">Pulling Docker images from private repositories</h2> -<p>To pull Docker Image from private repository you can use <code>imagePullSecrets</code>.</p> +<p>To pull a Docker Image from private repository you can use <code>imagePullSecrets</code>.</p> <p>Please follow the instructions on <a href="https://kubernetes.io/docs/concepts/containers/images/?origin_team=T42NTAGHM#creating-a-secret-with-a-docker-config" target="_blank">creating a secret with a docker config</a>.</p> @@ -331,7 +331,7 @@ stringData: <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 -n &lt;namespace&gt; edit secret &lt;name&gt;</code></pre></div> <p>The <code>.dockerconfigjson</code> key&rsquo;s value needs to be replaced with a modified version.</p> -<p>After modifications it needs to be encoded as Base64 value before setting the <code>.dockerconfigjson</code> key:q.</p> +<p>After modifications, it needs to be encoded as a Base64 value before setting the <code>.dockerconfigjson</code> key:q.</p> <p>Example config file to modify and use:</p> @@ -553,7 +553,7 @@ spec: </span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">0.12</span>.<span style="color:#0000cf;font-weight:bold">1</span></code></pre></div> <p>You can change their versions.</p> -<p>Then the <strong>Jenkins Operator</strong> will automatically install plugins after the Jenkins master pod restarts.</p> +<p>The <strong>Jenkins Operator</strong> will then automatically install plugins after the Jenkins master pod restarts.</p> @@ -567,7 +567,7 @@ spec: - <p>Azure AKS managed Kubernetes service adds to every pod the following envs:</p> + <p>Azure AKS managed Kubernetes service adds to every pod the following environment variables:</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>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>KUBERNETES_PORT_443_TCP_ADDR<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><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>KUBERNETES_PORT<span style="color:#f8f8f8;text-decoration:underline"> @@ -576,8 +576,8 @@ spec: </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>tcp<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>KUBERNETES_SERVICE_HOST<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></code></pre></div> -<p>The operator is aware of it and omits these envs when checking if Jenkins pod envs have been changed. It prevents -restart Jenkins pod over and over again.</p> +<p>The operator is aware of it and omits these environment variables when checking if a Jenkins pod environment has been changed. It prevents the +restart of a Jenkins pod over and over again.</p> @@ -593,13 +593,13 @@ restart Jenkins pod over and over again.</p> -<p>Backup and restore is done by container sidecar.</p> +<p>Backup and restore is done by a container sidecar.</p> <h3 id="pvc">PVC</h3> <h4 id="create-pvc">Create PVC</h4> -<p>Save to file pvc.yaml:</p> +<p>Save to the file named pvc.yaml:</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>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>PersistentVolumeClaim<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"> @@ -611,7 +611,7 @@ restart Jenkins pod over and over again.</p> </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>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>storage<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>500Gi</code></pre></div> -<p>Run command:</p> +<p>Run the following command:</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 -n &lt;namespace&gt; create -f pvc.yaml</code></pre></div> <h4 id="configure-jenkins-cr">Configure Jenkins CR</h4> <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"> @@ -627,7 +627,7 @@ restart Jenkins pod over and over again.</p> </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>lts<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>-<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 the backup and restore</span><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_DIR<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>/backup<span style="color:#f8f8f8;text-decoration:underline"> @@ -653,7 +653,7 @@ restart Jenkins pod over and over again.</p> </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:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/backup.sh<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># this command is invoked on &#34;backup&#34; container to make backup, for example /home/user/bin/backup.sh &lt;backup_number&gt;, &lt;backup_number&gt; is passed by operator</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">30</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># how often make 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"># make backup before pod deletion</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"># make a backup before pod deletion</span><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"> @@ -854,14 +854,14 @@ the number of backups under control, e.g. Cloud Formation fragment:</p> <h3 id="added-seed-job-agent">Added seed job agent</h3> -<p>Now seed jobs are not built by master executors, but by dedicated agent deployed into Kubernetes. We disabled master executors for security reasons.</p> +<p>Seed jobs are not built by master executors, but by dedicated agents deployed into Kubernetes. We disabled master executors for security reasons.</p> <h3 id="apply-jenkins-configuration-via-groovy-scripts-instead-of-jenkins-jobs">Apply Jenkins configuration via Groovy scripts instead of Jenkins jobs</h3> -<p>We have removed hardcoded configuration by <strong>Jenkins</strong> jobs.</p> +<p>We have removed the hardcoded configuration by <strong>Jenkins</strong> jobs.</p> <p>In <code>v0.1.1</code> <strong>Jenkins Operator</strong> configuration was stored in <code>jenkins-operator-user-configuration-&lt;cr_name&gt;</code> -If you want to use <code>v0.2.0</code> or newer you must simply write refer to old ConfigMap by modifying CR, for example:</p> +If you want to use <code>v0.2.0</code> or newer you must simply write refererences to old ConfigMap by modifying CR, for example:</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"> @@ -879,8 +879,8 @@ If you want to use <code>v0.2.0</code> or newer you must simply writ </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-user-configuration-&lt;cr_name&gt;</code></pre></div> <p><strong>Jenkins</strong> configuration jobs (<em>Configure Seed Jobs</em>, <em>jenkins-operator-base-configuration</em>, <em>jenkins-operator-user-configuration</em>) have been removed from <strong>Jenkins</strong>.</p> -<p>In <code>v0.1.1</code> you can see if configuration failed or successfully updated in <strong>Jenkins</strong> UI (job build logs). -Now, when Jenkins configuration jobs are removed, you must use this command to see if configuration was failed.</p> +<p>In <code>v0.1.1</code> you can see if the configuration failed or successfully updated in <strong>Jenkins</strong> UI (job build logs). +When Jenkins configuration jobs are removed, you must use the following command to see if configuration was failed.</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 -n logs deployment/jenkins-operator</code></pre></div> @@ -907,7 +907,7 @@ kubectl apply -f deploy/operator.yaml</code></pre></div> <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 Jenkins master pod and wait for the new one to come up:</p> +<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-&lt;cr_name&gt;</code></pre></div> @@ -937,7 +937,7 @@ kubectl apply -f deploy/operator.yaml</code></pre></div> </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>Package v1alpha2 contains the API Schema definitions for the jenkins.io v1alpha2 API group</p> </p> Resource Types: <ul><li> @@ -1026,7 +1026,7 @@ Every single change here requires a pod restart.</p> </td> <td> <em>(Optional)</em> -<p>SeedJobs defines list of Jenkins Seed Job configurations +<p>SeedJobs defines a list of Jenkins Seed Job configurations More info: <a href="https://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#configure-seed-jobs-and-pipelines">https://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#configure-seed-jobs-and-pipelines</a></p> </td> </tr> @@ -1041,7 +1041,7 @@ Service </td> <td> <em>(Optional)</em> -<p>Service is Kubernetes service of Jenkins master HTTP pod +<p>Service is the Kubernetes service of the Jenkins master HTTP pod Defaults to : port: 8080 type: ClusterIP</p> @@ -1058,7 +1058,7 @@ Service </td> <td> <em>(Optional)</em> -<p>Service is Kubernetes service of Jenkins slave pods +<p>Service is the Kubernetes service of the Jenkins slave pods Defaults to : port: 50000 type: ClusterIP</p> @@ -1075,7 +1075,7 @@ Backup </td> <td> <em>(Optional)</em> -<p>Backup defines configuration of Jenkins backup +<p>Backup defines the configuration of a Jenkins backup More info: <a href="https://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#configure-backup-and-restore">https://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#configure-backup-and-restore</a></p> </td> </tr> @@ -1090,7 +1090,7 @@ Restore </td> <td> <em>(Optional)</em> -<p>Backup defines configuration of Jenkins backup restore +<p>Backup defines the configuration of a Jenkins backup restore More info: <a href="https://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#configure-backup-and-restore">https://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#configure-backup-and-restore</a></p> </td> </tr> @@ -1105,7 +1105,7 @@ GroovyScripts </td> <td> <em>(Optional)</em> -<p>GroovyScripts defines configuration of Jenkins customization via groovy scripts</p> +<p>GroovyScripts defines the configuration of Jenkins customization via groovy scripts</p> </td> </tr> <tr> @@ -1119,7 +1119,7 @@ ConfigurationAsCode </td> <td> <em>(Optional)</em> -<p>ConfigurationAsCode defines configuration of Jenkins customization via Configuration as Code Jenkins plugin</p> +<p>ConfigurationAsCode defines the configuration of Jenkins customization via the Configuration as Code Jenkins plugin</p> </td> </tr> </table> @@ -1210,7 +1210,7 @@ string <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>Backup defines the configuration of a Jenkins backup</p> </p> <table> <thead> @@ -1241,7 +1241,7 @@ Handler </em> </td> <td> -<p>Action defines action which performs backup in backup container sidecar</p> +<p>Action defines the action which performs the backup in the backup container sidecar</p> </td> </tr> <tr> @@ -1252,7 +1252,7 @@ uint64 </em> </td> <td> -<p>Interval tells how often make backup in seconds +<p>Interval tells you how often the backup is made in seconds Defaults to 30.</p> </td> </tr> @@ -1264,7 +1264,7 @@ bool </em> </td> <td> -<p>MakeBackupBeforePodDeletion tells operator to make backup before Jenkins master pod deletion</p> +<p>MakeBackupBeforePodDeletion tells the operator to make a backup before Jenkins master pod deletion</p> </td> </tr> </tbody> @@ -1276,7 +1276,7 @@ bool <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>ConfigMapRef is the reference to Kubernetes ConfigMap</p> </p> <table> <thead> @@ -1305,7 +1305,7 @@ string <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>ConfigurationAsCode defines configuration of Jenkins customization via the Configuration as Code Jenkins plugin</p> </p> <table> <thead> @@ -1336,7 +1336,7 @@ Customization <a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.JenkinsMaster">JenkinsMaster</a>) </p> <p> -<p>Container defines Kubernetes container attributes</p> +<p>Container defines the Kubernetes container attributes</p> </p> <table> <thead> @@ -1691,7 +1691,7 @@ Kubernetes core/v1.ExecAction <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>JenkinsCredentialType defines the type of Jenkins credential used in the seed job mechanism</p> </p> <h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.JenkinsMaster">JenkinsMaster </h3> @@ -2151,7 +2151,7 @@ string </td> <td> <em>(Optional)</em> -<p>UserAndPasswordHash is a SHA256 hash made from user and password</p> +<p>UserAndPasswordHash is a SHA256 hash made from the username and password</p> </td> </tr> <tr> @@ -2163,7 +2163,7 @@ string </td> <td> <em>(Optional)</em> -<p>CreatedSeedJobs contains list of seed job id already created in Jenkins</p> +<p>CreatedSeedJobs contains list of seed job ids already created in Jenkins</p> </td> </tr> <tr> @@ -2597,7 +2597,7 @@ string </em> </td> <td> -<p>Targets is the repository path where are seed job definitions</p> +<p>Targets is the repository path where the seed job definitions are</p> </td> </tr> <tr> @@ -2608,7 +2608,7 @@ string </em> </td> <td> -<p>RepositoryBranch is the repository branch where are seed job definitions</p> +<p>RepositoryBranch is the repository branch where the seed job definitions are</p> </td> </tr> <tr> @@ -2805,7 +2805,7 @@ int32 </em> </td> <td> -<p>The port that are exposed by this service. +<p>The port that is 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> @@ -2820,7 +2820,7 @@ int32 <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. +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> @@ -2835,7 +2835,7 @@ More info: <a href="https://kubernetes.io/docs/concepts/services-networki <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 +the load-balancer will be restricted to the specified client IPs. This field will be ignored if the cloud-provider does not support the feature.&rdquo; More info: <a href="https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/">https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/</a></p> </td> diff --git a/docs/docs/getting-started/latest/migration/index.html b/docs/docs/getting-started/latest/migration/index.html index dc1b0d23..517bbad4 100644 --- a/docs/docs/getting-started/latest/migration/index.html +++ b/docs/docs/getting-started/latest/migration/index.html @@ -35,7 +35,7 @@ - + @@ -504,14 +504,14 @@

Added seed job agent

-

Now seed jobs are not built by master executors, but by dedicated agent deployed into Kubernetes. We disabled master executors for security reasons.

+

Seed jobs are not built by master executors, but by dedicated agents deployed into Kubernetes. We disabled master executors for security reasons.

Apply Jenkins configuration via Groovy scripts instead of Jenkins jobs

-

We have removed hardcoded configuration by Jenkins jobs.

+

We have removed the hardcoded configuration by Jenkins jobs.

In v0.1.1 Jenkins Operator configuration was stored in jenkins-operator-user-configuration-<cr_name> -If you want to use v0.2.0 or newer you must simply write refer to old ConfigMap by modifying CR, for example:

+If you want to use v0.2.0 or newer you must simply write refererences to old ConfigMap by modifying CR, for example:

apiVersion: jenkins.io/v1alpha2
 kind: Jenkins
 metadata:
@@ -529,8 +529,8 @@ If you want to use v0.2.0 or newer you must simply write refer to o
       name: jenkins-operator-user-configuration-<cr_name>

Jenkins configuration jobs (Configure Seed Jobs, jenkins-operator-base-configuration, jenkins-operator-user-configuration) have been removed from Jenkins.

-

In v0.1.1 you can see if configuration failed or successfully updated in Jenkins UI (job build logs). -Now, when Jenkins configuration jobs are removed, you must use this command to see if configuration was failed.

+

In v0.1.1 you can see if the configuration failed or successfully updated in Jenkins UI (job build logs). +When Jenkins configuration jobs are removed, you must use the following command to see if configuration was failed.

$ kubectl -n logs deployment/jenkins-operator
diff --git a/docs/docs/getting-started/latest/scheme/index.html b/docs/docs/getting-started/latest/scheme/index.html index 39c98c85..45cb1cf5 100644 --- a/docs/docs/getting-started/latest/scheme/index.html +++ b/docs/docs/getting-started/latest/scheme/index.html @@ -35,7 +35,7 @@ - + @@ -501,7 +501,7 @@

jenkins.io

-

Package v1alpha2 contains API Schema definitions for the jenkins.io v1alpha2 API group

+

Package v1alpha2 contains the API Schema definitions for the jenkins.io v1alpha2 API group

Resource Types:
  • @@ -590,7 +590,7 @@ Every single change here requires a pod restart.

    (Optional) -

    SeedJobs defines list of Jenkins Seed Job configurations +

    SeedJobs defines a list of Jenkins Seed Job configurations More info: https://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#configure-seed-jobs-and-pipelines

    @@ -605,7 +605,7 @@ Service (Optional) -

    Service is Kubernetes service of Jenkins master HTTP pod +

    Service is the Kubernetes service of the Jenkins master HTTP pod Defaults to : port: 8080 type: ClusterIP

    @@ -622,7 +622,7 @@ Service (Optional) -

    Service is Kubernetes service of Jenkins slave pods +

    Service is the Kubernetes service of the Jenkins slave pods Defaults to : port: 50000 type: ClusterIP

    @@ -639,7 +639,7 @@ Backup (Optional) -

    Backup defines configuration of Jenkins backup +

    Backup defines the configuration of a Jenkins backup More info: https://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#configure-backup-and-restore

    @@ -654,7 +654,7 @@ Restore (Optional) -

    Backup defines configuration of Jenkins backup restore +

    Backup defines the configuration of a Jenkins backup restore More info: https://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#configure-backup-and-restore

    @@ -669,7 +669,7 @@ GroovyScripts (Optional) -

    GroovyScripts defines configuration of Jenkins customization via groovy scripts

    +

    GroovyScripts defines the configuration of Jenkins customization via groovy scripts

    @@ -683,7 +683,7 @@ ConfigurationAsCode (Optional) -

    ConfigurationAsCode defines configuration of Jenkins customization via Configuration as Code Jenkins plugin

    +

    ConfigurationAsCode defines the configuration of Jenkins customization via the Configuration as Code Jenkins plugin

    @@ -774,7 +774,7 @@ string JenkinsSpec)

    -

    Backup defines configuration of Jenkins backup

    +

    Backup defines the configuration of a Jenkins backup

    @@ -805,7 +805,7 @@ Handler @@ -816,7 +816,7 @@ uint64 @@ -828,7 +828,7 @@ bool @@ -840,7 +840,7 @@ bool Customization)

    -

    ConfigMapRef is reference to Kubernetes ConfigMap

    +

    ConfigMapRef is the reference to Kubernetes ConfigMap

    -

    Action defines action which performs backup in backup container sidecar

    +

    Action defines the action which performs the backup in the backup container sidecar

    -

    Interval tells how often make backup in seconds +

    Interval tells you how often the backup is made in seconds Defaults to 30.

    -

    MakeBackupBeforePodDeletion tells operator to make backup before Jenkins master pod deletion

    +

    MakeBackupBeforePodDeletion tells the operator to make a backup before Jenkins master pod deletion

    @@ -869,7 +869,7 @@ string JenkinsSpec)

    -

    ConfigurationAsCode defines configuration of Jenkins customization via Configuration as Code Jenkins plugin

    +

    ConfigurationAsCode defines configuration of Jenkins customization via the Configuration as Code Jenkins plugin

    @@ -900,7 +900,7 @@ Customization JenkinsMaster)

    -

    Container defines Kubernetes container attributes

    +

    Container defines the Kubernetes container attributes

    @@ -1255,7 +1255,7 @@ Kubernetes core/v1.ExecAction SeedJob)

    -

    JenkinsCredentialType defines type of Jenkins credential used to seed job mechanism

    +

    JenkinsCredentialType defines the type of Jenkins credential used in the seed job mechanism

    JenkinsMaster

    @@ -1715,7 +1715,7 @@ string @@ -1727,7 +1727,7 @@ string @@ -2161,7 +2161,7 @@ string @@ -2172,7 +2172,7 @@ string @@ -2369,7 +2369,7 @@ int32 @@ -2384,7 +2384,7 @@ int32 (Optional)

    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. +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: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport

    @@ -2399,7 +2399,7 @@ More info: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/

    diff --git a/docs/docs/getting-started/v0.1.1/aks/index.html b/docs/docs/getting-started/v0.1.1/aks/index.html deleted file mode 100644 index 8218b479..00000000 --- a/docs/docs/getting-started/v0.1.1/aks/index.html +++ /dev/null @@ -1,517 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - -AKS | Jenkins Operator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AKS | Jenkins Operator - - -
    - - - -
    -
    -
    -
    -
    - - - - - -
    - - - - - - - - - -
    - - - - -
    -
    - - - -
    -

    AKS

    -
    Additional configuration for Azure Kubernetes Service
    -

    Azure AKS managed Kubernetes service adds to every pod the following envs:

    -
    - name: KUBERNETES_PORT_443_TCP_ADDR
    -  value:
    -- name: KUBERNETES_PORT
    -  value: tcp://
    -- name: KUBERNETES_PORT_443_TCP
    -  value: tcp://
    -- name: KUBERNETES_SERVICE_HOST
    -  value:
    -

    The operator is aware of it and omits these envs when checking if Jenkins pod envs have been changed. It prevents -restart Jenkins pod over and over again.

    - - - -
    Last modified August 5, 2019 -
    -
    - - -
    -
    -
    - - - - -
    - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/docs/getting-started/v0.1.1/configuration/index.html b/docs/docs/getting-started/v0.1.1/configuration/index.html deleted file mode 100644 index b8e15593..00000000 --- a/docs/docs/getting-started/v0.1.1/configuration/index.html +++ /dev/null @@ -1,754 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - -Configuration | Jenkins Operator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Configuration | Jenkins Operator - - -
    - - - -
    -
    -
    -
    -
    - - - - - -
    - - - - - - - - - -
    - - - - -
    -
    - - - -
    -

    Configuration

    -
    How to configure Jenkins with Operator
    - - -

    Jenkins operator uses job-dsl and kubernetes-credentials-provider plugins for configuring jobs -and deploy keys.

    - -

    Prepare job definitions and pipelines

    - -

    First you have to prepare pipelines and job definition in your GitHub repository using the following structure:

    - -
    cicd/
    -├── jobs
    -│   └── build.jenkins
    -└── pipelines
    -    └── build.jenkins
    -
    - -

    cicd/jobs/build.jenkins it’s a job definition:

    - -
    #!/usr/bin/env groovy
    -
    -pipelineJob('build-jenkins-operator') {
    -    displayName('Build jenkins-operator')
    -
    -    definition {
    -        cpsScm {
    -            scm {
    -                git {
    -                    remote {
    -                        url('https://github.com/jenkinsci/kubernetes-operator.git')
    -                        credentials('jenkins-operator')
    -                    }
    -                    branches('*/master')
    -                }
    -            }
    -            scriptPath('cicd/pipelines/build.jenkins')
    -        }
    -    }
    -}
    -
    - -

    cicd/jobs/build.jenkins it’s an actual Jenkins pipeline:

    - -
    #!/usr/bin/env groovy
    -
    -def label = "build-jenkins-operator-${UUID.randomUUID().toString()}"
    -def home = "/home/jenkins"
    -def workspace = "${home}/workspace/build-jenkins-operator"
    -def workdir = "${workspace}/src/github.com/jenkinsci/kubernetes-operator/"
    -
    -podTemplate(label: label,
    -        containers: [
    -                containerTemplate(name: 'jnlp', image: 'jenkins/jnlp-slave:alpine'),
    -                containerTemplate(name: 'go', image: 'golang:1-alpine', command: 'cat', ttyEnabled: true),
    -        ],
    -        envVars: [
    -                envVar(key: 'GOPATH', value: workspace),
    -        ],
    -        ) {
    -
    -    node(label) {
    -        dir(workdir) {
    -            stage('Init') {
    -                timeout(time: 3, unit: 'MINUTES') {
    -                    checkout scm
    -                }
    -                container('go') {
    -                    sh 'apk --no-cache --update add make git gcc libc-dev'
    -                }
    -            }
    -
    -            stage('Dep') {
    -                container('go') {
    -                    sh 'make dep'
    -                }
    -            }
    -
    -            stage('Test') {
    -                container('go') {
    -                    sh 'make test'
    -                }
    -            }
    -
    -            stage('Build') {
    -                container('go') {
    -                    sh 'make build'
    -                }
    -            }
    -        }
    -    }
    -}
    -
    - -

    Configure Seed Jobs

    - -

    Jenkins Seed Jobs are configured using Jenkins.spec.seedJobs section from your custom resource manifest:

    - -
    apiVersion: jenkins.io/v1alpha2
    -kind: Jenkins
    -metadata:
    -  name: example
    -spec:
    -  seedJobs:
    -  - id: jenkins-operator
    -    targets: "cicd/jobs/*.jenkins"
    -    description: "Jenkins Operator repository"
    -    repositoryBranch: master
    -    repositoryUrl: https://github.com/jenkinsci/kubernetes-operator.git
    -
    - -

    Jenkins Operator will automatically discover and configure all seed jobs.

    - -

    You can verify if deploy keys were successfully configured in Jenkins Credentials tab.

    - -

    jenkins

    - -

    You can verify if your pipelines were successfully configured in Jenkins Seed Job console output.

    - -

    jenkins

    - -

    If your GitHub repository is private you have to configure SSH or username/password authentication.

    - -

    SSH authentication

    - -

    Generate SSH Keys

    - -

    There are two methods of SSH private key generation:

    -
    $ openssl genrsa -out <filename> 2048
    -

    or

    -
    $ ssh-keygen -t rsa -b 2048
    -$ ssh-keygen -p -f <filename> -m pem
    -

    Then copy content from generated file.

    - -

    Public key

    - -

    If you want to upload your public key to your Git server you need to extract it.

    - -

    If key was generated by openssl then you need to type this to extract public key:

    -
    $ openssl rsa -in <filename> -pubout > <filename>.pub
    -

    If key was generated by ssh-keygen the public key content is located in .pub and there is no need to extract public key

    - -

    Configure SSH authentication

    - -

    Configure seed job like:

    - -
    apiVersion: jenkins.io/v1alpha2
    -kind: Jenkins
    -metadata:
    -  name: example
    -spec:
    -  seedJobs:
    -  - id: jenkins-operator-ssh
    -    credentialType: basicSSHUserPrivateKey
    -    credentialID: k8s-ssh
    -    targets: "cicd/jobs/*.jenkins"
    -    description: "Jenkins Operator repository"
    -    repositoryBranch: master
    -    repositoryUrl: git@github.com:jenkinsci/kubernetes-operator.git
    -
    - -

    and create Kubernetes Secret(name of secret should be the same from credentialID field):

    - -
    apiVersion: v1
    -kind: Secret
    -metadata:
    -  name: k8s-ssh
    -stringData:
    -  privateKey: |
    -    -----BEGIN RSA PRIVATE KEY-----
    -    MIIJKAIBAAKCAgEAxxDpleJjMCN5nusfW/AtBAZhx8UVVlhhhIKXvQ+dFODQIdzO
    -    oDXybs1zVHWOj31zqbbJnsfsVZ9Uf3p9k6xpJ3WFY9b85WasqTDN1xmSd6swD4N8
    -    ...
    -  username: github_user_name
    -
    - -

    Username & password authentication

    - -

    Configure seed job like:

    - -
    apiVersion: jenkins.io/v1alpha2
    -kind: Jenkins
    -metadata:
    -  name: example
    -spec:
    -  seedJobs:
    -  - id: jenkins-operator-user-pass
    -    credentialType: usernamePassword
    -    credentialID: k8s-user-pass
    -    targets: "cicd/jobs/*.jenkins"
    -    description: "Jenkins Operator repository"
    -    repositoryBranch: master
    -    repositoryUrl: https://github.com/jenkinsci/kubernetes-operator.git
    -
    - -

    and create Kubernetes Secret(name of secret should be the same from credentialID field):

    - -
    apiVersion: v1
    -kind: Secret
    -metadata:
    -  name: k8s-user-pass
    -stringData:
    -  username: github_user_name
    -  password: password_or_token
    -
    - -

    HTTP Proxy for downloading plugins

    - -

    To use forwarding proxy with operator to downloading plugins you need to put environment var to Jenkins CR, for e.g.:

    -
    spec:
    -  master:
    -    containers:
    -      - name: jenkins-master
    -        env:
    -          - name: CURL_OPTIONS
    -            value: -L -x <proxy_url>
    -

    In CURL_OPTIONS var you can set additional arguments to curl command.

    - -

    Jenkins login credentials

    - -

    The operator automatically generate Jenkins user name and password and stores it in Kubernetes secret named -jenkins-operator-credentials-<cr_name> in namespace where Jenkins CR has been deployed.

    - -

    If you want change it you can override the secret:

    -
    apiVersion: v1
    -kind: Secret
    -metadata:
    -  name: jenkins-operator-credentials-<cr-name>
    -  namespace: <namespace>
    -data:
    -  user: <base64-encoded-new-username>
    -  password: <base64-encoded-new-password>
    -

    If needed Jenkins Operator will restart Jenkins master pod and then you can login with the new user and password -credentials.

    - -

    Override default Jenkins container command

    - -

    The default command for the Jenkins master container jenkins/jenkins:lts looks like:

    -
    command:
    -- bash
    -- -c
    -- /var/jenkins/scripts/init.sh && /sbin/tini -s -- /usr/local/bin/jenkins.sh
    -

    The script/var/jenkins/scripts/init.sh is provided be the operator and configures init.groovy.d(creates Jenkins user) -and installs plugins. -The /sbin/tini -s -- /usr/local/bin/jenkins.sh command runs the Jenkins master main process.

    - -

    You can overwrite it in the following pattern:

    -
    command:
    -- bash
    -- -c
    -- /var/jenkins/scripts/init.sh && <custom-code-here> && /sbin/tini -s -- /usr/local/bin/jenkins.sh
    - - -
    Last modified August 5, 2019 -
    -
    - - -
    -
    -
    - - - - -
    - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/docs/getting-started/v0.1.1/configure-backup-and-restore/index.html b/docs/docs/getting-started/v0.1.1/configure-backup-and-restore/index.html deleted file mode 100644 index 844e795c..00000000 --- a/docs/docs/getting-started/v0.1.1/configure-backup-and-restore/index.html +++ /dev/null @@ -1,573 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - -Configure backup and restore | Jenkins Operator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Configure backup and restore | Jenkins Operator - - -
    - - - -
    -
    -
    -
    -
    - - - - - -
    - - - - - - - - - -
    - - - - -
    -
    - - - -
    -

    Configure backup and restore

    -
    Prevent loss of job history
    - - -

    Backup and restore is done by container sidecar.

    - -

    Create PVC

    - -

    Save to file pvc.yaml:

    -
    apiVersion: v1
    -kind: PersistentVolumeClaim
    -metadata:
    -  name: <pvc_name>
    -  namespace: <namespace>
    -spec:
    -  accessModes:
    -  - ReadWriteOnce
    -  resources:
    -    requests:
    -      storage: 500Gi
    -

    Run command:

    -
    $ kubectl -n <namespace> create -f pvc.yaml
    -

    Configure Jenkins CR

    -
    apiVersion: jenkins.io/v1alpha2
    -kind: Jenkins
    -metadata:
    -  name: <cr_name>
    -  namespace: <namespace>
    -spec:
    -  master:
    -    securityContext:
    -      runAsUser: 1000
    -      fsGroup: 1000
    -    containers:
    -    - name: jenkins-master
    -      image: jenkins/jenkins:lts
    -    - name: backup # container responsible for backup and restore
    -      env:
    -      - name: BACKUP_DIR
    -        value: /backup
    -      - name: JENKINS_HOME
    -        value: /jenkins-home
    -      - name: BACKUP_COUNT
    -        value: "3" # keep only the 2 most recent backups
    -      image: virtuslab/jenkins-operator-backup-pvc:v0.0.6 # look at backup/pvc directory
    -      imagePullPolicy: IfNotPresent
    -      volumeMounts:
    -      - mountPath: /jenkins-home # Jenkins home volume
    -        name: jenkins-home
    -      - mountPath: /backup # backup volume
    -        name: backup
    -    volumes:
    -    - name: backup # PVC volume where backups will be stored
    -      persistentVolumeClaim:
    -        claimName: <pvc_name>
    -  backup:
    -    containerName: backup # container name is responsible for backup
    -    action:
    -      exec:
    -        command:
    -        - /home/user/bin/backup.sh # this command is invoked on "backup" container to make backup, for example /home/user/bin/backup.sh <backup_number>, <backup_number> is passed by operator
    -    interval: 30 # how often make backup in seconds
    -    makeBackupBeforePodDeletion: true # make backup before pod deletion
    -  restore:
    -    containerName: backup # container name is responsible for restore backup
    -    action:
    -      exec:
    -        command:
    -        - /home/user/bin/restore.sh # this command is invoked on "backup" container to make restore backup, for example /home/user/bin/restore.sh <backup_number>, <backup_number> is passed by operator
    -    #recoveryOnce: <backup_number> # if want to restore specific backup configure this field and then Jenkins will be restarted and desired backup will be restored
    - - -
    Last modified August 5, 2019 -
    -
    - - -
    -
    -
    - - - - -
    - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/docs/getting-started/v0.1.1/customization/index.html b/docs/docs/getting-started/v0.1.1/customization/index.html deleted file mode 100644 index 03510bce..00000000 --- a/docs/docs/getting-started/v0.1.1/customization/index.html +++ /dev/null @@ -1,608 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - -Customization | Jenkins Operator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Customization | Jenkins Operator - - -
    - - - -
    -
    -
    -
    -
    - - - - - -
    - - - - - - - - - -
    - - - - -
    -
    - - - -
    -

    Customization

    -
    How to customize Jenkins
    - - -

    Jenkins can be customized using groovy scripts or the configuration as code plugin. All custom configuration is stored in -the jenkins-operator-user-configuration- ConfigMap which is automatically created by the Jenkins Operator.

    - -

    The Jenkins Operator creates a jenkins-operator-user-configuration- secret where the user can store sensitive -information used for custom configuration. If you have an entry in the secret named PASSWORD then you can use it in the -Configuration as Plugin as adminAddress: "${PASSWORD}".

    - -
    kubectl get secret jenkins-operator-user-configuration-<cr_name> -o yaml
    -
    -kind: Secret
    -apiVersion: v1
    -type: Opaque
    -metadata:
    -  name: jenkins-operator-user-configuration-<cr_name>
    -  namespace: default
    -data:
    -  SECRET_JENKINS_ADMIN_ADDRESS: YXNkZgo=
    -
    -
    - -
    kubectl get configmap jenkins-operator-user-configuration-<cr_name> -o yaml
    -
    -apiVersion: v1
    -data:
    -  1-configure-theme.groovy: |2
    -    import jenkins.*
    -    import jenkins.model.*
    -    import hudson.*
    -    import hudson.model.*
    -    import org.jenkinsci.plugins.simpletheme.ThemeElement
    -    import org.jenkinsci.plugins.simpletheme.CssTextThemeElement
    -    import org.jenkinsci.plugins.simpletheme.CssUrlThemeElement
    -
    -    Jenkins jenkins = Jenkins.getInstance()
    -
    -    def decorator = Jenkins.instance.getDescriptorByType(org.codefirst.SimpleThemeDecorator.class)
    -
    -    List<ThemeElement> configElements = new ArrayList<>();
    -    configElements.add(new CssTextThemeElement("DEFAULT"));
    -    configElements.add(new CssUrlThemeElement("https://cdn.rawgit.com/afonsof/jenkins-material-theme/gh-pages/dist/material-light-green.css"));
    -    decorator.setElements(configElements);
    -    decorator.save();
    -
    -    jenkins.save()
    -  1-system-message.yaml: |2
    -    jenkins:
    -      systemMessage: "Configuration as Code integration works!!!"
    -      adminAddress: "${SECRET_JENKINS_ADMIN_ADDRESS}"
    -kind: ConfigMap
    -metadata:
    -  name: jenkins-operator-user-configuration-<cr_name>
    -  namespace: default
    -
    - -

    When the jenkins-operator-user-configuration- ConfigMap is updated Jenkins automatically -runs the jenkins-operator-user-configuration Jenkins Job which executes all scripts then -runs the jenkins-operator-user-configuration-casc Jenkins Job which applies the Configuration as Code configuration.

    - -

    Install Plugins

    - -

    Edit CR under spec.master.plugins:

    - -
    apiVersion: jenkins.io/v1alpha2
    -kind: Jenkins
    -metadata:
    -  name: example
    -spec:
    -  master:
    -   plugins:
    -   - name: simple-theme-plugin
    -     version: 0.5.1
    -
    - -

    Under spec.master.basePlugins you can find plugins for a valid Jenkins Operator:

    -
    apiVersion: jenkins.io/v1alpha2
    -kind: Jenkins
    -metadata:
    -  name: example
    -spec:
    -  master:
    -    basePlugins:
    -    - name: kubernetes
    -      version: 1.18.3
    -    - name: workflow-job
    -      version: "2.34"
    -    - name: workflow-aggregator
    -      version: "2.6"
    -    - name: git
    -      version: 3.12.0
    -    - name: job-dsl
    -      version: "1.76"
    -    - name: configuration-as-code
    -      version: "1.29"
    -    - name: configuration-as-code-support
    -      version: "1.19"
    -    - name: kubernetes-credentials-provider
    -      version: 0.12.1
    -

    You can change their versions.

    - -

    Then the Jenkins Operator will automatically install those plugins after the Jenkins master pod restart.

    - - - -
    Last modified August 5, 2019 -
    -
    - - -
    -
    -
    - - - - -
    - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/docs/getting-started/v0.1.1/deploy-jenkins/index.html b/docs/docs/getting-started/v0.1.1/deploy-jenkins/index.html deleted file mode 100644 index 9ccc3fab..00000000 --- a/docs/docs/getting-started/v0.1.1/deploy-jenkins/index.html +++ /dev/null @@ -1,568 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - -Deploy Jenkins | Jenkins Operator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Deploy Jenkins | Jenkins Operator - - -
    - - - -
    -
    -
    -
    -
    - - - - - -
    - - - - - - - - - -
    - - - - -
    -
    - - - -
    -

    Deploy Jenkins

    -
    Deploy production ready Jenkins Operator manifest
    - - -

    Deploy Jenkins

    - -

    Once jenkins-operator is up and running let’s deploy actual Jenkins instance. -Create manifest ie. jenkins_instance.yaml with following data and save it on drive.

    -
    apiVersion: jenkins.io/v1alpha2
    -kind: Jenkins
    -metadata:
    -  name: example
    -spec:
    -  master:
    -    containers:
    -    - name: jenkins-master
    -      image: jenkins/jenkins:lts
    -      imagePullPolicy: Always
    -      livenessProbe:
    -        failureThreshold: 12
    -        httpGet:
    -          path: /login
    -          port: http
    -          scheme: HTTP
    -        initialDelaySeconds: 80
    -        periodSeconds: 10
    -        successThreshold: 1
    -        timeoutSeconds: 5
    -      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: 500Mi
    -  seedJobs:
    -  - id: jenkins-operator
    -    targets: "cicd/jobs/*.jenkins"
    -    description: "Jenkins Operator repository"
    -    repositoryBranch: master
    -    repositoryUrl: https://github.com/jenkinsci/kubernetes-operator.git
    -

    Deploy Jenkins to K8s:

    -
    kubectl create -f jenkins_instance.yaml
    -

    Watch Jenkins instance being created:

    -
    kubectl get pods -w
    -

    Get Jenkins credentials:

    -
    kubectl get secret jenkins-operator-credentials-<cr_name> -o 'jsonpath={.data.user}' | base64 -d
    -kubectl get secret jenkins-operator-credentials-<cr_name> -o 'jsonpath={.data.password}' | base64 -d
    -

    Connect to Jenkins (minikube):

    -
    minikube service jenkins-operator-http-<cr_name> --url
    -

    Connect to Jenkins (actual Kubernetes cluster):

    -
    kubectl port-forward jenkins-<cr_name> 8080:8080
    -

    Then open browser with address http://localhost:8080. -jenkins

    - - - -
    Last modified August 5, 2019 -
    -
    - - -
    -
    -
    - - - - -
    - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/docs/getting-started/v0.1.1/diagnostics/index.html b/docs/docs/getting-started/v0.1.1/diagnostics/index.html deleted file mode 100644 index e5e232fd..00000000 --- a/docs/docs/getting-started/v0.1.1/diagnostics/index.html +++ /dev/null @@ -1,520 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - -Diagnostics | Jenkins Operator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Diagnostics | Jenkins Operator - - -
    - - - -
    -
    -
    -
    -
    - - - - - -
    - - - - - - - - - -
    - - - - -
    -
    - - - -
    -

    Diagnostics

    -
    How to deal with jenkins-operator problems
    - - -

    Turn on debug in Jenkins Operator deployment:

    -
    sed -i 's|\(args:\).*|\1\ ["--debug"\]|' deploy/operator.yaml
    -kubectl apply -f deploy/operator.yaml
    -

    Watch Kubernetes events:

    -
    kubectl get events --sort-by='{.lastTimestamp}'
    -

    Verify Jenkins master logs:

    -
    kubectl logs -f jenkins-<cr_name>
    -

    Verify jenkins-operator logs:

    -
    kubectl logs deployment/jenkins-operator
    -

    Troubleshooting

    - -

    Delete Jenkins master pod and wait for the new one to come up:

    -
    kubectl delete pod jenkins-<cr_name>
    - - -
    Last modified August 5, 2019 -
    -
    - - -
    -
    -
    - - - - -
    - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/docs/getting-started/v0.1.1/index.html b/docs/docs/getting-started/v0.1.1/index.html deleted file mode 100644 index 56d2ae4a..00000000 --- a/docs/docs/getting-started/v0.1.1/index.html +++ /dev/null @@ -1,630 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - -v0.1.1 | Jenkins Operator - - - - - - - - - - - - - - - - - - - - - - - - v0.1.1 | Jenkins Operator - - -
    - - - -
    -
    -
    -
    -
    - - - - - -
    - - - - - - - - - -
    - - - - -
    -
    - - - -
    -

    v0.1.1

    -
    How to work with jenkins-operator legacy version. We recommend migration to v0.2.0 version
    - - - - -
    -

    This document describes a getting started guide for Jenkins Operator v0.1.1 and an additional configuration.

    - -
    - - -

    First Steps

    - -

    Prepare your Kubernetes cluster and set up access. -Once you have running Kubernetes cluster you can focus on installing Jenkins Operator according to the Installation guide.

    - -
    - - - - -
    - - - - -
    -
    - Deploy Jenkins -
    -

    Deploy production ready Jenkins Operator manifest -

    -
    - - - - - - - -
    -
    - Configuration -
    -

    How to configure Jenkins with Operator -

    -
    - - - - - -
    -
    - Customization -
    -

    How to customize Jenkins -

    -
    - - - - - - - -
    -
    - AKS -
    -

    Additional configuration for Azure Kubernetes Service -

    -
    - - - - - -
    -
    - Configure backup and restore -
    -

    Prevent loss of job history -

    -
    - - - - - - - - - - - - - - - - - - - -
    -
    - Diagnostics -
    -

    How to deal with jenkins-operator problems -

    -
    - - - - - -
    -
    - Scheme -
    -

    API Schema definitions for Jenkins CR -

    -
    - - - - - -
    -
    - Migration guide from v1alpha1 to v1alpha2 -
    -

    How to migrate to new CRD manifest -

    -
    - - - - - - - -
    - - - -
    Last modified August 5, 2019 -
    -
    - -
    -
    -
    - - - - -
    - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/docs/getting-started/v0.1.1/index.xml b/docs/docs/getting-started/v0.1.1/index.xml deleted file mode 100644 index ce567d82..00000000 --- a/docs/docs/getting-started/v0.1.1/index.xml +++ /dev/null @@ -1,2379 +0,0 @@ - - - Jenkins Operator – v0.1.1 - https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.1.1/ - Recent Hugo news from gohugo.io - Hugo -- gohugo.io - Mon, 05 Aug 2019 00:00:00 +0000 - - https://jenkinsci.github.io/kubernetes-operator/img/hugo.png - GoHugo.io - https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.1.1/ - - - - - - - - - - - - Docs: Deploy Jenkins - https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.1.1/deploy-jenkins/ - Mon, 05 Aug 2019 00:00:00 +0000 - - https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.1.1/deploy-jenkins/ - - - - - -<h2 id="deploy-jenkins">Deploy Jenkins</h2> - -<p>Once jenkins-operator is up and running let&rsquo;s deploy actual Jenkins instance. -Create manifest ie. <strong>jenkins_instance.yaml</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-bash" data-lang="bash">apiVersion: jenkins.io/v1alpha2 -kind: Jenkins -metadata: - name: example -spec: - master: - containers: - - name: jenkins-master - image: jenkins/jenkins:lts - imagePullPolicy: Always - livenessProbe: - failureThreshold: <span style="color:#0000cf;font-weight:bold">12</span> - httpGet: - path: /login - port: http - scheme: HTTP - initialDelaySeconds: <span style="color:#0000cf;font-weight:bold">80</span> - periodSeconds: <span style="color:#0000cf;font-weight:bold">10</span> - successThreshold: <span style="color:#0000cf;font-weight:bold">1</span> - timeoutSeconds: <span style="color:#0000cf;font-weight:bold">5</span> - readinessProbe: - failureThreshold: <span style="color:#0000cf;font-weight:bold">3</span> - httpGet: - path: /login - port: http - scheme: HTTP - initialDelaySeconds: <span style="color:#0000cf;font-weight:bold">30</span> - periodSeconds: <span style="color:#0000cf;font-weight:bold">10</span> - successThreshold: <span style="color:#0000cf;font-weight:bold">1</span> - timeoutSeconds: <span style="color:#0000cf;font-weight:bold">1</span> - resources: - limits: - cpu: 1500m - memory: 3Gi - requests: - cpu: <span style="color:#4e9a06">&#34;1&#34;</span> - memory: 500Mi - seedJobs: - - id: jenkins-operator - targets: <span style="color:#4e9a06">&#34;cicd/jobs/*.jenkins&#34;</span> - description: <span style="color:#4e9a06">&#34;Jenkins Operator repository&#34;</span> - repositoryBranch: master - repositoryUrl: https://github.com/jenkinsci/kubernetes-operator.git</code></pre></div> -<p>Deploy Jenkins to K8s:</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 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 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-&lt;cr_name&gt; -o <span style="color:#4e9a06">&#39;jsonpath={.data.user}&#39;</span> <span style="color:#000;font-weight:bold">|</span> base64 -d -kubectl get secret jenkins-operator-credentials-&lt;cr_name&gt; -o <span style="color:#4e9a06">&#39;jsonpath={.data.password}&#39;</span> <span style="color:#000;font-weight:bold">|</span> base64 -d</code></pre></div> -<p>Connect to Jenkins (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-&lt;cr_name&gt; --url</code></pre></div> -<p>Connect to Jenkins (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-&lt;cr_name&gt; <span style="color:#0000cf;font-weight:bold">8080</span>:8080</code></pre></div> -<p>Then open browser with address <code>http://localhost:8080</code>. -<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.1.1/configuration/ - Mon, 05 Aug 2019 00:00:00 +0000 - - https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.1.1/configuration/ - - - - - -<p>Jenkins operator uses <a href="https://github.com/jenkinsci/job-dsl-plugin" target="_blank">job-dsl</a> and <a href="https://jenkinsci.github.io/kubernetes-credentials-provider-plugin/" target="_blank">kubernetes-credentials-provider</a> plugins for configuring jobs -and deploy keys.</p> - -<h2 id="prepare-job-definitions-and-pipelines">Prepare job definitions and pipelines</h2> - -<p>First you have to prepare pipelines and job definition in your GitHub repository using the following structure:</p> - -<pre><code>cicd/ -├── jobs -│   └── build.jenkins -└── pipelines - └── build.jenkins -</code></pre> - -<p><strong>cicd/jobs/build.jenkins</strong> it&rsquo;s a job definition:</p> - -<pre><code>#!/usr/bin/env groovy - -pipelineJob('build-jenkins-operator') { - displayName('Build jenkins-operator') - - definition { - cpsScm { - scm { - git { - remote { - url('https://github.com/jenkinsci/kubernetes-operator.git') - credentials('jenkins-operator') - } - branches('*/master') - } - } - scriptPath('cicd/pipelines/build.jenkins') - } - } -} -</code></pre> - -<p><strong>cicd/jobs/build.jenkins</strong> it&rsquo;s an actual Jenkins pipeline:</p> - -<pre><code>#!/usr/bin/env groovy - -def label = &quot;build-jenkins-operator-${UUID.randomUUID().toString()}&quot; -def home = &quot;/home/jenkins&quot; -def workspace = &quot;${home}/workspace/build-jenkins-operator&quot; -def workdir = &quot;${workspace}/src/github.com/jenkinsci/kubernetes-operator/&quot; - -podTemplate(label: label, - containers: [ - containerTemplate(name: 'jnlp', image: 'jenkins/jnlp-slave:alpine'), - containerTemplate(name: 'go', image: 'golang:1-alpine', command: 'cat', ttyEnabled: true), - ], - envVars: [ - envVar(key: 'GOPATH', value: workspace), - ], - ) { - - node(label) { - dir(workdir) { - stage('Init') { - timeout(time: 3, unit: 'MINUTES') { - checkout scm - } - container('go') { - sh 'apk --no-cache --update add make git gcc libc-dev' - } - } - - stage('Dep') { - container('go') { - sh 'make dep' - } - } - - stage('Test') { - container('go') { - sh 'make test' - } - } - - stage('Build') { - container('go') { - sh 'make build' - } - } - } - } -} -</code></pre> - -<h2 id="configure-seed-jobs">Configure Seed Jobs</h2> - -<p>Jenkins Seed Jobs are configured using <code>Jenkins.spec.seedJobs</code> section from your custom resource manifest:</p> - -<pre><code>apiVersion: jenkins.io/v1alpha2 -kind: Jenkins -metadata: - name: example -spec: - seedJobs: - - id: jenkins-operator - targets: &quot;cicd/jobs/*.jenkins&quot; - description: &quot;Jenkins Operator repository&quot; - repositoryBranch: master - repositoryUrl: https://github.com/jenkinsci/kubernetes-operator.git -</code></pre> - -<p><strong>Jenkins Operator</strong> will automatically discover and configure all seed jobs.</p> - -<p>You can verify if deploy keys were successfully configured in Jenkins <strong>Credentials</strong> tab.</p> - -<p><img src="https://jenkinsci.github.io/kubernetes-operator/kubernetes-operator/img/jenkins-credentials.png" alt="jenkins" /></p> - -<p>You can verify if your pipelines were successfully configured in Jenkins Seed Job console output.</p> - -<p><img src="https://jenkinsci.github.io/kubernetes-operator/kubernetes-operator/img/jenkins-seed.png" alt="jenkins" /></p> - -<p>If your GitHub repository is <strong>private</strong> you have to configure SSH or username/password authentication.</p> - -<h3 id="ssh-authentication">SSH authentication</h3> - -<h4 id="generate-ssh-keys">Generate SSH Keys</h4> - -<p>There are two methods of SSH private key generation:</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">$ openssl genrsa -out &lt;filename&gt; <span style="color:#0000cf;font-weight:bold">2048</span></code></pre></div> -<p>or</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">$ ssh-keygen -t rsa -b <span style="color:#0000cf;font-weight:bold">2048</span> -$ ssh-keygen -p -f &lt;filename&gt; -m pem</code></pre></div> -<p>Then copy content from generated file.</p> - -<h4 id="public-key">Public key</h4> - -<p>If you want to upload your public key to your Git server you need to extract it.</p> - -<p>If key was generated by <code>openssl</code> then you need to type this to extract public key:</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">$ openssl rsa -in &lt;filename&gt; -pubout &gt; &lt;filename&gt;.pub</code></pre></div> -<p>If key was generated by <code>ssh-keygen</code> the public key content is located in <filename>.pub and there is no need to extract public key</p> - -<h4 id="configure-ssh-authentication">Configure SSH authentication</h4> - -<p>Configure seed job like:</p> - -<pre><code>apiVersion: jenkins.io/v1alpha2 -kind: Jenkins -metadata: - name: example -spec: - seedJobs: - - id: jenkins-operator-ssh - credentialType: basicSSHUserPrivateKey - credentialID: k8s-ssh - targets: &quot;cicd/jobs/*.jenkins&quot; - description: &quot;Jenkins Operator repository&quot; - repositoryBranch: master - repositoryUrl: git@github.com:jenkinsci/kubernetes-operator.git -</code></pre> - -<p>and create Kubernetes Secret(name of secret should be the same from <code>credentialID</code> field):</p> - -<pre><code>apiVersion: v1 -kind: Secret -metadata: - name: k8s-ssh -stringData: - privateKey: | - -----BEGIN RSA PRIVATE KEY----- - MIIJKAIBAAKCAgEAxxDpleJjMCN5nusfW/AtBAZhx8UVVlhhhIKXvQ+dFODQIdzO - oDXybs1zVHWOj31zqbbJnsfsVZ9Uf3p9k6xpJ3WFY9b85WasqTDN1xmSd6swD4N8 - ... - username: github_user_name -</code></pre> - -<h3 id="username-password-authentication">Username &amp; password authentication</h3> - -<p>Configure seed job like:</p> - -<pre><code>apiVersion: jenkins.io/v1alpha2 -kind: Jenkins -metadata: - name: example -spec: - seedJobs: - - id: jenkins-operator-user-pass - credentialType: usernamePassword - credentialID: k8s-user-pass - targets: &quot;cicd/jobs/*.jenkins&quot; - description: &quot;Jenkins Operator repository&quot; - repositoryBranch: master - repositoryUrl: https://github.com/jenkinsci/kubernetes-operator.git -</code></pre> - -<p>and create Kubernetes Secret(name of secret should be the same from <code>credentialID</code> field):</p> - -<pre><code>apiVersion: v1 -kind: Secret -metadata: - name: k8s-user-pass -stringData: - username: github_user_name - password: password_or_token -</code></pre> - -<h2 id="http-proxy-for-downloading-plugins">HTTP Proxy for downloading plugins</h2> - -<p>To use forwarding proxy with operator to downloading plugins you need to put environment var to Jenkins CR, for 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">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>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>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>CURL_OPTIONS<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>-L<span style="color:#f8f8f8;text-decoration:underline"> </span>-x<span style="color:#f8f8f8;text-decoration:underline"> </span>&lt;proxy_url&gt;</code></pre></div> -<p>In <code>CURL_OPTIONS</code> var you can set additional arguments to curl command.</p> - -<h2 id="jenkins-login-credentials">Jenkins login credentials</h2> - -<p>The operator automatically generate Jenkins user name and password and stores it in Kubernetes secret named -<code>jenkins-operator-credentials-&lt;cr_name&gt;</code> in namespace where Jenkins CR has been deployed.</p> - -<p>If you want change it you can override the secret:</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>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>Secret<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-credentials-&lt;cr-name<span style="color:#8f5902;font-style:italic">&gt; -</span><span style="color:#8f5902;font-style:italic"> namespace: &lt;namespace&gt;</span><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>user<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>&lt;base64-encoded-new-username<span style="color:#8f5902;font-style:italic">&gt; -</span><span style="color:#8f5902;font-style:italic"> password: &lt;base64-encoded-new-password&gt;</span></code></pre></div> -<p>If needed <strong>Jenkins Operator</strong> will restart Jenkins master pod and then you can login with the new user and password -credentials.</p> - -<h2 id="override-default-jenkins-container-command">Override default Jenkins container command</h2> - -<p>The default command for the Jenkins master container <code>jenkins/jenkins:lts</code> looks like:</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">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:#f8f8f8;text-decoration:underline"> </span>bash<span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"></span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>-c<span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"></span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>/var/jenkins/scripts/init.sh<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic">&amp;&amp;</span><span style="color:#f8f8f8;text-decoration:underline"> </span>/sbin/tini<span style="color:#f8f8f8;text-decoration:underline"> </span>-s<span style="color:#f8f8f8;text-decoration:underline"> </span>--<span style="color:#f8f8f8;text-decoration:underline"> </span>/usr/local/bin/jenkins.sh</code></pre></div> -<p>The script<code>/var/jenkins/scripts/init.sh</code> is provided be the operator and configures init.groovy.d(creates Jenkins user) -and installs plugins. -The <code>/sbin/tini -s -- /usr/local/bin/jenkins.sh</code> command runs the Jenkins master main process.</p> - -<p>You can overwrite it in the following pattern:</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">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:#f8f8f8;text-decoration:underline"> </span>bash<span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"></span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>-c<span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"></span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>/var/jenkins/scripts/init.sh<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic">&amp;&amp;</span><span style="color:#f8f8f8;text-decoration:underline"> </span>&lt;custom-code-here&gt;<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic">&amp;&amp;</span><span style="color:#f8f8f8;text-decoration:underline"> </span>/sbin/tini<span style="color:#f8f8f8;text-decoration:underline"> </span>-s<span style="color:#f8f8f8;text-decoration:underline"> </span>--<span style="color:#f8f8f8;text-decoration:underline"> </span>/usr/local/bin/jenkins.sh</code></pre></div> - - - - - Docs: Customization - https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.1.1/customization/ - Mon, 05 Aug 2019 00:00:00 +0000 - - https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.1.1/customization/ - - - - - -<p>Jenkins can be customized using groovy scripts or the configuration as code plugin. All custom configuration is stored in -the <strong>jenkins-operator-user-configuration-<cr_name></strong> ConfigMap which is automatically created by the <strong>Jenkins Operator</strong>.</p> - -<p>The <strong>Jenkins Operator</strong> creates a <strong>jenkins-operator-user-configuration-<cr_name></strong> secret where the user can store sensitive -information used for custom configuration. If you have an entry in the secret named <code>PASSWORD</code> then you can use it in the -Configuration as Plugin as <code>adminAddress: &quot;${PASSWORD}&quot;</code>.</p> - -<pre><code>kubectl get secret jenkins-operator-user-configuration-&lt;cr_name&gt; -o yaml - -kind: Secret -apiVersion: v1 -type: Opaque -metadata: - name: jenkins-operator-user-configuration-&lt;cr_name&gt; - namespace: default -data: - SECRET_JENKINS_ADMIN_ADDRESS: YXNkZgo= - -</code></pre> - -<pre><code>kubectl get configmap jenkins-operator-user-configuration-&lt;cr_name&gt; -o yaml - -apiVersion: v1 -data: - 1-configure-theme.groovy: |2 - import jenkins.* - import jenkins.model.* - import hudson.* - import hudson.model.* - import org.jenkinsci.plugins.simpletheme.ThemeElement - import org.jenkinsci.plugins.simpletheme.CssTextThemeElement - import org.jenkinsci.plugins.simpletheme.CssUrlThemeElement - - Jenkins jenkins = Jenkins.getInstance() - - def decorator = Jenkins.instance.getDescriptorByType(org.codefirst.SimpleThemeDecorator.class) - - List&lt;ThemeElement&gt; configElements = new ArrayList&lt;&gt;(); - configElements.add(new CssTextThemeElement(&quot;DEFAULT&quot;)); - configElements.add(new CssUrlThemeElement(&quot;https://cdn.rawgit.com/afonsof/jenkins-material-theme/gh-pages/dist/material-light-green.css&quot;)); - decorator.setElements(configElements); - decorator.save(); - - jenkins.save() - 1-system-message.yaml: |2 - jenkins: - systemMessage: &quot;Configuration as Code integration works!!!&quot; - adminAddress: &quot;${SECRET_JENKINS_ADMIN_ADDRESS}&quot; -kind: ConfigMap -metadata: - name: jenkins-operator-user-configuration-&lt;cr_name&gt; - namespace: default -</code></pre> - -<p>When the <strong>jenkins-operator-user-configuration-<cr_name></strong> ConfigMap is updated Jenkins automatically -runs the <strong>jenkins-operator-user-configuration</strong> Jenkins Job which executes all scripts then -runs the <strong>jenkins-operator-user-configuration-casc</strong> Jenkins Job which applies the Configuration as Code configuration.</p> - -<h2 id="install-plugins">Install Plugins</h2> - -<p>Edit CR under <code>spec.master.plugins</code>:</p> - -<pre><code>apiVersion: jenkins.io/v1alpha2 -kind: Jenkins -metadata: - name: example -spec: - master: - plugins: - - name: simple-theme-plugin - version: 0.5.1 -</code></pre> - -<p>Under <code>spec.master.basePlugins</code> you can find plugins for a valid <strong>Jenkins Operator</strong>:</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>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>basePlugins<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>kubernetes<span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1.18</span>.<span style="color:#0000cf;font-weight:bold">3</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>workflow-job<span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;2.34&#34;</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>workflow-aggregator<span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;2.6&#34;</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>git<span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">3.12</span>.<span style="color:#0000cf;font-weight:bold">0</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>job-dsl<span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;1.76&#34;</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>configuration-as-code<span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;1.29&#34;</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>configuration-as-code-support<span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;1.19&#34;</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>kubernetes-credentials-provider<span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">0.12</span>.<span style="color:#0000cf;font-weight:bold">1</span></code></pre></div> -<p>You can change their versions.</p> - -<p>Then the <strong>Jenkins Operator</strong> will automatically install those plugins after the Jenkins master pod restart.</p> - - - - - - Docs: AKS - https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.1.1/aks/ - Mon, 05 Aug 2019 00:00:00 +0000 - - https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.1.1/aks/ - - - - <p>Azure AKS managed Kubernetes service adds to every pod the following envs:</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>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>KUBERNETES_PORT_443_TCP_ADDR<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><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>KUBERNETES_PORT<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>tcp<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>KUBERNETES_PORT_443_TCP<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>tcp<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>KUBERNETES_SERVICE_HOST<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></code></pre></div> -<p>The operator is aware of it and omits these envs when checking if Jenkins pod envs have been changed. It prevents -restart Jenkins pod over and over again.</p> - - - - - - Docs: Configure backup and restore - https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.1.1/configure-backup-and-restore/ - Mon, 05 Aug 2019 00:00:00 +0000 - - https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.1.1/configure-backup-and-restore/ - - - - - -<p>Backup and restore is done by container sidecar.</p> - -<h4 id="create-pvc">Create PVC</h4> - -<p>Save to file pvc.yaml:</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>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>PersistentVolumeClaim<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>&lt;pvc_name<span style="color:#8f5902;font-style:italic">&gt; -</span><span style="color:#8f5902;font-style:italic"> namespace: &lt;namespace&gt;</span><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>accessModes<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>ReadWriteOnce<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>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>storage<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>500Gi</code></pre></div> -<p>Run command:</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 -n &lt;namespace&gt; create -f pvc.yaml</code></pre></div> -<h4 id="configure-jenkins-cr">Configure Jenkins CR</h4> -<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>&lt;cr_name<span style="color:#8f5902;font-style:italic">&gt; -</span><span style="color:#8f5902;font-style:italic"> namespace: &lt;namespace&gt;</span><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>securityContext<span style="color:#000;font-weight:bold">:</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>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>lts<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>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_DIR<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>/backup<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:#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_COUNT<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><span style="color:#4e9a06">&#34;3&#34;</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># keep only the 2 most recent backups</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>virtuslab/jenkins-operator-backup-pvc<span style="color:#000;font-weight:bold">:</span>v0.<span style="color:#0000cf;font-weight:bold">0.6</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># look at backup/pvc directory</span><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>IfNotPresent<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>/backup<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># backup 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>backup<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<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># PVC volume where backups will be stored</span><span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>persistentVolumeClaim<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>claimName<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>&lt;pvc_name<span style="color:#8f5902;font-style:italic">&gt; -</span><span style="color:#8f5902;font-style:italic"> backup:</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 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:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/backup.sh<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># this command is invoked on &#34;backup&#34; container to make backup, for example /home/user/bin/backup.sh &lt;backup_number&gt;, &lt;backup_number&gt; is passed by operator</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">30</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># how often make 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"># make backup before pod deletion</span><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:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/restore.sh<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># this command is invoked on &#34;backup&#34; container to make restore backup, for example /home/user/bin/restore.sh &lt;backup_number&gt;, &lt;backup_number&gt; 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">#recoveryOnce: &lt;backup_number&gt; # 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> - - - - - Docs: Diagnostics - https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.1.1/diagnostics/ - Mon, 05 Aug 2019 00:00:00 +0000 - - https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.1.1/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">&#39;s|\(args:\).*|\1\ [&#34;--debug&#34;\]|&#39;</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">&#39;{.lastTimestamp}&#39;</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-&lt;cr_name&gt;</code></pre></div> -<p>Verify jenkins-operator 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 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-&lt;cr_name&gt;</code></pre></div> - - - - - Docs: Scheme - https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.1.1/scheme/ - Mon, 05 Aug 2019 00:00:00 +0000 - - https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.1.1/scheme/ - - - - - -<div class="pageinfo pageinfo-primary"> -<p>This document contains API scheme for <code>jenkins-operator</code> manifest</p> - -</div> - - -<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.12/#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://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#configure-seed-jobs-and-pipelines">https://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#configure-seed-jobs-and-pipelines</a></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://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#configure-backup-and-restore">https://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#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://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#configure-backup-and-restore">https://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#configure-backup-and-restore</a></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.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.Build">Build -</h3> -<p> -(<em>Appears on:</em> -<a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.JenkinsStatus">JenkinsStatus</a>) -</p> -<p> -<p>Build defines Jenkins Build status with corresponding metadata</p> -</p> -<table> -<thead> -<tr> -<th>Field</th> -<th>Description</th> -</tr> -</thead> -<tbody> -<tr> -<td> -<code>jobName</code></br> -<em> -string -</em> -</td> -<td> -<p>JobName is the Jenkins job name</p> -</td> -</tr> -<tr> -<td> -<code>hash</code></br> -<em> -string -</em> -</td> -<td> -<p>Hash is the unique data identifier used in build</p> -</td> -</tr> -<tr> -<td> -<code>number</code></br> -<em> -int64 -</em> -</td> -<td> -<p>Number is the Jenkins build number</p> -</td> -</tr> -<tr> -<td> -<code>status</code></br> -<em> -<a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.BuildStatus"> -BuildStatus -</a> -</em> -</td> -<td> -<p>Status is the status of Jenkins build</p> -</td> -</tr> -<tr> -<td> -<code>retries</code></br> -<em> -int -</em> -</td> -<td> -<p>Retires is the amount of Jenkins job build retries</p> -</td> -</tr> -<tr> -<td> -<code>createTime</code></br> -<em> -<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.12/#time-v1-meta"> -Kubernetes meta/v1.Time -</a> -</em> -</td> -<td> -<p>CreateTime is the time when the first build has been created</p> -</td> -</tr> -<tr> -<td> -<code>lastUpdateTime</code></br> -<em> -<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.12/#time-v1-meta"> -Kubernetes meta/v1.Time -</a> -</em> -</td> -<td> -<p>LastUpdateTime is the last update status time</p> -</td> -</tr> -</tbody> -</table> -<h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.BuildStatus">BuildStatus -(<code>string</code> alias)</p></h3> -<p> -(<em>Appears on:</em> -<a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.Build">Build</a>) -</p> -<p> -<p>BuildStatus defines type of Jenkins build job status</p> -</p> -<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.12/#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.12/#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&rsquo;s ENTRYPOINT is used if this is not provided. -Variable references $(VAR_NAME) are expanded using the container&rsquo;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&rsquo;s CMD is used if this is not provided. -Variable references $(VAR_NAME) are expanded using the container&rsquo;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&rsquo;s working directory. -If not specified, the container runtime&rsquo;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.12/#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 &ldquo;0.0.0.0&rdquo; 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.12/#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.12/#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.12/#volumemount-v1-core"> -[]Kubernetes core/v1.VolumeMount -</a> -</em> -</td> -<td> -<em>(Optional)</em> -<p>Pod volumes to mount into the container&rsquo;s filesystem.</p> -</td> -</tr> -<tr> -<td> -<code>livenessProbe</code></br> -<em> -<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.12/#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.12/#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.12/#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.12/#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.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.12/#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.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.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>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></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&rsquo;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.12/#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> -<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: &ldquo;1&rdquo; -memory: 600Mi</p> -</td> -</tr> -<tr> -<td> -<code>volumes</code></br> -<em> -<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.12/#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>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> -<p>BasePlugins contains plugins required by operator -Defaults to : -- name: kubernetes -version: 1.15.7 -- name: workflow-job -version: &ldquo;2.32&rdquo; -- name: workflow-aggregator -version: &ldquo;2.6&rdquo; -- name: git -version: 3.10.0 -- name: job-dsl -version: &ldquo;1.74&rdquo; -- name: configuration-as-code -version: &ldquo;1.19&rdquo; -- name: configuration-as-code-support -version: &ldquo;1.19&rdquo; -- name: kubernetes-credentials-provider -version: 0.12.1</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> -</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://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#configure-seed-jobs-and-pipelines">https://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#configure-seed-jobs-and-pipelines</a></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://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#configure-backup-and-restore">https://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#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://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#configure-backup-and-restore">https://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#configure-backup-and-restore</a></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.12/#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.12/#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.12/#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>builds</code></br> -<em> -<a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Build"> -[][]github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Build -</a> -</em> -</td> -<td> -<em>(Optional)</em> -<p>Builds contains Jenkins builds statues</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> -</tbody> -</table> -<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> -</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>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.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://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#configure-seed-jobs-and-pipelines">https://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#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> -</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> -<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.12/#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. -&ldquo;ExternalName&rdquo; maps to the specified externalName. -&ldquo;ClusterIP&rdquo; 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 -&ldquo;None&rdquo;, no virtual IP is allocated and the endpoints are published as a -set of endpoints rather than a stable IP. -&ldquo;NodePort&rdquo; builds on ClusterIP and allocates a port on every node which -routes to the clusterIP. -&ldquo;LoadBalancer&rdquo; 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&mdash;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.&rdquo; -More info: <a href="https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/">https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/</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> -<hr/> -<p><em> -Generated with <code>gen-crd-api-reference-docs</code> -on git commit <code>37e531a</code>. -</em></p> - - - - - - Docs: Migration guide from v1alpha1 to v1alpha2 - https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.1.1/migration-guide-v1alpha1-to-v1alpha2/ - Mon, 05 Aug 2019 00:00:00 +0000 - - https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.1.1/migration-guide-v1alpha1-to-v1alpha2/ - - - - - -<p>Please not that <strong>CRD manifests are global</strong>, not namespaced, so every jenkins operator running on the cluster -will be impacted by the new CRD manifest. Multiple operator instances with different versions <em>should</em> continue to work.</p> - -<h2 id="stop-jenkins-operator-pod">Stop jenkins-operator pod</h2> - -<p>Run command:</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 -n &lt;namespace&gt; scale deployment.apps/jenkins-operator --replicas<span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#0000cf;font-weight:bold">0</span> -deployment.apps/jenkins-operator scaled</code></pre></div> -<p>Desired state:</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 -n &lt;namespace&gt; get po -No resources found.</code></pre></div> -<h2 id="stop-jenkins-master-pod">Stop Jenkins master pod</h2> - -<p>Run command:</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 -n &lt;namespace&gt; get po -NAME READY STATUS RESTARTS AGE -jenkins-operator-&lt;cr_name&gt; <span style="color:#0000cf;font-weight:bold">2</span>/2 Running <span style="color:#0000cf;font-weight:bold">0</span> 3m35s -$ kubectl -n &lt;namespace&gt; get delete po jenkins-operator-&lt;cr_name&gt; -pod <span style="color:#4e9a06">&#34;jenkins-operator-&lt;cr_name&gt;&#34;</span> deleted</code></pre></div> -<p>Desired state:</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 -n &lt;namespace&gt; get po -No resources found.</code></pre></div> -<h2 id="save-jenkins-cr-to-jenkins-yaml-file">Save Jenkins CR to jenkins.yaml file</h2> - -<p>Run command:</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 -n &lt;namespace&gt; get jenkins &lt;cr_name&gt; -o yaml &gt; jenkins.yaml</code></pre></div> -<h2 id="modify-jenkins-yaml-file">Modify jenkins.yaml file</h2> - -<p>Change apiVersion to <code>apiVersion: jenkins.io/v1alpha2</code></p> - -<p>New plugin format without dependent plugins:</p> - -<ul> -<li><p><code>spec.master.basePlugins</code> example:</p> - -<pre><code>spec: -master: -basePlugins: - - name: a-plugin-name - version: &quot;1.0.0&quot; - ... -</code></pre></li> - -<li><p><code>spec.master.plugins</code> example:</p> - -<pre><code> -spec: -master: -plugins: - - name: a-plugin-name - version: &quot;1.0.0&quot; -... -</code></pre></li> -</ul> - -<p>Move Jenkins <code>master</code> container properties to <code>spec.master.containers[jenkins-master]</code> (non exhaustive list): -- <code>spec.master.image</code> -&gt; <code>spec.master.containers[jenkins-master].image</code> -- <code>spec.master.imagePullPolicy</code> -&gt; <code>spec.master.containers[jenkins-master].imagePullPolicy</code> -- <code>spec.master.livenessProbe</code> -&gt; <code>spec.master.containers[jenkins-master].livenessProbe</code> -- <code>spec.master.readinessProbe</code> -&gt; <code>spec.master.containers[jenkins-master].readinessProbe</code> -- <code>spec.master.resources</code> -&gt; <code>spec.master.containers[jenkins-master].resources</code> -- <code>spec.master.env</code> -&gt; <code>spec.master.containers[jenkins-master].env</code></p> - -<pre><code>spec: - master: - containers: - - name: jenkins-master - image: jenkins/jenkins:lts - ... -</code></pre> - -<p>See also the examples bellow for more details. For even more details please look at the source code. -Code that defines the data structures can be found <a href="v0.1.1/jenkins-v1alpha2-scheme.md" target="_blank">here</a></p> - -<h3 id="examples">Examples</h3> - -<p>Old format:</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/v1alpha1<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>&lt;cr_name<span style="color:#8f5902;font-style:italic">&gt; -</span><span style="color:#8f5902;font-style:italic"> namespace: &lt;namespace&gt;</span><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>basePlugins<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>configuration-as-code<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1.17</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:#f8f8f8;text-decoration:underline"> </span>configuration-as-code-support<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1.17</span><span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>git<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">3.10</span>.<span style="color:#0000cf;font-weight:bold">0</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:#f8f8f8;text-decoration:underline"> </span>apache-httpcomponents-client-<span style="color:#0000cf;font-weight:bold">4</span>-api<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">4.5</span>.<span style="color:#0000cf;font-weight:bold">5</span>-<span style="color:#0000cf;font-weight:bold">3.0</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>credentials<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">2.1</span>.<span style="color:#0000cf;font-weight:bold">19</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>display-url-api<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">2.3</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>git-client<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">2.7</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>-<span style="color:#f8f8f8;text-decoration:underline"> </span>jsch<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">0.1</span>.<span style="color:#0000cf;font-weight:bold">55</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>junit<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1.28</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>mailer<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1.23</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>matrix-project<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1.14</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>scm-api<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">2.4</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>script-security<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1.59</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>ssh-credentials<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1.16</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>structs<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1.19</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>workflow-api<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">2.34</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>workflow-scm-step<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">2.7</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>workflow-step-api<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">2.19</span><span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>job-dsl<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1.74</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:#f8f8f8;text-decoration:underline"> </span>script-security<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1.59</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>structs<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1.19</span><span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>kubernetes-credentials-provider<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">0.12</span>.<span style="color:#0000cf;font-weight:bold">1</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:#f8f8f8;text-decoration:underline"> </span>credentials<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">2.1</span>.<span style="color:#0000cf;font-weight:bold">19</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>structs<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1.19</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>variant<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1.2</span><span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>kubernetes<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1.15</span>.<span style="color:#0000cf;font-weight:bold">5</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:#f8f8f8;text-decoration:underline"> </span>apache-httpcomponents-client-<span style="color:#0000cf;font-weight:bold">4</span>-api<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">4.5</span>.<span style="color:#0000cf;font-weight:bold">5</span>-<span style="color:#0000cf;font-weight:bold">3.0</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>cloudbees-folder<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">6.8</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>credentials<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">2.1</span>.<span style="color:#0000cf;font-weight:bold">19</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>durable-task<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1.29</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>jackson2-api<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">2.9</span>.<span style="color:#0000cf;font-weight:bold">9</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>kubernetes-credentials<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">0.4</span>.<span style="color:#0000cf;font-weight:bold">0</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>plain-credentials<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1.5</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>structs<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1.19</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>variant<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1.2</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>workflow-step-api<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">2.19</span><span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>workflow-aggregator<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">2.6</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:#f8f8f8;text-decoration:underline"> </span>ace-editor<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1.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>apache-httpcomponents-client-<span style="color:#0000cf;font-weight:bold">4</span>-api<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">4.5</span>.<span style="color:#0000cf;font-weight:bold">5</span>-<span style="color:#0000cf;font-weight:bold">3.0</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>authentication-tokens<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1.3</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>branch-api<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">2.5</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>-<span style="color:#f8f8f8;text-decoration:underline"> </span>cloudbees-folder<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">6.8</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>credentials-binding<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1.18</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>credentials<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">2.1</span>.<span style="color:#0000cf;font-weight:bold">19</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>display-url-api<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">2.3</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>docker-commons<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1.15</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>docker-workflow<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1.18</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>durable-task<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1.29</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>git-client<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">2.7</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>-<span style="color:#f8f8f8;text-decoration:underline"> </span>git-server<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1.7</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>handlebars<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1.1</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>jackson2-api<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">2.9</span>.<span style="color:#0000cf;font-weight:bold">9</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>jquery-detached<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1.2</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>jsch<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">0.1</span>.<span style="color:#0000cf;font-weight:bold">55</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>junit<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1.28</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>lockable-resources<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">2.5</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>mailer<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1.23</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>matrix-project<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1.14</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>momentjs<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1.1</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>pipeline-build-step<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">2.9</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>pipeline-graph-analysis<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1.10</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>pipeline-input-step<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">2.10</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>pipeline-milestone-step<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1.3</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>pipeline-model-api<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1.3</span>.<span style="color:#0000cf;font-weight:bold">8</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>pipeline-model-declarative-agent<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1.1</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>pipeline-model-definition<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1.3</span>.<span style="color:#0000cf;font-weight:bold">8</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>pipeline-model-extensions<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1.3</span>.<span style="color:#0000cf;font-weight:bold">8</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>pipeline-rest-api<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">2.11</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>pipeline-stage-step<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">2.3</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>pipeline-stage-tags-metadata<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1.3</span>.<span style="color:#0000cf;font-weight:bold">8</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>pipeline-stage-view<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">2.11</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>plain-credentials<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1.5</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>scm-api<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">2.4</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>script-security<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1.59</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>ssh-credentials<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1.16</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>structs<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1.19</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>workflow-api<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">2.34</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>workflow-basic-steps<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">2.16</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>workflow-cps-global-lib<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">2.13</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>workflow-cps<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">2.69</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>workflow-durable-task-step<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">2.30</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>workflow-job<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">2.32</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>workflow-multibranch<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">2.21</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>workflow-scm-step<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">2.7</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>workflow-step-api<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">2.19</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>workflow-support<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">3.3</span><span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>workflow-job<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">2.32</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:#f8f8f8;text-decoration:underline"> </span>scm-api<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">2.4</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>script-security<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1.59</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>structs<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1.19</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>workflow-api<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">2.34</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>workflow-step-api<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">2.19</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>workflow-support<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">3.3</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>jenkins/jenkins<span style="color:#000;font-weight:bold">:</span>lts<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><span style="color:#0000cf;font-weight:bold">8080</span><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">30</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>plugins<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>simple-theme-plugin<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">0.5</span>.<span style="color:#0000cf;font-weight:bold">1</span><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:#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:#0000cf;font-weight:bold">2.24</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:#f8f8f8;text-decoration:underline"> </span>workflow-step-api<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">2.19</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>credentials<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">2.1</span>.<span style="color:#0000cf;font-weight:bold">19</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>display-url-api<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">2.3</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>junit<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1.28</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>plain-credentials<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1.5</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>script-security<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1.59</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>structs<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1.19</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>token-macro<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">2.8</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">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><span style="color:#0000cf;font-weight:bold">8080</span><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">30</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>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">&#34;1&#34;</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</code></pre></div> -<p>New format:</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>&lt;cr_name<span style="color:#8f5902;font-style:italic">&gt; -</span><span style="color:#8f5902;font-style:italic"> namespace: &lt;namespace&gt;</span><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>basePlugins<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>kubernetes<span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1.15</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>-<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>workflow-job<span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;2.32&#34;</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>workflow-aggregator<span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;2.6&#34;</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>git<span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">3.10</span>.<span style="color:#0000cf;font-weight:bold">0</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>job-dsl<span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;1.74&#34;</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>configuration-as-code<span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;1.19&#34;</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>configuration-as-code-support<span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;1.19&#34;</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>kubernetes-credentials-provider<span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">0.12</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>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>lts<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">30</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">3</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">30</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">&#34;1&#34;</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>plugins<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>simple-theme-plugin<span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">0.5</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>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>slack<span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">2.24</span></code></pre></div> -<h2 id="update-crd-to-new-version">Update CRD to new version</h2> - -<p>New version of the Custom Resource definition for the operator needs to be applied: --<a href="https://github.com/jenkinsci/kubernetes-operator/blob/master/deploy/crds/jenkins_v1alpha2_jenkins_crd.yaml" target="_blank">Jenkins CRD v1alpha2</a></p> - -<p>To use default CRD file:</p> - -<pre><code>kubectl -n &lt;namespace&gt; apply -f https://github.com/jenkinsci/kubernetes-operator/blob/master/deploy/crds/jenkins_v1alpha2_jenkins_crd.yaml -</code></pre> - -<h2 id="update-rbac-to-new-version">Update RBAC to new version</h2> - -<p>New operator version requires updated RBAC permissions:</p> - -<p>To use default Role file:</p> - -<pre><code>$ kubectl -n &lt;namespace&gt; apply -f https://raw.githubusercontent.com/jenkinsci/kubernetes-operator/master/deploy/role.yaml -</code></pre> - -<h2 id="deploy-new-operator-manifests">Deploy new operator manifests</h2> - -<p>Replace your modified operator configuration file:</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 -n &lt;namespace&gt; replace -f jenkins.yaml</code></pre></div> -<p>Update operator version in the deployment file to <code>image: virtuslab/jenkins-operator:v0.1.0</code> and scale up, -or use the default deployment manifest:</p> - -<pre><code>$ kubectl -n &lt;namespace&gt; apply -f https://raw.githubusercontent.com/jenkinsci/kubernetes-operator/master/deploy/operator.yaml -</code></pre> - - - - - - \ No newline at end of file diff --git a/docs/docs/getting-started/v0.1.1/migration-guide-v1alpha1-to-v1alpha2/index.html b/docs/docs/getting-started/v0.1.1/migration-guide-v1alpha1-to-v1alpha2/index.html deleted file mode 100644 index ec7c76ec..00000000 --- a/docs/docs/getting-started/v0.1.1/migration-guide-v1alpha1-to-v1alpha2/index.html +++ /dev/null @@ -1,815 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - -Migration guide from v1alpha1 to v1alpha2 | Jenkins Operator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Migration guide from v1alpha1 to v1alpha2 | Jenkins Operator - - -
    - - - -
    -
    -
    -
    -
    - - - - - -
    - - - - - - - - - -
    - - - - -
    -
    - - - -
    -

    Migration guide from v1alpha1 to v1alpha2

    -
    How to migrate to new CRD manifest
    - - -

    Please not that CRD manifests are global, not namespaced, so every jenkins operator running on the cluster -will be impacted by the new CRD manifest. Multiple operator instances with different versions should continue to work.

    - -

    Stop jenkins-operator pod

    - -

    Run command:

    -
    $ kubectl -n <namespace> scale deployment.apps/jenkins-operator --replicas=0
    -deployment.apps/jenkins-operator scaled
    -

    Desired state:

    -
    $ kubectl -n <namespace> get po
    -No resources found.
    -

    Stop Jenkins master pod

    - -

    Run command:

    -
    $ kubectl -n <namespace> get po
    -NAME                       READY     STATUS        RESTARTS   AGE
    -jenkins-operator-<cr_name>   2/2       Running       0          3m35s
    -$ kubectl -n <namespace> get delete po jenkins-operator-<cr_name>
    -pod "jenkins-operator-<cr_name>" deleted
    -

    Desired state:

    -
    $ kubectl -n <namespace> get po
    -No resources found.
    -

    Save Jenkins CR to jenkins.yaml file

    - -

    Run command:

    -
    $ kubectl -n <namespace> get jenkins <cr_name> -o yaml > jenkins.yaml
    -

    Modify jenkins.yaml file

    - -

    Change apiVersion to apiVersion: jenkins.io/v1alpha2

    - -

    New plugin format without dependent plugins:

    - -
      -
    • spec.master.basePlugins example:

      - -
      spec:
      -master:
      -basePlugins:
      -  - name: a-plugin-name
      -    version: "1.0.0"
      -  ...
      -
    • - -
    • spec.master.plugins example:

      - -
      
      -spec:
      -master:
      -plugins:
      -  - name: a-plugin-name
      -     version: "1.0.0"
      -...
      -
    • -
    - -

    Move Jenkins master container properties to spec.master.containers[jenkins-master] (non exhaustive list): -- spec.master.image -> spec.master.containers[jenkins-master].image -- spec.master.imagePullPolicy -> spec.master.containers[jenkins-master].imagePullPolicy -- spec.master.livenessProbe -> spec.master.containers[jenkins-master].livenessProbe -- spec.master.readinessProbe -> spec.master.containers[jenkins-master].readinessProbe -- spec.master.resources -> spec.master.containers[jenkins-master].resources -- spec.master.env -> spec.master.containers[jenkins-master].env

    - -
    spec:
    -  master:
    -    containers:
    -      - name: jenkins-master
    -        image: jenkins/jenkins:lts
    -      ...
    -
    - -

    See also the examples bellow for more details. For even more details please look at the source code. -Code that defines the data structures can be found here

    - -

    Examples

    - -

    Old format:

    -
    apiVersion: jenkins.io/v1alpha1
    -kind: Jenkins
    -metadata:
    -  name: <cr_name>
    -  namespace: <namespace>
    -spec:
    -  master:
    -    basePlugins:
    -      configuration-as-code:1.17:
    -      - configuration-as-code-support:1.17
    -      git:3.10.0:
    -      - apache-httpcomponents-client-4-api:4.5.5-3.0
    -      - credentials:2.1.19
    -      - display-url-api:2.3.1
    -      - git-client:2.7.7
    -      - jsch:0.1.55
    -      - junit:1.28
    -      - mailer:1.23
    -      - matrix-project:1.14
    -      - scm-api:2.4.1
    -      - script-security:1.59
    -      - ssh-credentials:1.16
    -      - structs:1.19
    -      - workflow-api:2.34
    -      - workflow-scm-step:2.7
    -      - workflow-step-api:2.19
    -      job-dsl:1.74:
    -      - script-security:1.59
    -      - structs:1.19
    -      kubernetes-credentials-provider:0.12.1:
    -      - credentials:2.1.19
    -      - structs:1.19
    -      - variant:1.2
    -      kubernetes:1.15.5:
    -      - apache-httpcomponents-client-4-api:4.5.5-3.0
    -      - cloudbees-folder:6.8
    -      - credentials:2.1.19
    -      - durable-task:1.29
    -      - jackson2-api:2.9.9
    -      - kubernetes-credentials:0.4.0
    -      - plain-credentials:1.5
    -      - structs:1.19
    -      - variant:1.2
    -      - workflow-step-api:2.19
    -      workflow-aggregator:2.6:
    -      - ace-editor:1.1
    -      - apache-httpcomponents-client-4-api:4.5.5-3.0
    -      - authentication-tokens:1.3
    -      - branch-api:2.5.2
    -      - cloudbees-folder:6.8
    -      - credentials-binding:1.18
    -      - credentials:2.1.19
    -      - display-url-api:2.3.1
    -      - docker-commons:1.15
    -      - docker-workflow:1.18
    -      - durable-task:1.29
    -      - git-client:2.7.7
    -      - git-server:1.7
    -      - handlebars:1.1.1
    -      - jackson2-api:2.9.9
    -      - jquery-detached:1.2.1
    -      - jsch:0.1.55
    -      - junit:1.28
    -      - lockable-resources:2.5
    -      - mailer:1.23
    -      - matrix-project:1.14
    -      - momentjs:1.1.1
    -      - pipeline-build-step:2.9
    -      - pipeline-graph-analysis:1.10
    -      - pipeline-input-step:2.10
    -      - pipeline-milestone-step:1.3.1
    -      - pipeline-model-api:1.3.8
    -      - pipeline-model-declarative-agent:1.1.1
    -      - pipeline-model-definition:1.3.8
    -      - pipeline-model-extensions:1.3.8
    -      - pipeline-rest-api:2.11
    -      - pipeline-stage-step:2.3
    -      - pipeline-stage-tags-metadata:1.3.8
    -      - pipeline-stage-view:2.11
    -      - plain-credentials:1.5
    -      - scm-api:2.4.1
    -      - script-security:1.59
    -      - ssh-credentials:1.16
    -      - structs:1.19
    -      - workflow-api:2.34
    -      - workflow-basic-steps:2.16
    -      - workflow-cps-global-lib:2.13
    -      - workflow-cps:2.69
    -      - workflow-durable-task-step:2.30
    -      - workflow-job:2.32
    -      - workflow-multibranch:2.21
    -      - workflow-scm-step:2.7
    -      - workflow-step-api:2.19
    -      - workflow-support:3.3
    -      workflow-job:2.32:
    -      - scm-api:2.4.1
    -      - script-security:1.59
    -      - structs:1.19
    -      - workflow-api:2.34
    -      - workflow-step-api:2.19
    -      - workflow-support:3.3
    -    image: jenkins/jenkins:lts
    -    imagePullPolicy: Always
    -    livenessProbe:
    -      failureThreshold: 12
    -      httpGet:
    -        path: /login
    -        port: 8080
    -        scheme: HTTP
    -      initialDelaySeconds: 30
    -      periodSeconds: 10
    -      successThreshold: 1
    -      timeoutSeconds: 5
    -    plugins:
    -      simple-theme-plugin:0.5.1: []
    -      slack:2.24:
    -      - workflow-step-api:2.19
    -      - credentials:2.1.19
    -      - display-url-api:2.3.1
    -      - junit:1.28
    -      - plain-credentials:1.5
    -      - script-security:1.59
    -      - structs:1.19
    -      - token-macro:2.8
    -    readinessProbe:
    -      failureThreshold: 12
    -      httpGet:
    -        path: /login
    -        port: 8080
    -        scheme: HTTP
    -      initialDelaySeconds: 30
    -      periodSeconds: 10
    -      successThreshold: 1
    -      timeoutSeconds: 5
    -    resources:
    -      limits:
    -        cpu: 1500m
    -        memory: 3Gi
    -      requests:
    -        cpu: "1"
    -        memory: 500Mi
    -

    New format:

    -
    apiVersion: jenkins.io/v1alpha2
    -kind: Jenkins
    -metadata:
    -  name: <cr_name>
    -  namespace: <namespace>
    -spec:
    -  master:
    -    basePlugins:
    -    - name: kubernetes
    -      version: 1.15.7
    -    - name: workflow-job
    -      version: "2.32"
    -    - name: workflow-aggregator
    -      version: "2.6"
    -    - name: git
    -      version: 3.10.0
    -    - name: job-dsl
    -      version: "1.74"
    -    - name: configuration-as-code
    -      version: "1.19"
    -    - name: configuration-as-code-support
    -      version: "1.19"
    -    - name: kubernetes-credentials-provider
    -      version: 0.12.1
    -    containers:
    -    - name: jenkins-master
    -      image: jenkins/jenkins:lts
    -      imagePullPolicy: Always
    -      livenessProbe:
    -        failureThreshold: 12
    -        httpGet:
    -          path: /login
    -          port: http
    -          scheme: HTTP
    -        initialDelaySeconds: 30
    -        periodSeconds: 10
    -        successThreshold: 1
    -        timeoutSeconds: 5
    -      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: 500Mi
    -    plugins:
    -    - name: simple-theme-plugin
    -      version: 0.5.1
    -    - name: slack
    -      version: 2.24
    -

    Update CRD to new version

    - -

    New version of the Custom Resource definition for the operator needs to be applied: --Jenkins CRD v1alpha2

    - -

    To use default CRD file:

    - -
    kubectl -n <namespace> apply -f https://github.com/jenkinsci/kubernetes-operator/blob/master/deploy/crds/jenkins_v1alpha2_jenkins_crd.yaml
    -
    - -

    Update RBAC to new version

    - -

    New operator version requires updated RBAC permissions:

    - -

    To use default Role file:

    - -
    $ kubectl -n <namespace> apply -f https://raw.githubusercontent.com/jenkinsci/kubernetes-operator/master/deploy/role.yaml
    -
    - -

    Deploy new operator manifests

    - -

    Replace your modified operator configuration file:

    -
    $ kubectl -n <namespace> replace -f jenkins.yaml
    -

    Update operator version in the deployment file to image: virtuslab/jenkins-operator:v0.1.0 and scale up, -or use the default deployment manifest:

    - -
    $ kubectl -n <namespace> apply -f https://raw.githubusercontent.com/jenkinsci/kubernetes-operator/master/deploy/operator.yaml
    -
    - - - -
    Last modified August 5, 2019 -
    -
    - - -
    -
    -
    - - - - -
    - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/docs/getting-started/v0.1.1/scheme/index.html b/docs/docs/getting-started/v0.1.1/scheme/index.html deleted file mode 100644 index 5853e28d..00000000 --- a/docs/docs/getting-started/v0.1.1/scheme/index.html +++ /dev/null @@ -1,1945 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - -Scheme | Jenkins Operator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Scheme | Jenkins Operator - - -
    - - - -
    -
    -
    -
    -
    - - - - - -
    - - - - - - - - - -
    - - - - -
    -
    - - - -
    -

    Scheme

    -
    API Schema definitions for Jenkins CR
    - - -
    -

    This document contains API scheme for jenkins-operator manifest

    - -
    - - -

    Packages:

    - -

    jenkins.io

    -

    -

    Package v1alpha2 contains API Schema definitions for the jenkins.io v1alpha2 API group

    -

    -Resource Types: - -

    Jenkins -

    -

    -

    Jenkins is the Schema for the jenkins API

    -

    -
    (Optional) -

    UserAndPasswordHash is a SHA256 hash made from user and password

    +

    UserAndPasswordHash is a SHA256 hash made from the username and password

    (Optional) -

    CreatedSeedJobs contains list of seed job id already created in Jenkins

    +

    CreatedSeedJobs contains list of seed job ids already created in Jenkins

    -

    Targets is the repository path where are seed job definitions

    +

    Targets is the repository path where the seed job definitions are

    -

    RepositoryBranch is the repository branch where are seed job definitions

    +

    RepositoryBranch is the repository branch where the seed job definitions are

    -

    The port that are exposed by this service. +

    The port that is exposed by this service. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    -apiVersion
    -string
    - -jenkins.io/v1alpha2 - -
    -kind
    -string -
    Jenkins
    -metadata
    - - -Kubernetes meta/v1.ObjectMeta - - -
    -Refer to the Kubernetes API documentation for the fields of the -metadata field. -
    -spec
    - - -JenkinsSpec - - -
    -

    Spec defines the desired state of the Jenkins

    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - -
    -master
    - - -JenkinsMaster - - -
    -

    Master represents Jenkins master pod properties and Jenkins plugins. -Every single change here requires a pod restart.

    -
    -seedJobs
    - - -[][]github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.SeedJob - - -
    -(Optional) -

    SeedJobs defines list of Jenkins Seed Job configurations -More info: https://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#configure-seed-jobs-and-pipelines

    -
    -service
    - - -Service - - -
    -(Optional) -

    Service is Kubernetes service of Jenkins master HTTP pod -Defaults to : -port: 8080 -type: ClusterIP

    -
    -slaveService
    - - -Service - - -
    -(Optional) -

    Service is Kubernetes service of Jenkins slave pods -Defaults to : -port: 50000 -type: ClusterIP

    -
    -backup
    - - -Backup - - -
    -(Optional) -

    Backup defines configuration of Jenkins backup -More info: https://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#configure-backup-and-restore

    -
    -restore
    - - -Restore - - -
    -(Optional) -

    Backup defines configuration of Jenkins backup restore -More info: https://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#configure-backup-and-restore

    -
    -
    -status
    - - -JenkinsStatus - - -
    -

    Status defines the observed state of Jenkins

    -
    -

    Backup -

    -

    -(Appears on: -JenkinsSpec) -

    -

    -

    Backup defines configuration of Jenkins backup

    -

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    -containerName
    - -string - -
    -

    ContainerName is the container name responsible for backup operation

    -
    -action
    - - -Handler - - -
    -

    Action defines action which performs backup in backup container sidecar

    -
    -interval
    - -uint64 - -
    -

    Interval tells how often make backup in seconds -Defaults to 30.

    -
    -makeBackupBeforePodDeletion
    - -bool - -
    -

    MakeBackupBeforePodDeletion tells operator to make backup before Jenkins master pod deletion

    -
    -

    Build -

    -

    -(Appears on: -JenkinsStatus) -

    -

    -

    Build defines Jenkins Build status with corresponding metadata

    -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    -jobName
    - -string - -
    -

    JobName is the Jenkins job name

    -
    -hash
    - -string - -
    -

    Hash is the unique data identifier used in build

    -
    -number
    - -int64 - -
    -

    Number is the Jenkins build number

    -
    -status
    - - -BuildStatus - - -
    -

    Status is the status of Jenkins build

    -
    -retries
    - -int - -
    -

    Retires is the amount of Jenkins job build retries

    -
    -createTime
    - - -Kubernetes meta/v1.Time - - -
    -

    CreateTime is the time when the first build has been created

    -
    -lastUpdateTime
    - - -Kubernetes meta/v1.Time - - -
    -

    LastUpdateTime is the last update status time

    -
    -

    BuildStatus -(string alias)

    -

    -(Appears on: -Build) -

    -

    -

    BuildStatus defines type of Jenkins build job status

    -

    -

    Container -

    -

    -(Appears on: -JenkinsMaster) -

    -

    -

    Container defines Kubernetes container attributes

    -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    -name
    - -string - -
    -

    Name of the container specified as a DNS_LABEL. -Each container in a pod must have a unique name (DNS_LABEL).

    -
    -image
    - -string - -
    -

    Docker image name. -More info: https://kubernetes.io/docs/concepts/containers/images

    -
    -imagePullPolicy
    - - -Kubernetes core/v1.PullPolicy - - -
    -

    Image pull policy. -One of Always, Never, IfNotPresent. -Defaults to Always.

    -
    -resources
    - - -Kubernetes core/v1.ResourceRequirements - - -
    -

    Compute Resources required by this container. -More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/

    -
    -command
    - -[]string - -
    -(Optional) -

    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: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell

    -
    -args
    - -[]string - -
    -(Optional) -

    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: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell

    -
    -workingDir
    - -string - -
    -(Optional) -

    Container’s working directory. -If not specified, the container runtime’s default will be used, which -might be configured in the container image.

    -
    -ports
    - - -[]Kubernetes core/v1.ContainerPort - - -
    -(Optional) -

    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.

    -
    -envFrom
    - - -[]Kubernetes core/v1.EnvFromSource - - -
    -(Optional) -

    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.

    -
    -env
    - - -[]Kubernetes core/v1.EnvVar - - -
    -(Optional) -

    List of environment variables to set in the container.

    -
    -volumeMounts
    - - -[]Kubernetes core/v1.VolumeMount - - -
    -(Optional) -

    Pod volumes to mount into the container’s filesystem.

    -
    -livenessProbe
    - - -Kubernetes core/v1.Probe - - -
    -(Optional) -

    Periodic probe of container liveness. -Container will be restarted if the probe fails.

    -
    -readinessProbe
    - - -Kubernetes core/v1.Probe - - -
    -(Optional) -

    Periodic probe of container service readiness. -Container will be removed from service endpoints if the probe fails.

    -
    -lifecycle
    - - -Kubernetes core/v1.Lifecycle - - -
    -(Optional) -

    Actions that the management system should take in response to container lifecycle events.

    -
    -securityContext
    - - -Kubernetes core/v1.SecurityContext - - -
    -(Optional) -

    Security options the pod should run with. -More info: https://kubernetes.io/docs/concepts/policy/security-context/ -More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/

    -
    -

    Handler -

    -

    -(Appears on: -Backup, -Restore) -

    -

    -

    Handler defines a specific action that should be taken

    -

    - - - - - - - - - - - - - -
    FieldDescription
    -exec
    - - -Kubernetes core/v1.ExecAction - - -
    -

    Exec specifies the action to take.

    -
    -

    JenkinsCredentialType -(string alias)

    -

    -(Appears on: -SeedJob) -

    -

    -

    JenkinsCredentialType defines type of Jenkins credential used to seed job mechanism

    -

    -

    JenkinsMaster -

    -

    -(Appears on: -JenkinsSpec) -

    -

    -

    JenkinsMaster defines the Jenkins master pod attributes and plugins, -every single change requires a Jenkins master pod restart

    -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    -masterAnnotations
    - -map[string]string - -
    -(Optional) -

    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: http://kubernetes.io/docs/user-guide/annotations

    -
    -nodeSelector
    - -map[string]string - -
    -(Optional) -

    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: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/

    -
    -securityContext
    - - -Kubernetes core/v1.PodSecurityContext - - -
    -(Optional) -

    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

    -
    -containers
    - - -[][]github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Container - - -
    -

    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

    -
    -volumes
    - - -[]Kubernetes core/v1.Volume - - -
    -(Optional) -

    List of volumes that can be mounted by containers belonging to the pod. -More info: https://kubernetes.io/docs/concepts/storage/volumes

    -
    -basePlugins
    - - -[][]github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Plugin - - -
    -

    BasePlugins contains plugins required by operator -Defaults to : -- name: kubernetes -version: 1.15.7 -- name: workflow-job -version: “2.32” -- name: workflow-aggregator -version: “2.6” -- name: git -version: 3.10.0 -- name: job-dsl -version: “1.74” -- name: configuration-as-code -version: “1.19” -- name: configuration-as-code-support -version: “1.19” -- name: kubernetes-credentials-provider -version: 0.12.1

    -
    -plugins
    - - -[][]github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Plugin - - -
    -(Optional) -

    Plugins contains plugins required by user

    -
    -

    JenkinsSpec -

    -

    -(Appears on: -Jenkins) -

    -

    -

    JenkinsSpec defines the desired state of the Jenkins

    -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    -master
    - - -JenkinsMaster - - -
    -

    Master represents Jenkins master pod properties and Jenkins plugins. -Every single change here requires a pod restart.

    -
    -seedJobs
    - - -[][]github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.SeedJob - - -
    -(Optional) -

    SeedJobs defines list of Jenkins Seed Job configurations -More info: https://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#configure-seed-jobs-and-pipelines

    -
    -service
    - - -Service - - -
    -(Optional) -

    Service is Kubernetes service of Jenkins master HTTP pod -Defaults to : -port: 8080 -type: ClusterIP

    -
    -slaveService
    - - -Service - - -
    -(Optional) -

    Service is Kubernetes service of Jenkins slave pods -Defaults to : -port: 50000 -type: ClusterIP

    -
    -backup
    - - -Backup - - -
    -(Optional) -

    Backup defines configuration of Jenkins backup -More info: https://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#configure-backup-and-restore

    -
    -restore
    - - -Restore - - -
    -(Optional) -

    Backup defines configuration of Jenkins backup restore -More info: https://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#configure-backup-and-restore

    -
    -

    JenkinsStatus -

    -

    -(Appears on: -Jenkins) -

    -

    -

    JenkinsStatus defines the observed state of Jenkins

    -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    -operatorVersion
    - -string - -
    -(Optional) -

    OperatorVersion is the operator version which manages this CR

    -
    -provisionStartTime
    - - -Kubernetes meta/v1.Time - - -
    -(Optional) -

    ProvisionStartTime is a time when Jenkins master pod has been created

    -
    -baseConfigurationCompletedTime
    - - -Kubernetes meta/v1.Time - - -
    -(Optional) -

    BaseConfigurationCompletedTime is a time when Jenkins base configuration phase has been completed

    -
    -userConfigurationCompletedTime
    - - -Kubernetes meta/v1.Time - - -
    -(Optional) -

    UserConfigurationCompletedTime is a time when Jenkins user configuration phase has been completed

    -
    -builds
    - - -[][]github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Build - - -
    -(Optional) -

    Builds contains Jenkins builds statues

    -
    -restoredBackup
    - -uint64 - -
    -(Optional) -

    RestoredBackup is the restored backup number after Jenkins master pod restart

    -
    -lastBackup
    - -uint64 - -
    -(Optional) -

    LastBackup is the latest backup number

    -
    -pendingBackup
    - -uint64 - -
    -(Optional) -

    PendingBackup is the pending backup number

    -
    -backupDoneBeforePodDeletion
    - -bool - -
    -(Optional) -

    BackupDoneBeforePodDeletion tells if backup before pod deletion has been made

    -
    -userAndPasswordHash
    - -string - -
    -(Optional) -

    UserAndPasswordHash is a SHA256 hash made from user and password

    -
    -createdSeedJobs
    - -[]string - -
    -(Optional) -

    CreatedSeedJobs contains list of seed job id already created in Jenkins

    -
    -

    Plugin -

    -

    -(Appears on: -JenkinsMaster) -

    -

    -

    Plugin defines Jenkins plugin

    -

    - - - - - - - - - - - - - - - - - -
    FieldDescription
    -name
    - -string - -
    -

    Name is the name of Jenkins plugin

    -
    -version
    - -string - -
    -

    Version is the version of Jenkins plugin

    -
    -

    Restore -

    -

    -(Appears on: -JenkinsSpec) -

    -

    -

    Restore defines configuration of Jenkins backup restore operation

    -

    - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    -containerName
    - -string - -
    -

    ContainerName is the container name responsible for restore backup operation

    -
    -action
    - - -Handler - - -
    -

    Action defines action which performs restore backup in restore container sidecar

    -
    -recoveryOnce
    - -uint64 - -
    -(Optional) -

    RecoveryOnce if want to restore specific backup set this field and then Jenkins will be restarted and desired backup will be restored

    -
    -

    SeedJob -

    -

    -(Appears on: -JenkinsSpec) -

    -

    -

    SeedJob defines configuration for seed job -More info: https://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#configure-seed-jobs-and-pipelines

    -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    -id
    - -string - -
    -

    ID is the unique seed job name

    -
    -credentialID
    - -string - -
    -

    CredentialID is the Kubernetes secret name which stores repository access credentials

    -
    -description
    - -string - -
    -(Optional) -

    Description is the description of the seed job

    -
    -targets
    - -string - -
    -

    Targets is the repository path where are seed job definitions

    -
    -repositoryBranch
    - -string - -
    -

    RepositoryBranch is the repository branch where are seed job definitions

    -
    -repositoryUrl
    - -string - -
    -

    RepositoryURL is the repository access URL. Can be SSH or HTTPS.

    -
    -credentialType
    - - -JenkinsCredentialType - - -
    -(Optional) -

    JenkinsCredentialType is the https://jenkinsci.github.io/kubernetes-credentials-provider-plugin/ credential type

    -
    -

    Service -

    -

    -(Appears on: -JenkinsSpec) -

    -

    -

    Service defines Kubernetes service attributes

    -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    -annotations
    - -map[string]string - -
    -(Optional) -

    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: http://kubernetes.io/docs/user-guide/annotations

    -
    -labels
    - -map[string]string - -
    -

    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: https://kubernetes.io/docs/concepts/services-networking/service/

    -
    -type
    - - -Kubernetes core/v1.ServiceType - - -
    -(Optional) -

    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: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services—service-types

    -
    -port
    - -int32 - -
    -

    The port that are exposed by this service. -More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies

    -
    -nodePort
    - -int32 - -
    -(Optional) -

    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: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport

    -
    -loadBalancerSourceRanges
    - -[]string - -
    -(Optional) -

    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: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/

    -
    -loadBalancerIP
    - -string - -
    -(Optional) -

    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.

    -
    -
    -

    -Generated with gen-crd-api-reference-docs -on git commit 37e531a. -

    - - - -
    Last modified August 5, 2019 -
    - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/docs/getting-started/v0.2.0/aks/index.html b/docs/docs/getting-started/v0.2.0/aks/index.html deleted file mode 100644 index 548db739..00000000 --- a/docs/docs/getting-started/v0.2.0/aks/index.html +++ /dev/null @@ -1,517 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - -AKS | Jenkins Operator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AKS | Jenkins Operator - - -
    - - - -
    -
    -
    -
    -
    - - - - - -
    - - - - -
    - - - - -
    -
    - - - -
    -

    AKS

    -
    Additional configuration for Azure Kubernetes Service
    -

    Azure AKS managed Kubernetes service adds to every pod the following envs:

    -
    - name: KUBERNETES_PORT_443_TCP_ADDR
    -  value:
    -- name: KUBERNETES_PORT
    -  value: tcp://
    -- name: KUBERNETES_PORT_443_TCP
    -  value: tcp://
    -- name: KUBERNETES_SERVICE_HOST
    -  value:
    -

    The operator is aware of it and omits these envs when checking if Jenkins pod envs have been changed. It prevents -restart Jenkins pod over and over again.

    - - - -
    Last modified August 5, 2019 -
    -
    - - -
    -
    -
    - - - - -
    - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/docs/getting-started/v0.2.0/configuration/index.html b/docs/docs/getting-started/v0.2.0/configuration/index.html deleted file mode 100644 index 5037685b..00000000 --- a/docs/docs/getting-started/v0.2.0/configuration/index.html +++ /dev/null @@ -1,795 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - -Configuration | Jenkins Operator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Configuration | Jenkins Operator - - -
    - - - -
    -
    -
    -
    -
    - - - - - -
    - - - - -
    - - - - -
    -
    - - - -
    -

    Configuration

    -
    How to configure Jenkins with Operator
    - - -

    Configure Seed Jobs and Pipelines

    - -

    Jenkins operator uses job-dsl and kubernetes-credentials-provider plugins for configuring jobs -and deploy keys.

    - -

    Prepare job definitions and pipelines

    - -

    First you have to prepare pipelines and job definition in your GitHub repository using the following structure:

    - -
    cicd/
    -├── jobs
    -│   └── build.jenkins
    -└── pipelines
    -    └── build.jenkins
    -
    - -

    cicd/jobs/build.jenkins it’s a job definition:

    - -
    #!/usr/bin/env groovy
    -
    -pipelineJob('build-jenkins-operator') {
    -    displayName('Build jenkins-operator')
    -
    -    definition {
    -        cpsScm {
    -            scm {
    -                git {
    -                    remote {
    -                        url('https://github.com/jenkinsci/kubernetes-operator.git')
    -                        credentials('jenkins-operator')
    -                    }
    -                    branches('*/master')
    -                }
    -            }
    -            scriptPath('cicd/pipelines/build.jenkins')
    -        }
    -    }
    -}
    -
    - -

    cicd/jobs/build.jenkins it’s an actual Jenkins pipeline:

    - -
    #!/usr/bin/env groovy
    -
    -def label = "build-jenkins-operator-${UUID.randomUUID().toString()}"
    -def home = "/home/jenkins"
    -def workspace = "${home}/workspace/build-jenkins-operator"
    -def workdir = "${workspace}/src/github.com/jenkinsci/kubernetes-operator/"
    -
    -podTemplate(label: label,
    -        containers: [
    -                containerTemplate(name: 'jnlp', image: 'jenkins/jnlp-slave:alpine'),
    -                containerTemplate(name: 'go', image: 'golang:1-alpine', command: 'cat', ttyEnabled: true),
    -        ],
    -        envVars: [
    -                envVar(key: 'GOPATH', value: workspace),
    -        ],
    -        ) {
    -
    -    node(label) {
    -        dir(workdir) {
    -            stage('Init') {
    -                timeout(time: 3, unit: 'MINUTES') {
    -                    checkout scm
    -                }
    -                container('go') {
    -                    sh 'apk --no-cache --update add make git gcc libc-dev'
    -                }
    -            }
    -
    -            stage('Dep') {
    -                container('go') {
    -                    sh 'make dep'
    -                }
    -            }
    -
    -            stage('Test') {
    -                container('go') {
    -                    sh 'make test'
    -                }
    -            }
    -
    -            stage('Build') {
    -                container('go') {
    -                    sh 'make build'
    -                }
    -            }
    -        }
    -    }
    -}
    -
    - -

    Configure Seed Jobs

    - -

    Jenkins Seed Jobs are configured using Jenkins.spec.seedJobs section from your custom resource manifest:

    - -
    apiVersion: jenkins.io/v1alpha2
    -kind: Jenkins
    -metadata:
    -  name: example
    -spec:
    -  seedJobs:
    -  - id: jenkins-operator
    -    targets: "cicd/jobs/*.jenkins"
    -    description: "Jenkins Operator repository"
    -    repositoryBranch: master
    -    repositoryUrl: https://github.com/jenkinsci/kubernetes-operator.git
    -
    - -

    Jenkins Operator will automatically discover and configure all seed jobs.

    - -

    You can verify if deploy keys were successfully configured in Jenkins Credentials tab.

    - -

    jenkins

    - -

    You can verify if your pipelines were successfully configured in Jenkins Seed Job console output.

    - -

    jenkins

    - -

    If your GitHub repository is private you have to configure SSH or username/password authentication.

    - -

    SSH authentication

    - -

    Generate SSH Keys

    - -

    There are two methods of SSH private key generation:

    -
    $ openssl genrsa -out <filename> 2048
    -

    or

    -
    $ ssh-keygen -t rsa -b 2048
    -$ ssh-keygen -p -f <filename> -m pem
    -

    Then copy content from generated file.

    - -

    Public key

    - -

    If you want to upload your public key to your Git server you need to extract it.

    - -

    If key was generated by openssl then you need to type this to extract public key:

    -
    $ openssl rsa -in <filename> -pubout > <filename>.pub
    -

    If key was generated by ssh-keygen the public key content is located in .pub and there is no need to extract public key

    - -

    Configure SSH authentication

    - -

    Configure seed job like:

    - -
    apiVersion: jenkins.io/v1alpha2
    -kind: Jenkins
    -metadata:
    -  name: example
    -spec:
    -  seedJobs:
    -  - id: jenkins-operator-ssh
    -    credentialType: basicSSHUserPrivateKey
    -    credentialID: k8s-ssh
    -    targets: "cicd/jobs/*.jenkins"
    -    description: "Jenkins Operator repository"
    -    repositoryBranch: master
    -    repositoryUrl: git@github.com:jenkinsci/kubernetes-operator.git
    -
    - -

    and create Kubernetes Secret(name of secret should be the same from credentialID field):

    - -
    apiVersion: v1
    -kind: Secret
    -metadata:
    -  name: k8s-ssh
    -stringData:
    -  privateKey: |
    -    -----BEGIN RSA PRIVATE KEY-----
    -    MIIJKAIBAAKCAgEAxxDpleJjMCN5nusfW/AtBAZhx8UVVlhhhIKXvQ+dFODQIdzO
    -    oDXybs1zVHWOj31zqbbJnsfsVZ9Uf3p9k6xpJ3WFY9b85WasqTDN1xmSd6swD4N8
    -    ...
    -  username: github_user_name
    -
    - -

    Username & password authentication

    - -

    Configure seed job like:

    - -
    apiVersion: jenkins.io/v1alpha2
    -kind: Jenkins
    -metadata:
    -  name: example
    -spec:
    -  seedJobs:
    -  - id: jenkins-operator-user-pass
    -    credentialType: usernamePassword
    -    credentialID: k8s-user-pass
    -    targets: "cicd/jobs/*.jenkins"
    -    description: "Jenkins Operator repository"
    -    repositoryBranch: master
    -    repositoryUrl: https://github.com/jenkinsci/kubernetes-operator.git
    -
    - -

    and create Kubernetes Secret(name of secret should be the same from credentialID field):

    - -
    apiVersion: v1
    -kind: Secret
    -metadata:
    -  name: k8s-user-pass
    -stringData:
    -  username: github_user_name
    -  password: password_or_token
    -
    - -

    HTTP Proxy for downloading plugins

    - -

    To use forwarding proxy with operator to downloading plugins you need to put environment var to Jenkins CR, for e.g.:

    -
    spec:
    -  master:
    -    containers:
    -      - name: jenkins-master
    -        env:
    -          - name: CURL_OPTIONS
    -            value: -L -x <proxy_url>
    -

    In CURL_OPTIONS var you can set additional arguments to curl command.

    - -

    Pulling Docker images from private repositories

    - -

    To pull Docker Image from private repository you can use imagePullSecrets.

    - -

    Please follow the instructions on creating a secret with a docker config.

    - -

    Docker Hub Configuration

    - -

    To use Docker Hub additional steps are required.

    - -

    Edit the previously created secret:

    -
    kubectl -n <namespace> edit secret <name>
    -

    The .dockerconfigjson key’s value needs to be replaced with a modified version.

    - -

    After modifications it needs to be encoded as Base64 value before setting the .dockerconfigjson key:q.

    - -

    Example config file to modify and use:

    - -
    {
    -    "auths":{
    -        "https://index.docker.io/v1/":{
    -            "username":"user",
    -            "password":"password",
    -            "email":"yourdockeremail@gmail.com",
    -            "auth":"base64 of string user:password"
    -        },
    -        "auth.docker.io":{
    -            "username":"user",
    -            "password":"password",
    -            "email":"yourdockeremail@gmail.com",
    -            "auth":"base64 of string user:password"
    -        },
    -        "registry.docker.io":{
    -            "username":"user",
    -            "password":"password",
    -            "email":"yourdockeremail@gmail.com",
    -            "auth":"base64 of string user:password"
    -        },
    -        "docker.io":{
    -            "username":"user",
    -            "password":"password",
    -            "email":"yourdockeremail@gmail.com",
    -            "auth":"base64 of string user:password"
    -        },
    -        "https://registry-1.docker.io/v2/": {
    -            "username":"user",
    -            "password":"password",
    -            "email":"yourdockeremail@gmail.com",
    -            "auth":"base64 of string user:password"
    -        },
    -        "registry-1.docker.io/v2/": {
    -            "username":"user",
    -            "password":"password",
    -            "email":"yourdockeremail@gmail.com",
    -            "auth":"base64 of string user:password"
    -        },
    -        "registry-1.docker.io": {
    -            "username":"user",
    -            "password":"password",
    -            "email":"yourdockeremail@gmail.com",
    -            "auth":"base64 of string user:password"
    -        },
    -        "https://registry-1.docker.io": {
    -            "username":"user",
    -            "password":"password",
    -            "email":"yourdockeremail@gmail.com",
    -            "auth":"base64 of string user:password"
    -        }
    -    }
    -}
    -
    - - - -
    Last modified August 5, 2019 -
    -
    - - -
    -
    -
    - - - - -
    - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/docs/getting-started/v0.2.0/configure-backup-and-restore/index.html b/docs/docs/getting-started/v0.2.0/configure-backup-and-restore/index.html deleted file mode 100644 index c46b9ffa..00000000 --- a/docs/docs/getting-started/v0.2.0/configure-backup-and-restore/index.html +++ /dev/null @@ -1,575 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - -Configure backup and restore | Jenkins Operator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Configure backup and restore | Jenkins Operator - - -
    - - - -
    -
    -
    -
    -
    - - - - - -
    - - - - -
    - - - - -
    -
    - - - -
    -

    Configure backup and restore

    -
    Prevent loss of job history
    - - -

    Backup and restore is done by container sidecar.

    - -

    PVC

    - -

    Create PVC

    - -

    Save to file pvc.yaml:

    -
    apiVersion: v1
    -kind: PersistentVolumeClaim
    -metadata:
    -  name: <pvc_name>
    -  namespace: <namespace>
    -spec:
    -  accessModes:
    -  - ReadWriteOnce
    -  resources:
    -    requests:
    -      storage: 500Gi
    -

    Run command:

    -
    $ kubectl -n <namespace> create -f pvc.yaml
    -

    Configure Jenkins CR

    -
    apiVersion: jenkins.io/v1alpha2
    -kind: Jenkins
    -metadata:
    -  name: <cr_name>
    -  namespace: <namespace>
    -spec:
    -  master:
    -    securityContext:
    -      runAsUser: 1000
    -      fsGroup: 1000
    -    containers:
    -    - name: jenkins-master
    -      image: jenkins/jenkins:lts
    -    - name: backup # container responsible for backup and restore
    -      env:
    -      - name: BACKUP_DIR
    -        value: /backup
    -      - name: JENKINS_HOME
    -        value: /jenkins-home
    -      - name: BACKUP_COUNT
    -        value: "3" # keep only the 2 most recent backups
    -      image: virtuslab/jenkins-operator-backup-pvc:v0.0.6 # look at backup/pvc directory
    -      imagePullPolicy: IfNotPresent
    -      volumeMounts:
    -      - mountPath: /jenkins-home # Jenkins home volume
    -        name: jenkins-home
    -      - mountPath: /backup # backup volume
    -        name: backup
    -    volumes:
    -    - name: backup # PVC volume where backups will be stored
    -      persistentVolumeClaim:
    -        claimName: <pvc_name>
    -  backup:
    -    containerName: backup # container name is responsible for backup
    -    action:
    -      exec:
    -        command:
    -        - /home/user/bin/backup.sh # this command is invoked on "backup" container to make backup, for example /home/user/bin/backup.sh <backup_number>, <backup_number> is passed by operator
    -    interval: 30 # how often make backup in seconds
    -    makeBackupBeforePodDeletion: true # make backup before pod deletion
    -  restore:
    -    containerName: backup # container name is responsible for restore backup
    -    action:
    -      exec:
    -        command:
    -        - /home/user/bin/restore.sh # this command is invoked on "backup" container to make restore backup, for example /home/user/bin/restore.sh <backup_number>, <backup_number> is passed by operator
    -    #recoveryOnce: <backup_number> # if want to restore specific backup configure this field and then Jenkins will be restarted and desired backup will be restored
    - - -
    Last modified August 5, 2019 -
    -
    - - -
    -
    -
    - - - - -
    - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/docs/getting-started/v0.2.0/customization/index.html b/docs/docs/getting-started/v0.2.0/customization/index.html deleted file mode 100644 index 583a9f09..00000000 --- a/docs/docs/getting-started/v0.2.0/customization/index.html +++ /dev/null @@ -1,659 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - -Customization | Jenkins Operator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Customization | Jenkins Operator - - -
    - - - -
    -
    -
    -
    -
    - - - - - -
    - - - - -
    - - - - -
    -
    - - - -
    -

    Customization

    -
    How to customize Jenkins
    - - -

    Jenkins can be customized using groovy scripts or the configuration as code plugin. -By using a ConfigMap you can create your own Jenkins customized configuration. -Then you must reference the ConfigMap in the Jenkins pod customization file in spec.groovyScripts or spec.configurationAsCode

    - -

    For example create a ConfigMap with name jenkins-operator-user-configuration. Then, modify the Jenkins manifest to look like this:

    -
    apiVersion: jenkins.io/v1alpha2
    -kind: Jenkins
    -metadata:
    -  name: example
    -spec:
    -  configurationAsCode:
    -    configurations: 
    -    - name: jenkins-operator-user-configuration
    -  groovyScripts:
    -    configurations:
    -    - name: jenkins-operator-user-configuration
    -

    Here is an example of jenkins-operator-user-configuration:

    -
    apiVersion: v1
    -kind: ConfigMap
    -metadata:
    -  name: jenkins-operator-user-configuration
    -data:
    -  1-configure-theme.groovy: | 
    -    import jenkins.*
    -    import jenkins.model.*
    -    import hudson.*
    -    import hudson.model.*
    -    import org.jenkinsci.plugins.simpletheme.ThemeElement
    -    import org.jenkinsci.plugins.simpletheme.CssTextThemeElement
    -    import org.jenkinsci.plugins.simpletheme.CssUrlThemeElement
    -
    -    Jenkins jenkins = Jenkins.getInstance()
    -
    -    def decorator = Jenkins.instance.getDescriptorByType(org.codefirst.SimpleThemeDecorator.class)
    -
    -    List<ThemeElement> configElements = new ArrayList<>();
    -    configElements.add(new CssTextThemeElement("DEFAULT"));
    -    configElements.add(new CssUrlThemeElement("https://cdn.rawgit.com/afonsof/jenkins-material-theme/gh-pages/dist/material-light-green.css"));
    -    decorator.setElements(configElements);
    -    decorator.save();
    -
    -    jenkins.save()
    -  1-system-message.yaml: |
    -    jenkins:
    -      systemMessage: "Configuration as Code integration works!!!"
    -
      -
    • *.groovy is Groovy script configuration
    • -
    • *.yaml is configuration as code
    • -
    - -

    If you want to correct your configuration you can edit it while the Jenkins Operator is running. -Jenkins will reconcile and apply the new configuration.

    - -

    Using secrets from a Groovy script

    - -

    If you configured spec.groovyScripts.secret.name, then this secret is available to use from map Groovy scripts. -The secrets are loaded to secrets map.

    - -

    Create a secret with for example the name jenkins-conf-secrets.

    -
    kind: Secret
    -apiVersion: v1
    -type: Opaque
    -metadata:
    -  name: jenkins-conf-secrets
    -  namespace: default
    -data:
    -  SYSTEM_MESSAGE: SGVsbG8gd29ybGQ=
    -

    Then modify the Jenkins pod manifest by changing spec.groovyScripts.secret.name to jenkins-conf-secrets.

    -
    apiVersion: jenkins.io/v1alpha2
    -kind: Jenkins
    -metadata:
    -  name: example
    -spec:
    -  configurationAsCode:
    -    configurations: 
    -    - name: jenkins-operator-user-configuration
    -    secret:
    -      name: jenkins-conf-secrets
    -  groovyScripts:
    -    configurations:
    -    - name: jenkins-operator-user-configuration
    -    secret:
    -      name: jenkins-conf-secrets
    -

    Now you can test that the secret is mounted by applying this ConfigMap for Groovy script:

    -
    apiVersion: v1
    -kind: ConfigMap
    -metadata:
    -  name: jenkins-operator-user-configuration
    -data:
    -  1-system-message.groovy: | 
    -    import jenkins.*
    -    import jenkins.model.*
    -    import hudson.*
    -    import hudson.model.*
    -    Jenkins jenkins = Jenkins.getInstance()
    -    
    -    jenkins.setSystemMessage(secrets["SYSTEM_MESSAGE"])
    -    jenkins.save()
    -

    Or by applying this configuration as code:

    -
    apiVersion: v1
    -kind: ConfigMap
    -metadata:
    -  name: jenkins-operator-user-configuration
    -data:
    -  1-system-message.yaml: |
    -    jenkins:
    -      systemMessage: ${SYSTEM_MESSAGE}
    -

    After this, you should see the Hello world system message from the Jenkins homepage.

    - -

    Install Plugins

    - -

    Edit CR under spec.master.plugins:

    - -
    apiVersion: jenkins.io/v1alpha2
    -kind: Jenkins
    -metadata:
    -  name: example
    -spec:
    -  master:
    -   plugins:
    -   - name: simple-theme-plugin
    -     version: 0.5.1
    -
    - -

    Under spec.master.basePlugins you can find plugins for a valid Jenkins Operator:

    -
    apiVersion: jenkins.io/v1alpha2
    -kind: Jenkins
    -metadata:
    -  name: example
    -spec:
    -  master:
    -    basePlugins:
    -    - name: kubernetes
    -      version: 1.18.3
    -    - name: workflow-job
    -      version: "2.34"
    -    - name: workflow-aggregator
    -      version: "2.6"
    -    - name: git
    -      version: 3.12.0
    -    - name: job-dsl
    -      version: "1.76"
    -    - name: configuration-as-code
    -      version: "1.29"
    -    - name: configuration-as-code-support
    -      version: "1.19"
    -    - name: kubernetes-credentials-provider
    -      version: 0.12.1
    -

    You can change their versions.

    - -

    Then the Jenkins Operator will automatically install plugins after the Jenkins master pod restarts.

    - - - -
    Last modified August 5, 2019 -
    -
    - - -
    -
    -
    - - - - -
    - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/docs/getting-started/v0.2.0/deploy-jenkins/index.html b/docs/docs/getting-started/v0.2.0/deploy-jenkins/index.html deleted file mode 100644 index 043bb53c..00000000 --- a/docs/docs/getting-started/v0.2.0/deploy-jenkins/index.html +++ /dev/null @@ -1,564 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - -Deploy Jenkins | Jenkins Operator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Deploy Jenkins | Jenkins Operator - - -
    - - - -
    -
    -
    -
    -
    - - - - - -
    - - - - -
    - - - - -
    -
    - - - -
    -

    Deploy Jenkins

    -
    Deploy production ready Jenkins Operator manifest
    -

    Once jenkins-operator is up and running let’s deploy actual Jenkins instance. -Create manifest ie. jenkins_instance.yaml with following data and save it on drive.

    -
    apiVersion: jenkins.io/v1alpha2
    -kind: Jenkins
    -metadata:
    -  name: example
    -spec:
    -  master:
    -    containers:
    -    - name: jenkins-master
    -      image: jenkins/jenkins:lts
    -      imagePullPolicy: Always
    -      livenessProbe:
    -        failureThreshold: 12
    -        httpGet:
    -          path: /login
    -          port: http
    -          scheme: HTTP
    -        initialDelaySeconds: 80
    -        periodSeconds: 10
    -        successThreshold: 1
    -        timeoutSeconds: 5
    -      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: 500Mi
    -  seedJobs:
    -  - id: jenkins-operator
    -    targets: "cicd/jobs/*.jenkins"
    -    description: "Jenkins Operator repository"
    -    repositoryBranch: master
    -    repositoryUrl: https://github.com/jenkinsci/kubernetes-operator.git
    -

    Deploy Jenkins to K8s:

    -
    kubectl create -f jenkins_instance.yaml
    -

    Watch Jenkins instance being created:

    -
    kubectl get pods -w
    -

    Get Jenkins credentials:

    -
    kubectl get secret jenkins-operator-credentials-<cr_name> -o 'jsonpath={.data.user}' | base64 -d
    -kubectl get secret jenkins-operator-credentials-<cr_name> -o 'jsonpath={.data.password}' | base64 -d
    -

    Connect to Jenkins (minikube):

    -
    minikube service jenkins-operator-http-<cr_name> --url
    -

    Connect to Jenkins (actual Kubernetes cluster):

    -
    kubectl port-forward jenkins-<cr_name> 8080:8080
    -

    Then open browser with address http://localhost:8080. -jenkins

    - - - -
    Last modified August 5, 2019 -
    -
    - - -
    -
    -
    - - - - -
    - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/docs/getting-started/v0.2.0/diagnostics/index.html b/docs/docs/getting-started/v0.2.0/diagnostics/index.html deleted file mode 100644 index 07cd64c3..00000000 --- a/docs/docs/getting-started/v0.2.0/diagnostics/index.html +++ /dev/null @@ -1,520 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - -Diagnostics | Jenkins Operator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Diagnostics | Jenkins Operator - - -
    - - - -
    -
    -
    -
    -
    - - - - - -
    - - - - -
    - - - - -
    -
    - - - -
    -

    Diagnostics

    -
    How to deal with jenkins-operator problems
    - - -

    Turn on debug in Jenkins Operator deployment:

    -
    sed -i 's|\(args:\).*|\1\ ["--debug"\]|' deploy/operator.yaml
    -kubectl apply -f deploy/operator.yaml
    -

    Watch Kubernetes events:

    -
    kubectl get events --sort-by='{.lastTimestamp}'
    -

    Verify Jenkins master logs:

    -
    kubectl logs -f jenkins-<cr_name>
    -

    Verify jenkins-operator logs:

    -
    kubectl logs deployment/jenkins-operator
    -

    Troubleshooting

    - -

    Delete Jenkins master pod and wait for the new one to come up:

    -
    kubectl delete pod jenkins-<cr_name>
    - - -
    Last modified August 5, 2019 -
    -
    - - -
    -
    -
    - - - - -
    - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/docs/getting-started/v0.2.0/index.html b/docs/docs/getting-started/v0.2.0/index.html deleted file mode 100644 index 61140088..00000000 --- a/docs/docs/getting-started/v0.2.0/index.html +++ /dev/null @@ -1,630 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - -v0.2.0 | Jenkins Operator - - - - - - - - - - - - - - - - - - - - - - - - v0.2.0 | Jenkins Operator - - -
    - - - -
    -
    -
    -
    -
    - - - - - -
    - - - - -
    - - - - -
    -
    - - - -
    -

    v0.2.0

    -
    How to work with jenkins-operator latest version
    - - - - -
    -

    This document describes a getting started guide for Jenkins Operator v0.2.0 and an additional configuration.

    - -
    - - -

    First Steps

    - -

    Prepare your Kubernetes cluster and set up access. -Once you have running Kubernetes cluster you can focus on installing Jenkins Operator according to the Installation guide.

    - -
    - - - - -
    - - - - - - -
    -
    - Deploy Jenkins -
    -

    Deploy production ready Jenkins Operator manifest -

    -
    - - - - - - - -
    -
    - Configuration -
    -

    How to configure Jenkins with Operator -

    -
    - - - - - -
    -
    - Customization -
    -

    How to customize Jenkins -

    -
    - - - - - - - -
    -
    - AKS -
    -

    Additional configuration for Azure Kubernetes Service -

    -
    - - - - - -
    -
    - Configure backup and restore -
    -

    Prevent loss of job history -

    -
    - - - - - - - -
    -
    - Migration from v0.1.1 -
    -

    How to migrate from v0.1.1 to v0.2.0 -

    -
    - - - - - - - - - - - - - -
    -
    - Diagnostics -
    -

    How to deal with jenkins-operator problems -

    -
    - - - - - -
    -
    - Scheme -
    -

    API Schema definitions for Jenkins CR -

    -
    - - - - - - - - - -
    - - - -
    Last modified August 5, 2019 -
    -
    - -
    -
    -
    - - - - -
    - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/docs/getting-started/v0.2.0/index.xml b/docs/docs/getting-started/v0.2.0/index.xml deleted file mode 100644 index ae0e04a0..00000000 --- a/docs/docs/getting-started/v0.2.0/index.xml +++ /dev/null @@ -1,2722 +0,0 @@ - - - Jenkins Operator – v0.2.0 - https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.2.0/ - Recent Hugo news from gohugo.io - Hugo -- gohugo.io - Mon, 05 Aug 2019 00:00:00 +0000 - - https://jenkinsci.github.io/kubernetes-operator/img/hugo.png - GoHugo.io - https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.2.0/ - - - - - - - - - - - - Docs: Deploy Jenkins - https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.2.0/deploy-jenkins/ - Mon, 05 Aug 2019 00:00:00 +0000 - - https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.2.0/deploy-jenkins/ - - - - <p>Once jenkins-operator is up and running let&rsquo;s deploy actual Jenkins instance. -Create manifest ie. <strong>jenkins_instance.yaml</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-bash" data-lang="bash">apiVersion: jenkins.io/v1alpha2 -kind: Jenkins -metadata: - name: example -spec: - master: - containers: - - name: jenkins-master - image: jenkins/jenkins:lts - imagePullPolicy: Always - livenessProbe: - failureThreshold: <span style="color:#0000cf;font-weight:bold">12</span> - httpGet: - path: /login - port: http - scheme: HTTP - initialDelaySeconds: <span style="color:#0000cf;font-weight:bold">80</span> - periodSeconds: <span style="color:#0000cf;font-weight:bold">10</span> - successThreshold: <span style="color:#0000cf;font-weight:bold">1</span> - timeoutSeconds: <span style="color:#0000cf;font-weight:bold">5</span> - readinessProbe: - failureThreshold: <span style="color:#0000cf;font-weight:bold">3</span> - httpGet: - path: /login - port: http - scheme: HTTP - initialDelaySeconds: <span style="color:#0000cf;font-weight:bold">30</span> - periodSeconds: <span style="color:#0000cf;font-weight:bold">10</span> - successThreshold: <span style="color:#0000cf;font-weight:bold">1</span> - timeoutSeconds: <span style="color:#0000cf;font-weight:bold">1</span> - resources: - limits: - cpu: 1500m - memory: 3Gi - requests: - cpu: <span style="color:#4e9a06">&#34;1&#34;</span> - memory: 500Mi - seedJobs: - - id: jenkins-operator - targets: <span style="color:#4e9a06">&#34;cicd/jobs/*.jenkins&#34;</span> - description: <span style="color:#4e9a06">&#34;Jenkins Operator repository&#34;</span> - repositoryBranch: master - repositoryUrl: https://github.com/jenkinsci/kubernetes-operator.git</code></pre></div> -<p>Deploy Jenkins to K8s:</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 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 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-&lt;cr_name&gt; -o <span style="color:#4e9a06">&#39;jsonpath={.data.user}&#39;</span> <span style="color:#000;font-weight:bold">|</span> base64 -d -kubectl get secret jenkins-operator-credentials-&lt;cr_name&gt; -o <span style="color:#4e9a06">&#39;jsonpath={.data.password}&#39;</span> <span style="color:#000;font-weight:bold">|</span> base64 -d</code></pre></div> -<p>Connect to Jenkins (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-&lt;cr_name&gt; --url</code></pre></div> -<p>Connect to Jenkins (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-&lt;cr_name&gt; <span style="color:#0000cf;font-weight:bold">8080</span>:8080</code></pre></div> -<p>Then open browser with address <code>http://localhost:8080</code>. -<img src="https://jenkinsci.github.io/kubernetes-operator/img/jenkins.png" alt="jenkins" /></p> - - - - - - Docs: Configuration - https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.2.0/configuration/ - Mon, 05 Aug 2019 00:00:00 +0000 - - https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.2.0/configuration/ - - - - - -<h2 id="configure-seed-jobs-and-pipelines">Configure Seed Jobs and Pipelines</h2> - -<p>Jenkins operator uses <a href="https://github.com/jenkinsci/job-dsl-plugin" target="_blank">job-dsl</a> and <a href="https://jenkinsci.github.io/kubernetes-credentials-provider-plugin/" target="_blank">kubernetes-credentials-provider</a> plugins for configuring jobs -and deploy keys.</p> - -<h2 id="prepare-job-definitions-and-pipelines">Prepare job definitions and pipelines</h2> - -<p>First you have to prepare pipelines and job definition in your GitHub repository using the following structure:</p> - -<pre><code>cicd/ -├── jobs -│   └── build.jenkins -└── pipelines - └── build.jenkins -</code></pre> - -<p><strong>cicd/jobs/build.jenkins</strong> it&rsquo;s a job definition:</p> - -<pre><code>#!/usr/bin/env groovy - -pipelineJob('build-jenkins-operator') { - displayName('Build jenkins-operator') - - definition { - cpsScm { - scm { - git { - remote { - url('https://github.com/jenkinsci/kubernetes-operator.git') - credentials('jenkins-operator') - } - branches('*/master') - } - } - scriptPath('cicd/pipelines/build.jenkins') - } - } -} -</code></pre> - -<p><strong>cicd/jobs/build.jenkins</strong> it&rsquo;s an actual Jenkins pipeline:</p> - -<pre><code>#!/usr/bin/env groovy - -def label = &quot;build-jenkins-operator-${UUID.randomUUID().toString()}&quot; -def home = &quot;/home/jenkins&quot; -def workspace = &quot;${home}/workspace/build-jenkins-operator&quot; -def workdir = &quot;${workspace}/src/github.com/jenkinsci/kubernetes-operator/&quot; - -podTemplate(label: label, - containers: [ - containerTemplate(name: 'jnlp', image: 'jenkins/jnlp-slave:alpine'), - containerTemplate(name: 'go', image: 'golang:1-alpine', command: 'cat', ttyEnabled: true), - ], - envVars: [ - envVar(key: 'GOPATH', value: workspace), - ], - ) { - - node(label) { - dir(workdir) { - stage('Init') { - timeout(time: 3, unit: 'MINUTES') { - checkout scm - } - container('go') { - sh 'apk --no-cache --update add make git gcc libc-dev' - } - } - - stage('Dep') { - container('go') { - sh 'make dep' - } - } - - stage('Test') { - container('go') { - sh 'make test' - } - } - - stage('Build') { - container('go') { - sh 'make build' - } - } - } - } -} -</code></pre> - -<h2 id="configure-seed-jobs">Configure Seed Jobs</h2> - -<p>Jenkins Seed Jobs are configured using <code>Jenkins.spec.seedJobs</code> section from your custom resource manifest:</p> - -<pre><code>apiVersion: jenkins.io/v1alpha2 -kind: Jenkins -metadata: - name: example -spec: - seedJobs: - - id: jenkins-operator - targets: &quot;cicd/jobs/*.jenkins&quot; - description: &quot;Jenkins Operator repository&quot; - repositoryBranch: master - repositoryUrl: https://github.com/jenkinsci/kubernetes-operator.git -</code></pre> - -<p><strong>Jenkins Operator</strong> will automatically discover and configure all seed jobs.</p> - -<p>You can verify if deploy keys were successfully configured in Jenkins <strong>Credentials</strong> tab.</p> - -<p><img src="https://jenkinsci.github.io/kubernetes-operator/kubernetes-operator/img/jenkins-credentials.png" alt="jenkins" /></p> - -<p>You can verify if your pipelines were successfully configured in Jenkins Seed Job console output.</p> - -<p><img src="https://jenkinsci.github.io/kubernetes-operator/kubernetes-operator/img/jenkins-seed.png" alt="jenkins" /></p> - -<p>If your GitHub repository is <strong>private</strong> you have to configure SSH or username/password authentication.</p> - -<h3 id="ssh-authentication">SSH authentication</h3> - -<h4 id="generate-ssh-keys">Generate SSH Keys</h4> - -<p>There are two methods of SSH private key generation:</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">$ openssl genrsa -out &lt;filename&gt; <span style="color:#0000cf;font-weight:bold">2048</span></code></pre></div> -<p>or</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">$ ssh-keygen -t rsa -b <span style="color:#0000cf;font-weight:bold">2048</span> -$ ssh-keygen -p -f &lt;filename&gt; -m pem</code></pre></div> -<p>Then copy content from generated file.</p> - -<h4 id="public-key">Public key</h4> - -<p>If you want to upload your public key to your Git server you need to extract it.</p> - -<p>If key was generated by <code>openssl</code> then you need to type this to extract public key:</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">$ openssl rsa -in &lt;filename&gt; -pubout &gt; &lt;filename&gt;.pub</code></pre></div> -<p>If key was generated by <code>ssh-keygen</code> the public key content is located in <filename>.pub and there is no need to extract public key</p> - -<h4 id="configure-ssh-authentication">Configure SSH authentication</h4> - -<p>Configure seed job like:</p> - -<pre><code>apiVersion: jenkins.io/v1alpha2 -kind: Jenkins -metadata: - name: example -spec: - seedJobs: - - id: jenkins-operator-ssh - credentialType: basicSSHUserPrivateKey - credentialID: k8s-ssh - targets: &quot;cicd/jobs/*.jenkins&quot; - description: &quot;Jenkins Operator repository&quot; - repositoryBranch: master - repositoryUrl: git@github.com:jenkinsci/kubernetes-operator.git -</code></pre> - -<p>and create Kubernetes Secret(name of secret should be the same from <code>credentialID</code> field):</p> - -<pre><code>apiVersion: v1 -kind: Secret -metadata: - name: k8s-ssh -stringData: - privateKey: | - -----BEGIN RSA PRIVATE KEY----- - MIIJKAIBAAKCAgEAxxDpleJjMCN5nusfW/AtBAZhx8UVVlhhhIKXvQ+dFODQIdzO - oDXybs1zVHWOj31zqbbJnsfsVZ9Uf3p9k6xpJ3WFY9b85WasqTDN1xmSd6swD4N8 - ... - username: github_user_name -</code></pre> - -<h3 id="username-password-authentication">Username &amp; password authentication</h3> - -<p>Configure seed job like:</p> - -<pre><code>apiVersion: jenkins.io/v1alpha2 -kind: Jenkins -metadata: - name: example -spec: - seedJobs: - - id: jenkins-operator-user-pass - credentialType: usernamePassword - credentialID: k8s-user-pass - targets: &quot;cicd/jobs/*.jenkins&quot; - description: &quot;Jenkins Operator repository&quot; - repositoryBranch: master - repositoryUrl: https://github.com/jenkinsci/kubernetes-operator.git -</code></pre> - -<p>and create Kubernetes Secret(name of secret should be the same from <code>credentialID</code> field):</p> - -<pre><code>apiVersion: v1 -kind: Secret -metadata: - name: k8s-user-pass -stringData: - username: github_user_name - password: password_or_token -</code></pre> - -<h2 id="http-proxy-for-downloading-plugins">HTTP Proxy for downloading plugins</h2> - -<p>To use forwarding proxy with operator to downloading plugins you need to put environment var to Jenkins CR, for 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">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>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>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>CURL_OPTIONS<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>-L<span style="color:#f8f8f8;text-decoration:underline"> </span>-x<span style="color:#f8f8f8;text-decoration:underline"> </span>&lt;proxy_url&gt;</code></pre></div> -<p>In <code>CURL_OPTIONS</code> var you can set additional arguments to curl command.</p> - -<h2 id="pulling-docker-images-from-private-repositories">Pulling Docker images from private repositories</h2> - -<p>To pull Docker Image from private repository you can use <code>imagePullSecrets</code>.</p> - -<p>Please follow the instructions on <a href="https://kubernetes.io/docs/concepts/containers/images/?origin_team=T42NTAGHM#creating-a-secret-with-a-docker-config" target="_blank">creating a secret with a docker config</a>.</p> - -<h3 id="docker-hub-configuration">Docker Hub Configuration</h3> - -<p>To use Docker Hub additional steps are required.</p> - -<p>Edit the previously created secret:</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 -n &lt;namespace&gt; edit secret &lt;name&gt;</code></pre></div> -<p>The <code>.dockerconfigjson</code> key&rsquo;s value needs to be replaced with a modified version.</p> - -<p>After modifications it needs to be encoded as Base64 value before setting the <code>.dockerconfigjson</code> key:q.</p> - -<p>Example config file to modify and use:</p> - -<pre><code>{ - &quot;auths&quot;:{ - &quot;https://index.docker.io/v1/&quot;:{ - &quot;username&quot;:&quot;user&quot;, - &quot;password&quot;:&quot;password&quot;, - &quot;email&quot;:&quot;yourdockeremail@gmail.com&quot;, - &quot;auth&quot;:&quot;base64 of string user:password&quot; - }, - &quot;auth.docker.io&quot;:{ - &quot;username&quot;:&quot;user&quot;, - &quot;password&quot;:&quot;password&quot;, - &quot;email&quot;:&quot;yourdockeremail@gmail.com&quot;, - &quot;auth&quot;:&quot;base64 of string user:password&quot; - }, - &quot;registry.docker.io&quot;:{ - &quot;username&quot;:&quot;user&quot;, - &quot;password&quot;:&quot;password&quot;, - &quot;email&quot;:&quot;yourdockeremail@gmail.com&quot;, - &quot;auth&quot;:&quot;base64 of string user:password&quot; - }, - &quot;docker.io&quot;:{ - &quot;username&quot;:&quot;user&quot;, - &quot;password&quot;:&quot;password&quot;, - &quot;email&quot;:&quot;yourdockeremail@gmail.com&quot;, - &quot;auth&quot;:&quot;base64 of string user:password&quot; - }, - &quot;https://registry-1.docker.io/v2/&quot;: { - &quot;username&quot;:&quot;user&quot;, - &quot;password&quot;:&quot;password&quot;, - &quot;email&quot;:&quot;yourdockeremail@gmail.com&quot;, - &quot;auth&quot;:&quot;base64 of string user:password&quot; - }, - &quot;registry-1.docker.io/v2/&quot;: { - &quot;username&quot;:&quot;user&quot;, - &quot;password&quot;:&quot;password&quot;, - &quot;email&quot;:&quot;yourdockeremail@gmail.com&quot;, - &quot;auth&quot;:&quot;base64 of string user:password&quot; - }, - &quot;registry-1.docker.io&quot;: { - &quot;username&quot;:&quot;user&quot;, - &quot;password&quot;:&quot;password&quot;, - &quot;email&quot;:&quot;yourdockeremail@gmail.com&quot;, - &quot;auth&quot;:&quot;base64 of string user:password&quot; - }, - &quot;https://registry-1.docker.io&quot;: { - &quot;username&quot;:&quot;user&quot;, - &quot;password&quot;:&quot;password&quot;, - &quot;email&quot;:&quot;yourdockeremail@gmail.com&quot;, - &quot;auth&quot;:&quot;base64 of string user:password&quot; - } - } -} -</code></pre> - - - - - - Docs: Customization - https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.2.0/customization/ - Mon, 05 Aug 2019 00:00:00 +0000 - - https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.2.0/customization/ - - - - - -<p>Jenkins can be customized using groovy scripts or the <a href="https://github.com/jenkinsci/configuration-as-code-plugin" target="_blank">configuration as code plugin</a>. -By using a <a href="https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/" target="_blank">ConfigMap</a> you can create your own <strong>Jenkins</strong> customized configuration. -Then you must reference the <em>ConfigMap</em> in the <strong>Jenkins</strong> pod customization file in <code>spec.groovyScripts</code> or <code>spec.configurationAsCode</code></p> - -<p>For example create a <em>ConfigMap</em> with name <code>jenkins-operator-user-configuration</code>. Then, modify the <strong>Jenkins</strong> manifest to look like this:</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>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:#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-user-configuration<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:#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-user-configuration</code></pre></div> -<p>Here is an example of <code>jenkins-operator-user-configuration</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">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>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>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-user-configuration<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><span style="color:#0000cf;font-weight:bold">1</span>-configure-theme.groovy<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"> import jenkins.*</span><span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>import<span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins.model.*<span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>import<span style="color:#f8f8f8;text-decoration:underline"> </span>hudson.*<span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>import<span style="color:#f8f8f8;text-decoration:underline"> </span>hudson.model.*<span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>import<span style="color:#f8f8f8;text-decoration:underline"> </span>org.jenkinsci.plugins.simpletheme.ThemeElement<span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>import<span style="color:#f8f8f8;text-decoration:underline"> </span>org.jenkinsci.plugins.simpletheme.CssTextThemeElement<span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>import<span style="color:#f8f8f8;text-decoration:underline"> </span>org.jenkinsci.plugins.simpletheme.CssUrlThemeElement<span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>Jenkins<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>Jenkins.getInstance()<span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>def<span style="color:#f8f8f8;text-decoration:underline"> </span>decorator<span style="color:#f8f8f8;text-decoration:underline"> </span>=<span style="color:#f8f8f8;text-decoration:underline"> </span>Jenkins.instance.getDescriptorByType(org.codefirst.SimpleThemeDecorator.class)<span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>List&lt;ThemeElement&gt;<span style="color:#f8f8f8;text-decoration:underline"> </span>configElements<span style="color:#f8f8f8;text-decoration:underline"> </span>=<span style="color:#f8f8f8;text-decoration:underline"> </span>new<span style="color:#f8f8f8;text-decoration:underline"> </span>ArrayList&lt;&gt;();<span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>configElements.add(new<span style="color:#f8f8f8;text-decoration:underline"> </span>CssTextThemeElement(<span style="color:#4e9a06">&#34;DEFAULT&#34;</span>));<span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>configElements.add(new<span style="color:#f8f8f8;text-decoration:underline"> </span>CssUrlThemeElement(<span style="color:#4e9a06">&#34;https://cdn.rawgit.com/afonsof/jenkins-material-theme/gh-pages/dist/material-light-green.css&#34;</span>));<span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>decorator.setElements(configElements);<span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>decorator.save();<span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins.save()<span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1</span>-system-message.yaml<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"> jenkins:</span><span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>systemMessage<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;Configuration as Code integration works!!!&#34;</span></code></pre></div> -<ul> -<li>*.groovy is Groovy script configuration</li> -<li>*.yaml is configuration as code</li> -</ul> - -<p>If you want to correct your configuration you can edit it while the <strong>Jenkins Operator</strong> is running. -Jenkins will reconcile and apply the new configuration.</p> - -<h3 id="using-secrets-from-a-groovy-script">Using secrets from a Groovy script</h3> - -<p>If you configured <code>spec.groovyScripts.secret.name</code>, then this secret is available to use from map Groovy scripts. -The secrets are loaded to <code>secrets</code> map.</p> - -<p>Create a <a href="https://kubernetes.io/docs/concepts/configuration/secret/" target="_blank">secret</a> with for example the name <code>jenkins-conf-secrets</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>Secret<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>type<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>Opaque<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-conf-secrets<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>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>SYSTEM_MESSAGE<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>SGVsbG8gd29ybGQ=</code></pre></div> -<p>Then modify the <strong>Jenkins</strong> pod manifest by changing <code>spec.groovyScripts.secret.name</code> to <code>jenkins-conf-secrets</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">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>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:#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-user-configuration<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>jenkins-conf-secrets<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:#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-user-configuration<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>jenkins-conf-secrets</code></pre></div> -<p>Now you can test that the secret is mounted by applying this ConfigMap for Groovy script:</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>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>ConfigMap<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-user-configuration<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><span style="color:#0000cf;font-weight:bold">1</span>-system-message.groovy<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"> import jenkins.*</span><span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>import<span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins.model.*<span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>import<span style="color:#f8f8f8;text-decoration:underline"> </span>hudson.*<span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>import<span style="color:#f8f8f8;text-decoration:underline"> </span>hudson.model.*<span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>Jenkins<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>Jenkins.getInstance()<span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins.setSystemMessage(secrets<span style="color:#000;font-weight:bold">[</span><span style="color:#4e9a06">&#34;SYSTEM_MESSAGE&#34;</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>jenkins.save()</code></pre></div> -<p>Or by applying this configuration as 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">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>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>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-user-configuration<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><span style="color:#0000cf;font-weight:bold">1</span>-system-message.yaml<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"> jenkins:</span><span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>systemMessage<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>${SYSTEM_MESSAGE}</code></pre></div> -<p>After this, you should see the <code>Hello world</code> system message from the <strong>Jenkins</strong> homepage.</p> - -<h2 id="install-plugins">Install Plugins</h2> - -<p>Edit CR under <code>spec.master.plugins</code>:</p> - -<pre><code>apiVersion: jenkins.io/v1alpha2 -kind: Jenkins -metadata: - name: example -spec: - master: - plugins: - - name: simple-theme-plugin - version: 0.5.1 -</code></pre> - -<p>Under <code>spec.master.basePlugins</code> you can find plugins for a valid <strong>Jenkins Operator</strong>:</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>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>basePlugins<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>kubernetes<span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1.18</span>.<span style="color:#0000cf;font-weight:bold">3</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>workflow-job<span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;2.34&#34;</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>workflow-aggregator<span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;2.6&#34;</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>git<span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">3.12</span>.<span style="color:#0000cf;font-weight:bold">0</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>job-dsl<span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;1.76&#34;</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>configuration-as-code<span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;1.29&#34;</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>configuration-as-code-support<span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;1.19&#34;</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>kubernetes-credentials-provider<span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">0.12</span>.<span style="color:#0000cf;font-weight:bold">1</span></code></pre></div> -<p>You can change their versions.</p> - -<p>Then the <strong>Jenkins Operator</strong> will automatically install plugins after the Jenkins master pod restarts.</p> - - - - - - Docs: AKS - https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.2.0/aks/ - Mon, 05 Aug 2019 00:00:00 +0000 - - https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.2.0/aks/ - - - - <p>Azure AKS managed Kubernetes service adds to every pod the following envs:</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>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>KUBERNETES_PORT_443_TCP_ADDR<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><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>KUBERNETES_PORT<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>tcp<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>KUBERNETES_PORT_443_TCP<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>tcp<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>KUBERNETES_SERVICE_HOST<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></code></pre></div> -<p>The operator is aware of it and omits these envs when checking if Jenkins pod envs have been changed. It prevents -restart Jenkins pod over and over again.</p> - - - - - - Docs: Configure backup and restore - https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.2.0/configure-backup-and-restore/ - Mon, 05 Aug 2019 00:00:00 +0000 - - https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.2.0/configure-backup-and-restore/ - - - - - -<p>Backup and restore is done by container sidecar.</p> - -<h3 id="pvc">PVC</h3> - -<h4 id="create-pvc">Create PVC</h4> - -<p>Save to file pvc.yaml:</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>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>PersistentVolumeClaim<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>&lt;pvc_name<span style="color:#8f5902;font-style:italic">&gt; -</span><span style="color:#8f5902;font-style:italic"> namespace: &lt;namespace&gt;</span><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>accessModes<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>ReadWriteOnce<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>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>storage<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>500Gi</code></pre></div> -<p>Run command:</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 -n &lt;namespace&gt; create -f pvc.yaml</code></pre></div> -<h4 id="configure-jenkins-cr">Configure Jenkins CR</h4> -<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>&lt;cr_name<span style="color:#8f5902;font-style:italic">&gt; -</span><span style="color:#8f5902;font-style:italic"> namespace: &lt;namespace&gt;</span><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>securityContext<span style="color:#000;font-weight:bold">:</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>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>lts<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>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_DIR<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>/backup<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:#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_COUNT<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><span style="color:#4e9a06">&#34;3&#34;</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># keep only the 2 most recent backups</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>virtuslab/jenkins-operator-backup-pvc<span style="color:#000;font-weight:bold">:</span>v0.<span style="color:#0000cf;font-weight:bold">0.6</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># look at backup/pvc directory</span><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>IfNotPresent<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>/backup<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># backup 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>backup<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<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># PVC volume where backups will be stored</span><span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>persistentVolumeClaim<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> -</span><span style="color:#f8f8f8;text-decoration:underline"> </span>claimName<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>&lt;pvc_name<span style="color:#8f5902;font-style:italic">&gt; -</span><span style="color:#8f5902;font-style:italic"> backup:</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 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:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/backup.sh<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># this command is invoked on &#34;backup&#34; container to make backup, for example /home/user/bin/backup.sh &lt;backup_number&gt;, &lt;backup_number&gt; is passed by operator</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">30</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># how often make 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"># make backup before pod deletion</span><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:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/restore.sh<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># this command is invoked on &#34;backup&#34; container to make restore backup, for example /home/user/bin/restore.sh &lt;backup_number&gt;, &lt;backup_number&gt; 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">#recoveryOnce: &lt;backup_number&gt; # 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> - - - - - Docs: Migration from v0.1.1 - https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.2.0/migration/ - Mon, 05 Aug 2019 00:00:00 +0000 - - https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.2.0/migration/ - - - - - -<h3 id="added-seed-job-agent">Added seed job agent</h3> - -<p>Now seed jobs are not built by master executors, but by dedicated agent deployed into Kubernetes. We disabled master executors for security reasons.</p> - -<h3 id="apply-jenkins-configuration-via-groovy-scripts-instead-of-jenkins-jobs">Apply Jenkins configuration via Groovy scripts instead of Jenkins jobs</h3> - -<p>We have removed hardcoded configuration by <strong>Jenkins</strong> jobs.</p> - -<p>In <code>v0.1.1</code> <strong>Jenkins Operator</strong> configuration was stored in <code>jenkins-operator-user-configuration-&lt;cr_name&gt;</code> -If you want to use <code>v0.2.0</code> or newer you must simply write refer to old ConfigMap by modifying CR, for example:</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>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:#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-user-configuration-&lt;cr_name<span style="color:#8f5902;font-style:italic">&gt; -</span><span style="color:#8f5902;font-style:italic"> groovyScripts:</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:#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-user-configuration-&lt;cr_name&gt;</code></pre></div> -<p><strong>Jenkins</strong> configuration jobs (<em>Configure Seed Jobs</em>, <em>jenkins-operator-base-configuration</em>, <em>jenkins-operator-user-configuration</em>) have been removed from <strong>Jenkins</strong>.</p> - -<p>In <code>v0.1.1</code> you can see if configuration failed or successfully updated in <strong>Jenkins</strong> UI (job build logs). -Now, when Jenkins configuration jobs are removed, you must use this command to see if configuration was failed.</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 -n logs deployment/jenkins-operator</code></pre></div> - - - - - Docs: Diagnostics - https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.2.0/diagnostics/ - Mon, 05 Aug 2019 00:00:00 +0000 - - https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.2.0/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">&#39;s|\(args:\).*|\1\ [&#34;--debug&#34;\]|&#39;</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">&#39;{.lastTimestamp}&#39;</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-&lt;cr_name&gt;</code></pre></div> -<p>Verify jenkins-operator 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 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-&lt;cr_name&gt;</code></pre></div> - - - - - Docs: Scheme - https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.2.0/scheme/ - Mon, 05 Aug 2019 00:00:00 +0000 - - https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.2.0/scheme/ - - - - - -<div class="pageinfo pageinfo-primary"> -<p>This document contains API scheme for <code>jenkins-operator</code> manifest</p> - -</div> - - -<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.12/#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://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#configure-seed-jobs-and-pipelines">https://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#configure-seed-jobs-and-pipelines</a></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://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#configure-backup-and-restore">https://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#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://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#configure-backup-and-restore">https://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#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> -</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.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> -</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.12/#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.12/#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&rsquo;s ENTRYPOINT is used if this is not provided. -Variable references $(VAR_NAME) are expanded using the container&rsquo;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&rsquo;s CMD is used if this is not provided. -Variable references $(VAR_NAME) are expanded using the container&rsquo;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&rsquo;s working directory. -If not specified, the container runtime&rsquo;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.12/#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 &ldquo;0.0.0.0&rdquo; 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.12/#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.12/#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.12/#volumemount-v1-core"> -[]Kubernetes core/v1.VolumeMount -</a> -</em> -</td> -<td> -<em>(Optional)</em> -<p>Pod volumes to mount into the container&rsquo;s filesystem.</p> -</td> -</tr> -<tr> -<td> -<code>livenessProbe</code></br> -<em> -<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.12/#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.12/#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.12/#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.12/#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> -</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.12/#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.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.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>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></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&rsquo;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.12/#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> -<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: &ldquo;1&rdquo; -memory: 600Mi</p> -</td> -</tr> -<tr> -<td> -<code>imagePullSecrets</code></br> -<em> -<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.12/#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.12/#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>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> -<p>BasePlugins contains plugins required by operator -Defaults to : -- name: kubernetes -version: 1.15.7 -- name: workflow-job -version: &ldquo;2.32&rdquo; -- name: workflow-aggregator -version: &ldquo;2.6&rdquo; -- name: git -version: 3.10.0 -- name: job-dsl -version: &ldquo;1.74&rdquo; -- name: configuration-as-code -version: &ldquo;1.19&rdquo; -- name: configuration-as-code-support -version: &ldquo;1.19&rdquo; -- name: kubernetes-credentials-provider -version: 0.12.1</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> -</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://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#configure-seed-jobs-and-pipelines">https://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#configure-seed-jobs-and-pipelines</a></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://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#configure-backup-and-restore">https://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#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://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#configure-backup-and-restore">https://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#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> -</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.12/#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.12/#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.12/#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> -<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>loggingLevel</code></br> -<em> -<a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.NotificationLogLevel"> -NotificationLogLevel -</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> -</tbody> -</table> -<h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.NotificationLogLevel">NotificationLogLevel -(<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>NotificationLogLevel defines logging level of 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> -</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>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.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.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.12/#localobjectreference-v1-core"> -Kubernetes core/v1.LocalObjectReference -</a> -</em> -</td> -<td> -<p>The name of the secret in the pod&rsquo;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://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#configure-seed-jobs-and-pipelines">https://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#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>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> -<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.12/#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. -&ldquo;ExternalName&rdquo; maps to the specified externalName. -&ldquo;ClusterIP&rdquo; 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 -&ldquo;None&rdquo;, no virtual IP is allocated and the endpoints are published as a -set of endpoints rather than a stable IP. -&ldquo;NodePort&rdquo; builds on ClusterIP and allocates a port on every node which -routes to the clusterIP. -&ldquo;LoadBalancer&rdquo; 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&mdash;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.&rdquo; -More info: <a href="https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/">https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/</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.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>f4c4235</code>. -</em></p> - - - - - - \ No newline at end of file diff --git a/docs/docs/getting-started/v0.2.0/migration/index.html b/docs/docs/getting-started/v0.2.0/migration/index.html deleted file mode 100644 index 24d6769a..00000000 --- a/docs/docs/getting-started/v0.2.0/migration/index.html +++ /dev/null @@ -1,533 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - -Migration from v0.1.1 | Jenkins Operator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Migration from v0.1.1 | Jenkins Operator - - -
    - - - -
    -
    -
    -
    -
    - - - - - -
    - - - - -
    - - - - -
    -
    - - - -
    -

    Migration from v0.1.1

    -
    How to migrate from v0.1.1 to v0.2.0
    - - -

    Added seed job agent

    - -

    Now seed jobs are not built by master executors, but by dedicated agent deployed into Kubernetes. We disabled master executors for security reasons.

    - -

    Apply Jenkins configuration via Groovy scripts instead of Jenkins jobs

    - -

    We have removed hardcoded configuration by Jenkins jobs.

    - -

    In v0.1.1 Jenkins Operator configuration was stored in jenkins-operator-user-configuration-<cr_name> -If you want to use v0.2.0 or newer you must simply write refer to old ConfigMap by modifying CR, for example:

    -
    apiVersion: jenkins.io/v1alpha2
    -kind: Jenkins
    -metadata:
    -  name: example
    -spec:
    -  configurationAsCode:
    -    configurations: 
    -    - name: jenkins-operator-user-configuration-<cr_name>
    -  groovyScripts:
    -    configurations:
    -    - name: jenkins-operator-user-configuration-<cr_name>
    -

    Jenkins configuration jobs (Configure Seed Jobs, jenkins-operator-base-configuration, jenkins-operator-user-configuration) have been removed from Jenkins.

    - -

    In v0.1.1 you can see if configuration failed or successfully updated in Jenkins UI (job build logs). -Now, when Jenkins configuration jobs are removed, you must use this command to see if configuration was failed.

    -
    $ kubectl -n logs deployment/jenkins-operator
    - - -
    Last modified August 5, 2019 -
    -
    - - -
    -
    -
    - - - - -
    - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/docs/getting-started/v0.2.0/scheme/index.html b/docs/docs/getting-started/v0.2.0/scheme/index.html deleted file mode 100644 index 01b36d85..00000000 --- a/docs/docs/getting-started/v0.2.0/scheme/index.html +++ /dev/null @@ -1,2480 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - -Scheme | Jenkins Operator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Scheme | Jenkins Operator - - -
    - - - -
    -
    -
    -
    -
    - - - - - -
    - - - - -
    - - - - -
    -
    - - - -
    -

    Scheme

    -
    API Schema definitions for Jenkins CR
    - - -
    -

    This document contains API scheme for jenkins-operator manifest

    - -
    - - -

    Packages:

    - -

    jenkins.io

    -

    -

    Package v1alpha2 contains API Schema definitions for the jenkins.io v1alpha2 API group

    -

    -Resource Types: - -

    Jenkins -

    -

    -

    Jenkins is the Schema for the jenkins API

    -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    -apiVersion
    -string
    - -jenkins.io/v1alpha2 - -
    -kind
    -string -
    Jenkins
    -metadata
    - - -Kubernetes meta/v1.ObjectMeta - - -
    -Refer to the Kubernetes API documentation for the fields of the -metadata field. -
    -spec
    - - -JenkinsSpec - - -
    -

    Spec defines the desired state of the Jenkins

    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -master
    - - -JenkinsMaster - - -
    -

    Master represents Jenkins master pod properties and Jenkins plugins. -Every single change here requires a pod restart.

    -
    -seedJobs
    - - -[][]github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.SeedJob - - -
    -(Optional) -

    SeedJobs defines list of Jenkins Seed Job configurations -More info: https://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#configure-seed-jobs-and-pipelines

    -
    -service
    - - -Service - - -
    -(Optional) -

    Service is Kubernetes service of Jenkins master HTTP pod -Defaults to : -port: 8080 -type: ClusterIP

    -
    -slaveService
    - - -Service - - -
    -(Optional) -

    Service is Kubernetes service of Jenkins slave pods -Defaults to : -port: 50000 -type: ClusterIP

    -
    -backup
    - - -Backup - - -
    -(Optional) -

    Backup defines configuration of Jenkins backup -More info: https://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#configure-backup-and-restore

    -
    -restore
    - - -Restore - - -
    -(Optional) -

    Backup defines configuration of Jenkins backup restore -More info: https://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#configure-backup-and-restore

    -
    -groovyScripts
    - - -GroovyScripts - - -
    -(Optional) -

    GroovyScripts defines configuration of Jenkins customization via groovy scripts

    -
    -configurationAsCode
    - - -ConfigurationAsCode - - -
    -(Optional) -

    ConfigurationAsCode defines configuration of Jenkins customization via Configuration as Code Jenkins plugin

    -
    -
    -status
    - - -JenkinsStatus - - -
    -

    Status defines the observed state of Jenkins

    -
    -

    AppliedGroovyScript -

    -

    -(Appears on: -JenkinsStatus) -

    -

    -

    AppliedGroovyScript is the applied groovy script in Jenkins by the operator

    -

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    -configurationType
    - -string - -
    -

    ConfigurationType is the name of the configuration type(base-groovy, user-groovy, user-casc)

    -
    -source
    - -string - -
    -

    Source is the name of source where is located groovy script

    -
    -name
    - -string - -
    -

    Name is the name of the groovy script

    -
    -Hash
    - -string - -
    -

    Hash is the hash of the groovy script and secrets which it uses

    -
    -

    Backup -

    -

    -(Appears on: -JenkinsSpec) -

    -

    -

    Backup defines configuration of Jenkins backup

    -

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    -containerName
    - -string - -
    -

    ContainerName is the container name responsible for backup operation

    -
    -action
    - - -Handler - - -
    -

    Action defines action which performs backup in backup container sidecar

    -
    -interval
    - -uint64 - -
    -

    Interval tells how often make backup in seconds -Defaults to 30.

    -
    -makeBackupBeforePodDeletion
    - -bool - -
    -

    MakeBackupBeforePodDeletion tells operator to make backup before Jenkins master pod deletion

    -
    -

    ConfigMapRef -

    -

    -(Appears on: -Customization) -

    -

    -

    ConfigMapRef is reference to Kubernetes ConfigMap

    -

    - - - - - - - - - - - - - -
    FieldDescription
    -name
    - -string - -
    -
    -

    ConfigurationAsCode -

    -

    -(Appears on: -JenkinsSpec) -

    -

    -

    ConfigurationAsCode defines configuration of Jenkins customization via Configuration as Code Jenkins plugin

    -

    - - - - - - - - - - - - - -
    FieldDescription
    -Customization
    - - -Customization - - -
    -
    -

    Container -

    -

    -(Appears on: -JenkinsMaster) -

    -

    -

    Container defines Kubernetes container attributes

    -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    -name
    - -string - -
    -

    Name of the container specified as a DNS_LABEL. -Each container in a pod must have a unique name (DNS_LABEL).

    -
    -image
    - -string - -
    -

    Docker image name. -More info: https://kubernetes.io/docs/concepts/containers/images

    -
    -imagePullPolicy
    - - -Kubernetes core/v1.PullPolicy - - -
    -

    Image pull policy. -One of Always, Never, IfNotPresent. -Defaults to Always.

    -
    -resources
    - - -Kubernetes core/v1.ResourceRequirements - - -
    -

    Compute Resources required by this container. -More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/

    -
    -command
    - -[]string - -
    -(Optional) -

    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: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell

    -
    -args
    - -[]string - -
    -(Optional) -

    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: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell

    -
    -workingDir
    - -string - -
    -(Optional) -

    Container’s working directory. -If not specified, the container runtime’s default will be used, which -might be configured in the container image.

    -
    -ports
    - - -[]Kubernetes core/v1.ContainerPort - - -
    -(Optional) -

    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.

    -
    -envFrom
    - - -[]Kubernetes core/v1.EnvFromSource - - -
    -(Optional) -

    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.

    -
    -env
    - - -[]Kubernetes core/v1.EnvVar - - -
    -(Optional) -

    List of environment variables to set in the container.

    -
    -volumeMounts
    - - -[]Kubernetes core/v1.VolumeMount - - -
    -(Optional) -

    Pod volumes to mount into the container’s filesystem.

    -
    -livenessProbe
    - - -Kubernetes core/v1.Probe - - -
    -(Optional) -

    Periodic probe of container liveness. -Container will be restarted if the probe fails.

    -
    -readinessProbe
    - - -Kubernetes core/v1.Probe - - -
    -(Optional) -

    Periodic probe of container service readiness. -Container will be removed from service endpoints if the probe fails.

    -
    -lifecycle
    - - -Kubernetes core/v1.Lifecycle - - -
    -(Optional) -

    Actions that the management system should take in response to container lifecycle events.

    -
    -securityContext
    - - -Kubernetes core/v1.SecurityContext - - -
    -(Optional) -

    Security options the pod should run with. -More info: https://kubernetes.io/docs/concepts/policy/security-context/ -More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/

    -
    -

    Customization -

    -

    -(Appears on: -ConfigurationAsCode, -GroovyScripts) -

    -

    -

    Customization defines configuration of Jenkins customization

    -

    - - - - - - - - - - - - - - - - - -
    FieldDescription
    -secret
    - - -SecretRef - - -
    -
    -configurations
    - - -[][]github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.ConfigMapRef - - -
    -
    -

    GroovyScripts -

    -

    -(Appears on: -JenkinsSpec) -

    -

    -

    GroovyScripts defines configuration of Jenkins customization via groovy scripts

    -

    - - - - - - - - - - - - - -
    FieldDescription
    -Customization
    - - -Customization - - -
    -
    -

    Handler -

    -

    -(Appears on: -Backup, -Restore) -

    -

    -

    Handler defines a specific action that should be taken

    -

    - - - - - - - - - - - - - -
    FieldDescription
    -exec
    - - -Kubernetes core/v1.ExecAction - - -
    -

    Exec specifies the action to take.

    -
    -

    JenkinsCredentialType -(string alias)

    -

    -(Appears on: -SeedJob) -

    -

    -

    JenkinsCredentialType defines type of Jenkins credential used to seed job mechanism

    -

    -

    JenkinsMaster -

    -

    -(Appears on: -JenkinsSpec) -

    -

    -

    JenkinsMaster defines the Jenkins master pod attributes and plugins, -every single change requires a Jenkins master pod restart

    -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    -masterAnnotations
    - -map[string]string - -
    -(Optional) -

    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: http://kubernetes.io/docs/user-guide/annotations

    -
    -nodeSelector
    - -map[string]string - -
    -(Optional) -

    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: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/

    -
    -securityContext
    - - -Kubernetes core/v1.PodSecurityContext - - -
    -(Optional) -

    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

    -
    -containers
    - - -[][]github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Container - - -
    -

    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

    -
    -imagePullSecrets
    - - -[]Kubernetes core/v1.LocalObjectReference - - -
    -(Optional) -

    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: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod

    -
    -volumes
    - - -[]Kubernetes core/v1.Volume - - -
    -(Optional) -

    List of volumes that can be mounted by containers belonging to the pod. -More info: https://kubernetes.io/docs/concepts/storage/volumes

    -
    -basePlugins
    - - -[][]github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Plugin - - -
    -

    BasePlugins contains plugins required by operator -Defaults to : -- name: kubernetes -version: 1.15.7 -- name: workflow-job -version: “2.32” -- name: workflow-aggregator -version: “2.6” -- name: git -version: 3.10.0 -- name: job-dsl -version: “1.74” -- name: configuration-as-code -version: “1.19” -- name: configuration-as-code-support -version: “1.19” -- name: kubernetes-credentials-provider -version: 0.12.1

    -
    -plugins
    - - -[][]github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Plugin - - -
    -(Optional) -

    Plugins contains plugins required by user

    -
    -

    JenkinsSpec -

    -

    -(Appears on: -Jenkins) -

    -

    -

    JenkinsSpec defines the desired state of the Jenkins

    -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    -master
    - - -JenkinsMaster - - -
    -

    Master represents Jenkins master pod properties and Jenkins plugins. -Every single change here requires a pod restart.

    -
    -seedJobs
    - - -[][]github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.SeedJob - - -
    -(Optional) -

    SeedJobs defines list of Jenkins Seed Job configurations -More info: https://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#configure-seed-jobs-and-pipelines

    -
    -service
    - - -Service - - -
    -(Optional) -

    Service is Kubernetes service of Jenkins master HTTP pod -Defaults to : -port: 8080 -type: ClusterIP

    -
    -slaveService
    - - -Service - - -
    -(Optional) -

    Service is Kubernetes service of Jenkins slave pods -Defaults to : -port: 50000 -type: ClusterIP

    -
    -backup
    - - -Backup - - -
    -(Optional) -

    Backup defines configuration of Jenkins backup -More info: https://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#configure-backup-and-restore

    -
    -restore
    - - -Restore - - -
    -(Optional) -

    Backup defines configuration of Jenkins backup restore -More info: https://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#configure-backup-and-restore

    -
    -groovyScripts
    - - -GroovyScripts - - -
    -(Optional) -

    GroovyScripts defines configuration of Jenkins customization via groovy scripts

    -
    -configurationAsCode
    - - -ConfigurationAsCode - - -
    -(Optional) -

    ConfigurationAsCode defines configuration of Jenkins customization via Configuration as Code Jenkins plugin

    -
    -

    JenkinsStatus -

    -

    -(Appears on: -Jenkins) -

    -

    -

    JenkinsStatus defines the observed state of Jenkins

    -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    -operatorVersion
    - -string - -
    -(Optional) -

    OperatorVersion is the operator version which manages this CR

    -
    -provisionStartTime
    - - -Kubernetes meta/v1.Time - - -
    -(Optional) -

    ProvisionStartTime is a time when Jenkins master pod has been created

    -
    -baseConfigurationCompletedTime
    - - -Kubernetes meta/v1.Time - - -
    -(Optional) -

    BaseConfigurationCompletedTime is a time when Jenkins base configuration phase has been completed

    -
    -userConfigurationCompletedTime
    - - -Kubernetes meta/v1.Time - - -
    -(Optional) -

    UserConfigurationCompletedTime is a time when Jenkins user configuration phase has been completed

    -
    -restoredBackup
    - -uint64 - -
    -(Optional) -

    RestoredBackup is the restored backup number after Jenkins master pod restart

    -
    -lastBackup
    - -uint64 - -
    -(Optional) -

    LastBackup is the latest backup number

    -
    -pendingBackup
    - -uint64 - -
    -(Optional) -

    PendingBackup is the pending backup number

    -
    -backupDoneBeforePodDeletion
    - -bool - -
    -(Optional) -

    BackupDoneBeforePodDeletion tells if backup before pod deletion has been made

    -
    -userAndPasswordHash
    - -string - -
    -(Optional) -

    UserAndPasswordHash is a SHA256 hash made from user and password

    -
    -createdSeedJobs
    - -[]string - -
    -(Optional) -

    CreatedSeedJobs contains list of seed job id already created in Jenkins

    -
    -appliedGroovyScripts
    - - -[][]github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.AppliedGroovyScript - - -
    -(Optional) -

    AppliedGroovyScripts is a list with all applied groovy scripts in Jenkins by the operator

    -
    -

    Mailgun -

    -

    -(Appears on: -Notification) -

    -

    -

    Mailgun is handler for Mailgun email service notification channel

    -

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    -domain
    - -string - -
    -
    -apiKeySecretKeySelector
    - - -SecretKeySelector - - -
    -
    -recipient
    - -string - -
    -
    -from
    - -string - -
    -
    -

    MicrosoftTeams -

    -

    -(Appears on: -Notification) -

    -

    -

    MicrosoftTeams is handler for Microsoft MicrosoftTeams notification channel

    -

    - - - - - - - - - - - - - -
    FieldDescription
    -webHookURLSecretKeySelector
    - - -SecretKeySelector - - -
    -

    The web hook URL to MicrosoftTeams App

    -
    -

    Notification -

    -

    -

    Notification is a service configuration used to send notifications about Jenkins status

    -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    -loggingLevel
    - - -NotificationLogLevel - - -
    -
    -verbose
    - -bool - -
    -
    -name
    - -string - -
    -
    -slack
    - - -github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Slack - - -
    -
    -teams
    - - -github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.MicrosoftTeams - - -
    -
    -mailgun
    - - -github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Mailgun - - -
    -
    -

    NotificationLogLevel -(string alias)

    -

    -(Appears on: -Notification) -

    -

    -

    NotificationLogLevel defines logging level of Notification

    -

    -

    Plugin -

    -

    -(Appears on: -JenkinsMaster) -

    -

    -

    Plugin defines Jenkins plugin

    -

    - - - - - - - - - - - - - - - - - -
    FieldDescription
    -name
    - -string - -
    -

    Name is the name of Jenkins plugin

    -
    -version
    - -string - -
    -

    Version is the version of Jenkins plugin

    -
    -

    Restore -

    -

    -(Appears on: -JenkinsSpec) -

    -

    -

    Restore defines configuration of Jenkins backup restore operation

    -

    - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    -containerName
    - -string - -
    -

    ContainerName is the container name responsible for restore backup operation

    -
    -action
    - - -Handler - - -
    -

    Action defines action which performs restore backup in restore container sidecar

    -
    -recoveryOnce
    - -uint64 - -
    -(Optional) -

    RecoveryOnce if want to restore specific backup set this field and then Jenkins will be restarted and desired backup will be restored

    -
    -

    SecretKeySelector -

    -

    -(Appears on: -Mailgun, -MicrosoftTeams, -Slack) -

    -

    -

    SecretKeySelector selects a key of a Secret.

    -

    - - - - - - - - - - - - - - - - - -
    FieldDescription
    -secret
    - - -Kubernetes core/v1.LocalObjectReference - - -
    -

    The name of the secret in the pod’s namespace to select from.

    -
    -key
    - -string - -
    -

    The key of the secret to select from. Must be a valid secret key.

    -
    -

    SecretRef -

    -

    -(Appears on: -Customization) -

    -

    -

    SecretRef is reference to Kubernetes secret

    -

    - - - - - - - - - - - - - -
    FieldDescription
    -name
    - -string - -
    -
    -

    SeedJob -

    -

    -(Appears on: -JenkinsSpec) -

    -

    -

    SeedJob defines configuration for seed job -More info: https://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#configure-seed-jobs-and-pipelines

    -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    -id
    - -string - -
    -

    ID is the unique seed job name

    -
    -credentialID
    - -string - -
    -

    CredentialID is the Kubernetes secret name which stores repository access credentials

    -
    -description
    - -string - -
    -(Optional) -

    Description is the description of the seed job

    -
    -targets
    - -string - -
    -

    Targets is the repository path where are seed job definitions

    -
    -repositoryBranch
    - -string - -
    -

    RepositoryBranch is the repository branch where are seed job definitions

    -
    -repositoryUrl
    - -string - -
    -

    RepositoryURL is the repository access URL. Can be SSH or HTTPS.

    -
    -credentialType
    - - -JenkinsCredentialType - - -
    -(Optional) -

    JenkinsCredentialType is the https://jenkinsci.github.io/kubernetes-credentials-provider-plugin/ credential type

    -
    -githubPushTrigger
    - -bool - -
    -(Optional) -

    GitHubPushTrigger is used for GitHub web hooks

    -
    -buildPeriodically
    - -string - -
    -(Optional) -

    BuildPeriodically is setting for scheduled trigger

    -
    -pollSCM
    - -string - -
    -(Optional) -

    PollSCM is setting for polling changes in SCM

    -
    -ignoreMissingFiles
    - -bool - -
    -(Optional) -

    IgnoreMissingFiles is setting for Job DSL API plugin to ignore files that miss

    -
    -additionalClasspath
    - -string - -
    -(Optional) -

    AdditionalClasspath is setting for Job DSL API plugin to set Additional Classpath

    -
    -failOnMissingPlugin
    - -bool - -
    -(Optional) -

    FailOnMissingPlugin is setting for Job DSL API plugin that fails job if required plugin is missing

    -
    -unstableOnDeprecation
    - -bool - -
    -(Optional) -

    UnstableOnDeprecation is setting for Job DSL API plugin that sets build status as unstable if build using deprecated features

    -
    -

    Service -

    -

    -(Appears on: -JenkinsSpec) -

    -

    -

    Service defines Kubernetes service attributes

    -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    -annotations
    - -map[string]string - -
    -(Optional) -

    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: http://kubernetes.io/docs/user-guide/annotations

    -
    -labels
    - -map[string]string - -
    -

    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: https://kubernetes.io/docs/concepts/services-networking/service/

    -
    -type
    - - -Kubernetes core/v1.ServiceType - - -
    -(Optional) -

    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: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services—service-types

    -
    -port
    - -int32 - -
    -

    The port that are exposed by this service. -More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies

    -
    -nodePort
    - -int32 - -
    -(Optional) -

    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: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport

    -
    -loadBalancerSourceRanges
    - -[]string - -
    -(Optional) -

    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: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/

    -
    -loadBalancerIP
    - -string - -
    -(Optional) -

    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.

    -
    -

    Slack -

    -

    -(Appears on: -Notification) -

    -

    -

    Slack is handler for Slack notification channel

    -

    - - - - - - - - - - - - - -
    FieldDescription
    -webHookURLSecretKeySelector
    - - -SecretKeySelector - - -
    -

    The web hook URL to Slack App

    -
    -
    -

    -Generated with gen-crd-api-reference-docs -on git commit f4c4235. -

    - - - -
    Last modified August 5, 2019 -
    -
    - - -
    -
    -
    - - - - -
    - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/docs/index.xml b/docs/docs/index.xml index bec574ad..7e10d9f2 100644 --- a/docs/docs/index.xml +++ b/docs/docs/index.xml @@ -112,16 +112,16 @@ spec: description: <span style="color:#4e9a06">&#34;Jenkins Operator repository&#34;</span> repositoryBranch: master repositoryUrl: https://github.com/jenkinsci/kubernetes-operator.git</code></pre></div> -<p>Deploy Jenkins to K8s:</p> +<p>Deploy a Jenkins to K8s:</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 Jenkins instance being created:</p> +<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 Jenkins credentials:</p> +<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-&lt;cr_name&gt; -o <span style="color:#4e9a06">&#39;jsonpath={.data.user}&#39;</span> <span style="color:#000;font-weight:bold">|</span> base64 -d kubectl get secret jenkins-operator-credentials-&lt;cr_name&gt; -o <span style="color:#4e9a06">&#39;jsonpath={.data.password}&#39;</span> <span style="color:#000;font-weight:bold">|</span> base64 -d</code></pre></div> -<p>Connect to Jenkins (minikube):</p> +<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-&lt;cr_name&gt; --url</code></pre></div> -<p>Connect to Jenkins (actual Kubernetes cluster):</p> +<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-&lt;cr_name&gt; <span style="color:#0000cf;font-weight:bold">8080</span>:8080</code></pre></div> <p>Then open browser with address <code>http://localhost:8080</code>. <img src="https://jenkinsci.github.io/kubernetes-operator/img/jenkins.png" alt="jenkins" /></p> @@ -231,7 +231,7 @@ and deploy keys.</p> └── build.jenkins </code></pre> -<p><strong>cicd/jobs/build.jenkins</strong> it&rsquo;s a job definition:</p> +<p><strong>cicd/jobs/build.jenkins</strong> is a job definition:</p> <pre><code>#!/usr/bin/env groovy @@ -255,7 +255,7 @@ pipelineJob('build-jenkins-operator') { } </code></pre> -<p><strong>cicd/pipelines/build.jenkins</strong> it&rsquo;s an actual Jenkins pipeline:</p> +<p><strong>cicd/pipelines/build.jenkins</strong> is an actual Jenkins pipeline:</p> <pre><code>#!/usr/bin/env groovy @@ -324,13 +324,13 @@ spec: repositoryUrl: https://github.com/jenkinsci/kubernetes-operator.git </code></pre> -<p><strong>Jenkins Operator</strong> will automatically discover and configure all seed jobs.</p> +<p><strong>Jenkins Operator</strong> will automatically discover and configure all the seed jobs.</p> -<p>You can verify if deploy keys were successfully configured in Jenkins <strong>Credentials</strong> tab.</p> +<p>You can verify if deploy keys were successfully configured in the Jenkins <strong>Credentials</strong> tab.</p> <p><img src="https://jenkinsci.github.io/kubernetes-operator/kubernetes-operator/img/jenkins-credentials.png" alt="jenkins" /></p> -<p>You can verify if your pipelines were successfully configured in Jenkins Seed Job console output.</p> +<p>You can verify if your pipelines were successfully configured in the Jenkins Seed Job console output.</p> <p><img src="https://jenkinsci.github.io/kubernetes-operator/kubernetes-operator/img/jenkins-seed.png" alt="jenkins" /></p> @@ -357,7 +357,7 @@ $ ssh-keygen -p -f &lt;filename&gt; -m pem</code></pre></ <h4 id="configure-ssh-authentication">Configure SSH authentication</h4> -<p>Configure seed job like:</p> +<p>Configure a seed job like this:</p> <pre><code>apiVersion: jenkins.io/v1alpha2 kind: Jenkins @@ -374,7 +374,7 @@ spec: repositoryUrl: git@github.com:jenkinsci/kubernetes-operator.git </code></pre> -<p>and create Kubernetes Secret(name of secret should be the same from <code>credentialID</code> field):</p> +<p>and create a Kubernetes Secret (name of secret should be the same from <code>credentialID</code> field):</p> <pre><code>apiVersion: v1 kind: Secret @@ -391,7 +391,7 @@ stringData: <h3 id="username-password-authentication">Username &amp; password authentication</h3> -<p>Configure seed job like:</p> +<p>Configure the seed job like:</p> <pre><code>apiVersion: jenkins.io/v1alpha2 kind: Jenkins @@ -408,7 +408,7 @@ spec: repositoryUrl: https://github.com/jenkinsci/kubernetes-operator.git </code></pre> -<p>and create Kubernetes Secret(name of secret should be the same from <code>credentialID</code> field):</p> +<p>and create a Kubernetes Secret (name of secret should be the same from <code>credentialID</code> field):</p> <pre><code>apiVersion: v1 kind: Secret @@ -421,7 +421,7 @@ stringData: <h2 id="http-proxy-for-downloading-plugins">HTTP Proxy for downloading plugins</h2> -<p>To use forwarding proxy with operator to downloading plugins you need to put environment var to Jenkins CR, for e.g.:</p> +<p>To use forwarding proxy with an operator to download plugins you need to add the following environment variable to Jenkins CR, for 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">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>containers<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> @@ -433,7 +433,7 @@ stringData: <h2 id="pulling-docker-images-from-private-repositories">Pulling Docker images from private repositories</h2> -<p>To pull Docker Image from private repository you can use <code>imagePullSecrets</code>.</p> +<p>To pull a Docker Image from private repository you can use <code>imagePullSecrets</code>.</p> <p>Please follow the instructions on <a href="https://kubernetes.io/docs/concepts/containers/images/?origin_team=T42NTAGHM#creating-a-secret-with-a-docker-config" target="_blank">creating a secret with a docker config</a>.</p> @@ -445,7 +445,7 @@ stringData: <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 -n &lt;namespace&gt; edit secret &lt;name&gt;</code></pre></div> <p>The <code>.dockerconfigjson</code> key&rsquo;s value needs to be replaced with a modified version.</p> -<p>After modifications it needs to be encoded as Base64 value before setting the <code>.dockerconfigjson</code> key:q.</p> +<p>After modifications, it needs to be encoded as a Base64 value before setting the <code>.dockerconfigjson</code> key:q.</p> <p>Example config file to modify and use:</p> @@ -928,7 +928,7 @@ spec: </span><span style="color:#f8f8f8;text-decoration:underline"> </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">0.12</span>.<span style="color:#0000cf;font-weight:bold">1</span></code></pre></div> <p>You can change their versions.</p> -<p>Then the <strong>Jenkins Operator</strong> will automatically install plugins after the Jenkins master pod restarts.</p> +<p>The <strong>Jenkins Operator</strong> will then automatically install plugins after the Jenkins master pod restarts.</p> @@ -1055,7 +1055,7 @@ spec: - <p>Azure AKS managed Kubernetes service adds to every pod the following envs:</p> + <p>Azure AKS managed Kubernetes service adds to every pod the following environment variables:</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>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>KUBERNETES_PORT_443_TCP_ADDR<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><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>KUBERNETES_PORT<span style="color:#f8f8f8;text-decoration:underline"> @@ -1064,8 +1064,8 @@ spec: </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>tcp<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>KUBERNETES_SERVICE_HOST<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></code></pre></div> -<p>The operator is aware of it and omits these envs when checking if Jenkins pod envs have been changed. It prevents -restart Jenkins pod over and over again.</p> +<p>The operator is aware of it and omits these environment variables when checking if a Jenkins pod environment has been changed. It prevents the +restart of a Jenkins pod over and over again.</p> @@ -1105,13 +1105,13 @@ the restart of a Jenkins pod over and over again.</p> -<p>Backup and restore is done by container sidecar.</p> +<p>Backup and restore is done by a container sidecar.</p> <h3 id="pvc">PVC</h3> <h4 id="create-pvc">Create PVC</h4> -<p>Save to file pvc.yaml:</p> +<p>Save to the file named pvc.yaml:</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>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>PersistentVolumeClaim<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"> @@ -1123,7 +1123,7 @@ the restart of a Jenkins pod over and over again.</p> </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>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>storage<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>500Gi</code></pre></div> -<p>Run command:</p> +<p>Run the following command:</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 -n &lt;namespace&gt; create -f pvc.yaml</code></pre></div> <h4 id="configure-jenkins-cr">Configure Jenkins CR</h4> <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"> @@ -1139,7 +1139,7 @@ the restart of a Jenkins pod over and over again.</p> </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>lts<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>-<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 the backup and restore</span><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_DIR<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>/backup<span style="color:#f8f8f8;text-decoration:underline"> @@ -1165,7 +1165,7 @@ the restart of a Jenkins pod over and over again.</p> </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:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/backup.sh<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># this command is invoked on &#34;backup&#34; container to make backup, for example /home/user/bin/backup.sh &lt;backup_number&gt;, &lt;backup_number&gt; is passed by operator</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">30</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># how often make 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"># make backup before pod deletion</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"># make a backup before pod deletion</span><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"> @@ -1461,14 +1461,14 @@ If needed, the docker image can easily be changed in custom resource manifest as <h3 id="added-seed-job-agent">Added seed job agent</h3> -<p>Now seed jobs are not built by master executors, but by dedicated agent deployed into Kubernetes. We disabled master executors for security reasons.</p> +<p>Seed jobs are not built by master executors, but by dedicated agents deployed into Kubernetes. We disabled master executors for security reasons.</p> <h3 id="apply-jenkins-configuration-via-groovy-scripts-instead-of-jenkins-jobs">Apply Jenkins configuration via Groovy scripts instead of Jenkins jobs</h3> -<p>We have removed hardcoded configuration by <strong>Jenkins</strong> jobs.</p> +<p>We have removed the hardcoded configuration by <strong>Jenkins</strong> jobs.</p> <p>In <code>v0.1.1</code> <strong>Jenkins Operator</strong> configuration was stored in <code>jenkins-operator-user-configuration-&lt;cr_name&gt;</code> -If you want to use <code>v0.2.0</code> or newer you must simply write refer to old ConfigMap by modifying CR, for example:</p> +If you want to use <code>v0.2.0</code> or newer you must simply write refererences to old ConfigMap by modifying CR, for example:</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"> @@ -1486,8 +1486,8 @@ If you want to use <code>v0.2.0</code> or newer you must simply writ </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-user-configuration-&lt;cr_name&gt;</code></pre></div> <p><strong>Jenkins</strong> configuration jobs (<em>Configure Seed Jobs</em>, <em>jenkins-operator-base-configuration</em>, <em>jenkins-operator-user-configuration</em>) have been removed from <strong>Jenkins</strong>.</p> -<p>In <code>v0.1.1</code> you can see if configuration failed or successfully updated in <strong>Jenkins</strong> UI (job build logs). -Now, when Jenkins configuration jobs are removed, you must use this command to see if configuration was failed.</p> +<p>In <code>v0.1.1</code> you can see if the configuration failed or successfully updated in <strong>Jenkins</strong> UI (job build logs). +When Jenkins configuration jobs are removed, you must use the following command to see if configuration was failed.</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 -n logs deployment/jenkins-operator</code></pre></div> @@ -1574,7 +1574,7 @@ kubectl apply -f deploy/operator.yaml</code></pre></div> <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 Jenkins master pod and wait for the new one to come up:</p> +<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-&lt;cr_name&gt;</code></pre></div> @@ -1631,7 +1631,7 @@ kubectl apply -f deploy/operator.yaml</code></pre></div> </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>Package v1alpha2 contains the API Schema definitions for the jenkins.io v1alpha2 API group</p> </p> Resource Types: <ul><li> @@ -1720,7 +1720,7 @@ Every single change here requires a pod restart.</p> </td> <td> <em>(Optional)</em> -<p>SeedJobs defines list of Jenkins Seed Job configurations +<p>SeedJobs defines a list of Jenkins Seed Job configurations More info: <a href="https://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#configure-seed-jobs-and-pipelines">https://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#configure-seed-jobs-and-pipelines</a></p> </td> </tr> @@ -1735,7 +1735,7 @@ Service </td> <td> <em>(Optional)</em> -<p>Service is Kubernetes service of Jenkins master HTTP pod +<p>Service is the Kubernetes service of the Jenkins master HTTP pod Defaults to : port: 8080 type: ClusterIP</p> @@ -1752,7 +1752,7 @@ Service </td> <td> <em>(Optional)</em> -<p>Service is Kubernetes service of Jenkins slave pods +<p>Service is the Kubernetes service of the Jenkins slave pods Defaults to : port: 50000 type: ClusterIP</p> @@ -1769,7 +1769,7 @@ Backup </td> <td> <em>(Optional)</em> -<p>Backup defines configuration of Jenkins backup +<p>Backup defines the configuration of a Jenkins backup More info: <a href="https://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#configure-backup-and-restore">https://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#configure-backup-and-restore</a></p> </td> </tr> @@ -1784,7 +1784,7 @@ Restore </td> <td> <em>(Optional)</em> -<p>Backup defines configuration of Jenkins backup restore +<p>Backup defines the configuration of a Jenkins backup restore More info: <a href="https://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#configure-backup-and-restore">https://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#configure-backup-and-restore</a></p> </td> </tr> @@ -1799,7 +1799,7 @@ GroovyScripts </td> <td> <em>(Optional)</em> -<p>GroovyScripts defines configuration of Jenkins customization via groovy scripts</p> +<p>GroovyScripts defines the configuration of Jenkins customization via groovy scripts</p> </td> </tr> <tr> @@ -1813,7 +1813,7 @@ ConfigurationAsCode </td> <td> <em>(Optional)</em> -<p>ConfigurationAsCode defines configuration of Jenkins customization via Configuration as Code Jenkins plugin</p> +<p>ConfigurationAsCode defines the configuration of Jenkins customization via the Configuration as Code Jenkins plugin</p> </td> </tr> </table> @@ -1904,7 +1904,7 @@ string <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>Backup defines the configuration of a Jenkins backup</p> </p> <table> <thead> @@ -1935,7 +1935,7 @@ Handler </em> </td> <td> -<p>Action defines action which performs backup in backup container sidecar</p> +<p>Action defines the action which performs the backup in the backup container sidecar</p> </td> </tr> <tr> @@ -1946,7 +1946,7 @@ uint64 </em> </td> <td> -<p>Interval tells how often make backup in seconds +<p>Interval tells you how often the backup is made in seconds Defaults to 30.</p> </td> </tr> @@ -1958,7 +1958,7 @@ bool </em> </td> <td> -<p>MakeBackupBeforePodDeletion tells operator to make backup before Jenkins master pod deletion</p> +<p>MakeBackupBeforePodDeletion tells the operator to make a backup before Jenkins master pod deletion</p> </td> </tr> </tbody> @@ -1970,7 +1970,7 @@ bool <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>ConfigMapRef is the reference to Kubernetes ConfigMap</p> </p> <table> <thead> @@ -1999,7 +1999,7 @@ string <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>ConfigurationAsCode defines configuration of Jenkins customization via the Configuration as Code Jenkins plugin</p> </p> <table> <thead> @@ -2030,7 +2030,7 @@ Customization <a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.JenkinsMaster">JenkinsMaster</a>) </p> <p> -<p>Container defines Kubernetes container attributes</p> +<p>Container defines the Kubernetes container attributes</p> </p> <table> <thead> @@ -2385,7 +2385,7 @@ Kubernetes core/v1.ExecAction <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>JenkinsCredentialType defines the type of Jenkins credential used in the seed job mechanism</p> </p> <h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.JenkinsMaster">JenkinsMaster </h3> @@ -2845,7 +2845,7 @@ string </td> <td> <em>(Optional)</em> -<p>UserAndPasswordHash is a SHA256 hash made from user and password</p> +<p>UserAndPasswordHash is a SHA256 hash made from the username and password</p> </td> </tr> <tr> @@ -2857,7 +2857,7 @@ string </td> <td> <em>(Optional)</em> -<p>CreatedSeedJobs contains list of seed job id already created in Jenkins</p> +<p>CreatedSeedJobs contains list of seed job ids already created in Jenkins</p> </td> </tr> <tr> @@ -3291,7 +3291,7 @@ string </em> </td> <td> -<p>Targets is the repository path where are seed job definitions</p> +<p>Targets is the repository path where the seed job definitions are</p> </td> </tr> <tr> @@ -3302,7 +3302,7 @@ string </em> </td> <td> -<p>RepositoryBranch is the repository branch where are seed job definitions</p> +<p>RepositoryBranch is the repository branch where the seed job definitions are</p> </td> </tr> <tr> @@ -3499,7 +3499,7 @@ int32 </em> </td> <td> -<p>The port that are exposed by this service. +<p>The port that is 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> @@ -3514,7 +3514,7 @@ int32 <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. +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> @@ -3529,7 +3529,7 @@ More info: <a href="https://kubernetes.io/docs/concepts/services-networki <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 +the load-balancer will be restricted to the specified client IPs. This field will be ignored if the cloud-provider does not support the feature.&rdquo; More info: <a href="https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/">https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/</a></p> </td> diff --git a/docs/js/main.min.5bda6af5e264133f7eab7e56629c1a66ffdfb61529ff43fa8d08bba860b76496.js b/docs/js/main.min.5bda6af5e264133f7eab7e56629c1a66ffdfb61529ff43fa8d08bba860b76496.js deleted file mode 100644 index c0321fd7..00000000 --- a/docs/js/main.min.5bda6af5e264133f7eab7e56629c1a66ffdfb61529ff43fa8d08bba860b76496.js +++ /dev/null @@ -1,5 +0,0 @@ -(function($){'use strict';$(function(){$('[data-toggle="tooltip"]').tooltip();$('[data-toggle="popover"]').popover();$('.popover-dismiss').popover({trigger:'focus'})});function bottomPos(element){return element.offset().top+element.outerHeight();} -$(function(){var promo=$(".js-td-cover");if(!promo.length){return} -var promoOffset=bottomPos(promo);var navbarOffset=$('.js-navbar-scroll').offset().top;var threshold=Math.ceil($('.js-navbar-scroll').outerHeight());if((promoOffset-navbarOffset)