11947 lines
		
	
	
		
			817 KiB
		
	
	
	
		
			XML
		
	
	
	
			
		
		
	
	
			11947 lines
		
	
	
		
			817 KiB
		
	
	
	
		
			XML
		
	
	
	
| <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
 | ||
|   <channel>
 | ||
|     <title>Jenkins Operator – Documentation</title>
 | ||
|     <link>https://jenkinsci.github.io/kubernetes-operator/docs/</link>
 | ||
|     <description>Recent Hugo news from gohugo.io</description>
 | ||
|     <generator>Hugo -- gohugo.io</generator>
 | ||
|     <lastBuildDate>Tue, 03 Sep 2019 00:00:00 +0000</lastBuildDate>
 | ||
|     <image>
 | ||
|       <url>https://jenkinsci.github.io/kubernetes-operator/img/hugo.png</url>
 | ||
|       <title>GoHugo.io</title>
 | ||
|       <link>https://jenkinsci.github.io/kubernetes-operator/docs/</link>
 | ||
|     </image>
 | ||
|     
 | ||
| 	  <atom:link href="https://jenkinsci.github.io/kubernetes-operator/docs/index.xml" rel="self" type="application/rss+xml" />
 | ||
|     
 | ||
|     
 | ||
|       
 | ||
|         
 | ||
|       
 | ||
|     
 | ||
|     
 | ||
|     <item>
 | ||
|       <title>Docs: Deploy Jenkins</title>
 | ||
|       <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/deploy-jenkins/</link>
 | ||
|       <pubDate>Mon, 13 Apr 2020 00:00:00 +0000</pubDate>
 | ||
|       
 | ||
|       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/deploy-jenkins/</guid>
 | ||
|       <description>
 | ||
|         
 | ||
|         
 | ||
|         <p>Once Jenkins Operator is up and running let&rsquo;s deploy actual Jenkins instance.
 | ||
| Create manifest e.g. <strong><code>jenkins_instance.yaml</code></strong> with following data and save it on drive.</p>
 | ||
| <div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-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 a Jenkins to Kubernetes:</p>
 | ||
| <div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">kubectl create -f jenkins_instance.yaml</code></pre></div>
 | ||
| <p>Watch the Jenkins instance being created:</p>
 | ||
| <div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">kubectl get pods -w</code></pre></div>
 | ||
| <p>Get the Jenkins credentials:</p>
 | ||
| <div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">kubectl get secret jenkins-operator-credentials-&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 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 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>.</p>
 | ||
| 
 | ||
| <p><img src="https://jenkinsci.github.io/kubernetes-operator/kubernetes-operator/img/jenkins.png" alt="jenkins" /></p>
 | ||
| 
 | ||
|       </description>
 | ||
|     </item>
 | ||
|     
 | ||
|     <item>
 | ||
|       <title>Docs: Deploy Jenkins</title>
 | ||
|       <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.3.x/deploy-jenkins/</link>
 | ||
|       <pubDate>Fri, 20 Dec 2019 00:00:00 +0000</pubDate>
 | ||
|       
 | ||
|       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.3.x/deploy-jenkins/</guid>
 | ||
|       <description>
 | ||
|         
 | ||
|         
 | ||
|         <p>Once Jenkins Operator is up and running let&rsquo;s deploy actual Jenkins instance.
 | ||
| Create manifest e.g. <strong><code>jenkins_instance.yaml</code></strong> with following data and save it on drive.</p>
 | ||
| <div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-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 a Jenkins to Kubernetes:</p>
 | ||
| <div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">kubectl create -f jenkins_instance.yaml</code></pre></div>
 | ||
| <p>Watch the Jenkins instance being created:</p>
 | ||
| <div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">kubectl get pods -w</code></pre></div>
 | ||
| <p>Get the Jenkins credentials:</p>
 | ||
| <div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">kubectl get secret jenkins-operator-credentials-&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 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 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>.</p>
 | ||
| 
 | ||
| <p><img src="https://jenkinsci.github.io/kubernetes-operator/kubernetes-operator/img/jenkins.png" alt="jenkins" /></p>
 | ||
| 
 | ||
|       </description>
 | ||
|     </item>
 | ||
|     
 | ||
|     <item>
 | ||
|       <title>Docs: Architecture and design</title>
 | ||
|       <link>https://jenkinsci.github.io/kubernetes-operator/docs/how-it-works/architecture-and-design/</link>
 | ||
|       <pubDate>Mon, 05 Aug 2019 00:00:00 +0000</pubDate>
 | ||
|       
 | ||
|       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/how-it-works/architecture-and-design/</guid>
 | ||
|       <description>
 | ||
|         
 | ||
|         
 | ||
|         
 | ||
| 
 | ||
| <p>The <strong>Jenkins Operator</strong> design incorporates the following concepts:</p>
 | ||
| 
 | ||
| <ul>
 | ||
| <li>watches any changes of manifests and maintain the desired state according to deployed custom resource manifest</li>
 | ||
| <li>implements the main reconciliation loop which consists of two smaller reconciliation loops - base and user</li>
 | ||
| </ul>
 | ||
| 
 | ||
| <p><img src="https://jenkinsci.github.io/kubernetes-operator/kubernetes-operator/img/reconcile.png" alt="reconcile" /></p>
 | ||
| 
 | ||
| <p><strong>Base</strong> reconciliation loop takes care of reconciling base Jenkins configuration, which consists of:</p>
 | ||
| 
 | ||
| <ul>
 | ||
| <li>Ensure Manifests - monitors any changes in manifests</li>
 | ||
| <li>Ensure Jenkins Pod - creates and verifies the status of Jenkins master Pod</li>
 | ||
| <li>Ensure Jenkins Configuration - configures Jenkins instance including hardening, initial configuration for plugins, etc.</li>
 | ||
| <li>Ensure Jenkins API token - generates Jenkins API token and initialized Jenkins client</li>
 | ||
| </ul>
 | ||
| 
 | ||
| <p><strong>User</strong> reconciliation loop takes care of reconciling user provided configuration, which consists of:</p>
 | ||
| 
 | ||
| <ul>
 | ||
| <li>Ensure Restore Job - creates Restore job and ensures that restore has been successfully performed<br /></li>
 | ||
| <li>Ensure Seed Jobs - creates Seed Jobs and ensures that all of them have been successfully executed</li>
 | ||
| <li>Ensure User Configuration - executed user provided configuration, like groovy scripts, configuration as code or plugins</li>
 | ||
| <li>Ensure Backup Job -  creates a Backup job and ensures that backup has been successfully performed</li>
 | ||
| </ul>
 | ||
| 
 | ||
| <p><img src="https://jenkinsci.github.io/kubernetes-operator/kubernetes-operator/img/phases.png" alt="reconcile" /></p>
 | ||
| 
 | ||
| <h2 id="operator-state">Operator State</h2>
 | ||
| 
 | ||
| <p>Operator state is kept in the custom resource status section, which is used for storing any configuration events or job statuses managed by the operator.</p>
 | ||
| 
 | ||
| <p>It helps to maintain or recover the desired state even after the operator or Jenkins restarts.</p>
 | ||
| 
 | ||
|       </description>
 | ||
|     </item>
 | ||
|     
 | ||
|     <item>
 | ||
|       <title>Docs: Deploy Jenkins</title>
 | ||
|       <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.1.x/deploy-jenkins/</link>
 | ||
|       <pubDate>Mon, 05 Aug 2019 00:00:00 +0000</pubDate>
 | ||
|       
 | ||
|       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.1.x/deploy-jenkins/</guid>
 | ||
|       <description>
 | ||
|         
 | ||
|         
 | ||
|         
 | ||
| 
 | ||
| <h2 id="deploy-jenkins">Deploy Jenkins</h2>
 | ||
| 
 | ||
| <p>Once the <strong>Jenkins Operator</strong> is up and running let&rsquo;s deploy an actual Jenkins instance.
 | ||
| Create a 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 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 the Jenkins instance being created:</p>
 | ||
| <div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">kubectl get pods -w</code></pre></div>
 | ||
| <p>Get the Jenkins credentials:</p>
 | ||
| <div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">kubectl get secret jenkins-operator-credentials-&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 the Jenkins Operator (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 the Jenkins intance (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>
 | ||
| 
 | ||
|       </description>
 | ||
|     </item>
 | ||
|     
 | ||
|     <item>
 | ||
|       <title>Docs: Deploy Jenkins</title>
 | ||
|       <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.2.x/deploy-jenkins/</link>
 | ||
|       <pubDate>Mon, 05 Aug 2019 00:00:00 +0000</pubDate>
 | ||
|       
 | ||
|       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.2.x/deploy-jenkins/</guid>
 | ||
|       <description>
 | ||
|         
 | ||
|         
 | ||
|         <p>Once Jenkins Operator is up and running let&rsquo;s deploy actual Jenkins instance.
 | ||
| Create manifest e.g. <strong><code>jenkins_instance.yaml</code></strong> with following data and save it on drive.</p>
 | ||
| <div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-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 a Jenkins to Kubernetes:</p>
 | ||
| <div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">kubectl create -f jenkins_instance.yaml</code></pre></div>
 | ||
| <p>Watch the Jenkins instance being created:</p>
 | ||
| <div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">kubectl get pods -w</code></pre></div>
 | ||
| <p>Get the Jenkins credentials:</p>
 | ||
| <div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">kubectl get secret jenkins-operator-credentials-&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 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 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>
 | ||
| 
 | ||
|       </description>
 | ||
|     </item>
 | ||
|     
 | ||
|     <item>
 | ||
|       <title>Docs: Configuration</title>
 | ||
|       <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/configuration/</link>
 | ||
|       <pubDate>Mon, 13 Apr 2020 00:00:00 +0000</pubDate>
 | ||
|       
 | ||
|       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/configuration/</guid>
 | ||
|       <description>
 | ||
|         
 | ||
|         
 | ||
|         
 | ||
| 
 | ||
| <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><code>cicd/jobs/build.jenkins</code></strong> is 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><code>cicd/pipelines/build.jenkins</code></strong> is 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 the seed jobs.</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 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>
 | ||
| 
 | ||
| <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 a seed job like this:</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: ssh://git@github.com:jenkinsci/kubernetes-operator.git
 | ||
| </code></pre>
 | ||
| 
 | ||
| <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
 | ||
| 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 the 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 a 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 an operator to download plugins you need to add the following environment variable to Jenkins Custom Resource (CR), 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 <code>curl</code> command.</p>
 | ||
| 
 | ||
| <h2 id="pulling-docker-images-from-private-repositories">Pulling Docker images from private repositories</h2>
 | ||
| 
 | ||
| <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>
 | ||
| 
 | ||
| <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 a Base64 value before setting the <code>.dockerconfigjson</code> key.</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>
 | ||
| 
 | ||
|       </description>
 | ||
|     </item>
 | ||
|     
 | ||
|     <item>
 | ||
|       <title>Docs: Configuration</title>
 | ||
|       <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.3.x/configuration/</link>
 | ||
|       <pubDate>Fri, 20 Dec 2019 00:00:00 +0000</pubDate>
 | ||
|       
 | ||
|       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.3.x/configuration/</guid>
 | ||
|       <description>
 | ||
|         
 | ||
|         
 | ||
|         
 | ||
| 
 | ||
| <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><code>cicd/jobs/build.jenkins</code></strong> is 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><code>cicd/pipelines/build.jenkins</code></strong> is 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 the seed jobs.</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 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>
 | ||
| 
 | ||
| <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 a seed job like this:</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: ssh://git@github.com:jenkinsci/kubernetes-operator.git
 | ||
| </code></pre>
 | ||
| 
 | ||
| <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
 | ||
| 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 the 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 a 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 an operator to download plugins you need to add the following environment variable to Jenkins Custom Resource (CR), 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 <code>curl</code> command.</p>
 | ||
| 
 | ||
| <h2 id="pulling-docker-images-from-private-repositories">Pulling Docker images from private repositories</h2>
 | ||
| 
 | ||
| <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>
 | ||
| 
 | ||
| <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 a Base64 value before setting the <code>.dockerconfigjson</code> key.</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>
 | ||
| 
 | ||
|       </description>
 | ||
|     </item>
 | ||
|     
 | ||
|     <item>
 | ||
|       <title>Docs: Configuration</title>
 | ||
|       <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.1.x/configuration/</link>
 | ||
|       <pubDate>Mon, 05 Aug 2019 00:00:00 +0000</pubDate>
 | ||
|       
 | ||
|       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.1.x/configuration/</guid>
 | ||
|       <description>
 | ||
|         
 | ||
|         
 | ||
|         
 | ||
| 
 | ||
| <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/pipelines/build.jenkins</strong> is 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 the seed jobs.</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 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>
 | ||
| 
 | ||
| <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 a seed job like this:</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 a 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 a seed job like this:</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 a 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 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">
 | ||
| </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 generates a Jenkins username and password and stores it in Kubernetes secret named
 | ||
| <code>jenkins-operator-credentials-&lt;cr_name&gt;</code> in the 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 the Jenkins master pod and then you can login with the new username 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 by the operator and configures init.groovy.d (creates the 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>
 | ||
|       </description>
 | ||
|     </item>
 | ||
|     
 | ||
|     <item>
 | ||
|       <title>Docs: Configuration</title>
 | ||
|       <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.2.x/configuration/</link>
 | ||
|       <pubDate>Mon, 05 Aug 2019 00:00:00 +0000</pubDate>
 | ||
|       
 | ||
|       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.2.x/configuration/</guid>
 | ||
|       <description>
 | ||
|         
 | ||
|         
 | ||
|         
 | ||
| 
 | ||
| <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><code>cicd/jobs/build.jenkins</code></strong> is 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><code>cicd/pipelines/build.jenkins</code></strong> is 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 the seed jobs.</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 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>
 | ||
| 
 | ||
| <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 a seed job like this:</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 a 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 the 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 a 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 an operator to download plugins you need to add the following environment variable to Jenkins Custom Resource (CR), 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 <code>curl</code> command.</p>
 | ||
| 
 | ||
| <h2 id="pulling-docker-images-from-private-repositories">Pulling Docker images from private repositories</h2>
 | ||
| 
 | ||
| <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>
 | ||
| 
 | ||
| <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 a Base64 value before setting the <code>.dockerconfigjson</code> key.</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>
 | ||
| 
 | ||
|       </description>
 | ||
|     </item>
 | ||
|     
 | ||
|     <item>
 | ||
|       <title>Docs: Customization</title>
 | ||
|       <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/customization/</link>
 | ||
|       <pubDate>Mon, 13 Apr 2020 00:00:00 +0000</pubDate>
 | ||
|       
 | ||
|       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/customization/</guid>
 | ||
|       <description>
 | ||
|         
 | ||
|         
 | ||
|         
 | ||
| 
 | ||
| <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 <strong><code>ConfigMap</code></strong> in the <strong>Jenkins</strong> pod customization file in <code>spec.groovyScripts</code> or <code>spec.configurationAsCode</code></p>
 | ||
| 
 | ||
| <p>For example create a <strong><code>ConfigMap</code></strong> 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><code>*.groovy</code> is Groovy script configuration</li>
 | ||
| <li><code>*.yaml is</code> 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 <code>ConfigMap</code> 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 Custom Resource 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.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.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.1</span></code></pre></div>
 | ||
| <p>You can change their versions.</p>
 | ||
| 
 | ||
| <p>The <strong>Jenkins Operator</strong> will then automatically install plugins after the Jenkins master pod restarts.</p>
 | ||
| 
 | ||
|       </description>
 | ||
|     </item>
 | ||
|     
 | ||
|     <item>
 | ||
|       <title>Docs: Customization</title>
 | ||
|       <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.3.x/customization/</link>
 | ||
|       <pubDate>Fri, 20 Dec 2019 00:00:00 +0000</pubDate>
 | ||
|       
 | ||
|       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.3.x/customization/</guid>
 | ||
|       <description>
 | ||
|         
 | ||
|         
 | ||
|         
 | ||
| 
 | ||
| <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 <strong><code>ConfigMap</code></strong> in the <strong>Jenkins</strong> pod customization file in <code>spec.groovyScripts</code> or <code>spec.configurationAsCode</code></p>
 | ||
| 
 | ||
| <p>For example create a <strong><code>ConfigMap</code></strong> 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><code>*.groovy</code> is Groovy script configuration</li>
 | ||
| <li><code>*.yaml is</code> 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 <code>ConfigMap</code> 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 Custom Resource 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.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.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.1</span></code></pre></div>
 | ||
| <p>You can change their versions.</p>
 | ||
| 
 | ||
| <p>The <strong>Jenkins Operator</strong> will then automatically install plugins after the Jenkins master pod restarts.</p>
 | ||
| 
 | ||
|       </description>
 | ||
|     </item>
 | ||
|     
 | ||
|     <item>
 | ||
|       <title>Docs: Customization</title>
 | ||
|       <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.1.x/customization/</link>
 | ||
|       <pubDate>Mon, 05 Aug 2019 00:00:00 +0000</pubDate>
 | ||
|       
 | ||
|       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.1.x/customization/</guid>
 | ||
|       <description>
 | ||
|         
 | ||
|         
 | ||
|         
 | ||
| 
 | ||
| <p>Jenkins can be customized by using groovy scripts or the Jenkins Configuration as a 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
 | ||
| Jenkins Configuration as a Code 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, and  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.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.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.31&#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.1</span></code></pre></div>
 | ||
| <p>You can change their versions.</p>
 | ||
| 
 | ||
| <p>The <strong>Jenkins Operator</strong> will then automatically install those plugins after the Jenkins master pod restart.</p>
 | ||
| 
 | ||
|       </description>
 | ||
|     </item>
 | ||
|     
 | ||
|     <item>
 | ||
|       <title>Docs: Customization</title>
 | ||
|       <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.2.x/customization/</link>
 | ||
|       <pubDate>Mon, 05 Aug 2019 00:00:00 +0000</pubDate>
 | ||
|       
 | ||
|       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.2.x/customization/</guid>
 | ||
|       <description>
 | ||
|         
 | ||
|         
 | ||
|         
 | ||
| 
 | ||
| <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 <strong><code>ConfigMap</code></strong> in the <strong>Jenkins</strong> pod customization file in <code>spec.groovyScripts</code> or <code>spec.configurationAsCode</code></p>
 | ||
| 
 | ||
| <p>For example create a <strong><code>ConfigMap</code></strong> 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><code>*.groovy</code> is Groovy script configuration</li>
 | ||
| <li><code>*.yaml is</code> 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 <code>ConfigMap</code> 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 Custom Resource 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.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.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.1</span></code></pre></div>
 | ||
| <p>You can change their versions.</p>
 | ||
| 
 | ||
| <p>The <strong>Jenkins Operator</strong> will then automatically install plugins after the Jenkins master pod restarts.</p>
 | ||
| 
 | ||
|       </description>
 | ||
|     </item>
 | ||
|     
 | ||
|     <item>
 | ||
|       <title>Docs: AKS</title>
 | ||
|       <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/aks/</link>
 | ||
|       <pubDate>Mon, 13 Apr 2020 00:00:00 +0000</pubDate>
 | ||
|       
 | ||
|       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/aks/</guid>
 | ||
|       <description>
 | ||
|         
 | ||
|         
 | ||
|         <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">
 | ||
| </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 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>
 | ||
| 
 | ||
|       </description>
 | ||
|     </item>
 | ||
|     
 | ||
|     <item>
 | ||
|       <title>Docs: Configure backup and restore</title>
 | ||
|       <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/configure-backup-and-restore/</link>
 | ||
|       <pubDate>Mon, 13 Apr 2020 00:00:00 +0000</pubDate>
 | ||
|       
 | ||
|       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/configure-backup-and-restore/</guid>
 | ||
|       <description>
 | ||
|         
 | ||
|         
 | ||
|         
 | ||
| 
 | ||
| <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 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">
 | ||
| </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 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">
 | ||
| </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 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">
 | ||
| </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.7</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 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">
 | ||
| </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>
 | ||
|       </description>
 | ||
|     </item>
 | ||
|     
 | ||
|     <item>
 | ||
|       <title>Docs: Custom Backup and Restore Providers</title>
 | ||
|       <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/custom-backup-and-restore/</link>
 | ||
|       <pubDate>Mon, 13 Apr 2020 00:00:00 +0000</pubDate>
 | ||
|       
 | ||
|       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/custom-backup-and-restore/</guid>
 | ||
|       <description>
 | ||
|         
 | ||
|         
 | ||
|         
 | ||
| 
 | ||
| <p>With enough effort one can create a custom backup and restore provider
 | ||
| for the Jenkins Operator.</p>
 | ||
| 
 | ||
| <h2 id="requirements">Requirements</h2>
 | ||
| 
 | ||
| <p>Two commands (e.g. scripts) are required:</p>
 | ||
| 
 | ||
| <ul>
 | ||
| <li>a backup command, e.g. <code>backup.sh</code> that takes one argument, a <strong>backup number</strong></li>
 | ||
| <li>a restore command, e.g. <code>backup.sh</code> that takes one argument, a <strong>backup number</strong></li>
 | ||
| </ul>
 | ||
| 
 | ||
| <p>Both scripts need to return an exit code of <code>0</code> on success and <code>1</code> or greater for failure.</p>
 | ||
| 
 | ||
| <p>One of those scripts (or the entry point of the container) needs to be responsible
 | ||
| for backup cleanup or rotation if required, or an external system.</p>
 | ||
| 
 | ||
| <h2 id="how-it-works">How it works</h2>
 | ||
| 
 | ||
| <p>The mechanism relies on basic Kubernetes and UNIX functionalities.</p>
 | ||
| 
 | ||
| <p>The backup (and restore) container runs as a sidecar in the same
 | ||
| Kubernetes pod as the Jenkins master.</p>
 | ||
| 
 | ||
| <p>Name of the backup and restore containers can be set as necessary using
 | ||
| <code>spec.backup.containerName</code> and <code>spec.restore.containerName</code>.
 | ||
| In most cases it will be the same container, but we allow for less common use cases.</p>
 | ||
| 
 | ||
| <p>The operator will call a backup or restore commands inside a sidecar container when necessary:</p>
 | ||
| 
 | ||
| <ul>
 | ||
| <li>backup command (defined in <code>spec.backup.action.exec.command</code>)
 | ||
| will be called every <code>N</code> seconds configurable in: <code>spec.backup.interval</code>
 | ||
| and on pod shutdown (if enabled in <code>spec.backup.makeBackupBeforePodDeletion</code>)
 | ||
| with an integer representing the current backup number as first and only argument</li>
 | ||
| <li>restore command (defined in <code>spec.restore.action.exec.command</code>)
 | ||
| will be called at Jenkins startup
 | ||
| with an integer representing the backup number to restore as first and only argument
 | ||
| (can be overridden using <code>spec.restore.recoveryOnce</code>)</li>
 | ||
| </ul>
 | ||
| 
 | ||
| <h2 id="example-aws-s3-backup-using-the-cli">Example AWS S3 backup using the CLI</h2>
 | ||
| 
 | ||
| <p>This example shows abbreviated version of a simple AWS S3 backup implementation
 | ||
| using: <code>aws-cli</code>, <code>bash</code> and <code>kube2iam</code>.</p>
 | ||
| 
 | ||
| <p>In addition to your normal <code>Jenkins</code> <code>CustomResource</code> some additional settings
 | ||
| for backup and restore are required, e.g.:</p>
 | ||
| <div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-yaml" data-lang="yaml">kind<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>Jenkins<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline"></span>apiVersion<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins.io/v1alpha1<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline"></span>metadata<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">  </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>example<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">  </span>namespace<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline"></span>spec<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">  </span>master<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>masterAnnotations<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">      </span>iam.amazonaws.com/role<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;my-example-backup-role&#34;</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># tell kube2iam where the AWS IAM role is</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>containers<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">      </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins-master<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">        </span>...<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">      </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>backup<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># container responsible for backup and restore</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">        </span>image<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>quay.io/virtuslab/aws-cli<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1.16.263-2</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">        </span>workingDir<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">        </span>command<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># our container entry point</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>sleep<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>infinity<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">        </span>env<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>BACKUP_BUCKET<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">            </span>value<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>my-example-bucket<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># the S3 bucket name to use</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>BACKUP_PATH<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">            </span>value<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>my-backup-path<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># the S3 bucket path prefix to use</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>JENKINS_HOME<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">            </span>value<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>/jenkins-home<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># the path to mount jenkins home dir in the backup container</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">        </span>volumeMounts<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>mountPath<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>/jenkins-home<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># Jenkins home volume</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">            </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins-home<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>mountPath<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/backup.sh<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">            </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>backup-scripts<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">            </span>subPath<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>backup.sh<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">            </span>readOnly<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">true</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>mountPath<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/restore.sh<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">            </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>backup-scripts<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">            </span>subPath<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>restore.sh<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">            </span>readOnly<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">true</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>volumes<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">      </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>backup-scripts<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">        </span>configMap<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span>defaultMode<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">0754</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins-operator-backup-s3<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>securityContext<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># make sure both containers use the same UID and GUID</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">      </span>runAsUser<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1000</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">      </span>fsGroup<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1000</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">  </span>...<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">  </span>backup<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>containerName<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>backup<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># container name responsible for backup</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>interval<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">3600</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># how often make a backup in seconds</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>makeBackupBeforePodDeletion<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">true</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># trigger backup just before deleting the pod</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>action<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">      </span>exec<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">        </span>command<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span><span style="color:#8f5902;font-style:italic"># this command is invoked on &#34;backup&#34; container to create a backup,</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span><span style="color:#8f5902;font-style:italic"># &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"># for example /home/user/bin/backup.sh &lt;backup_number&gt;</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/backup.sh<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">  </span>restore<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>containerName<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>backup<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># container name is responsible for restore backup</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>action<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">      </span>exec<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">        </span>command<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span><span style="color:#8f5902;font-style:italic"># this command is invoked on &#34;backup&#34; container to restore a backup,</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span><span style="color:#8f5902;font-style:italic"># &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"># for example /home/user/bin/restore.sh &lt;backup_number&gt;</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/restore.sh<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#8f5902;font-style:italic">#    recoveryOnce: &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>
 | ||
| <p>The actual backup and restore scripts will be provided in a <code>ConfigMap</code>:</p>
 | ||
| <div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-yaml" data-lang="yaml">kind<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>ConfigMap<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline"></span>apiVersion<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>v1<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline"></span>metadata<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">  </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins-operator-backup-s3<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">  </span>namespace<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">  </span>labels<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>app<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins-operator<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline"></span>data<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">  </span>backup.sh<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>|<span style="color:#8f5902;font-style:italic">-
 | ||
| </span><span style="color:#8f5902;font-style:italic">    #!/bin/bash -xeu</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span><span style="color:#000;font-weight:bold">[[</span><span style="color:#f8f8f8;text-decoration:underline"> </span>!<span style="color:#f8f8f8;text-decoration:underline"> </span>$<span style="color:#8f5902;font-style:italic"># -eq 1 ]] &amp;&amp; echo &#34;Usage: $0 backup_number&#34; &amp;&amp; exit 1;</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span><span style="color:#000;font-weight:bold">[[</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-z<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;${BACKUP_BUCKET}&#34;</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:#8f5902;font-style:italic">&amp;&amp;</span><span style="color:#f8f8f8;text-decoration:underline"> </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;Required &#39;BACKUP_BUCKET&#39; env not set&#34;</span><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>exit<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1</span>;<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span><span style="color:#000;font-weight:bold">[[</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-z<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;${BACKUP_PATH}&#34;</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:#8f5902;font-style:italic">&amp;&amp;</span><span style="color:#f8f8f8;text-decoration:underline"> </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;Required &#39;BACKUP_PATH&#39; env not set&#34;</span><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>exit<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1</span>;<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span><span style="color:#000;font-weight:bold">[[</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-z<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;${JENKINS_HOME}&#34;</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:#8f5902;font-style:italic">&amp;&amp;</span><span style="color:#f8f8f8;text-decoration:underline"> </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;Required &#39;JENKINS_HOME&#39; env not set&#34;</span><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>exit<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1</span>;<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>backup_number=$<span style="color:#0000cf;font-weight:bold">1</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;Running backup #${backup_number}&#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>BACKUP_TMP_DIR=$(mktemp<span style="color:#f8f8f8;text-decoration:underline"> </span>-d)<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>tar<span style="color:#f8f8f8;text-decoration:underline"> </span>-C<span style="color:#f8f8f8;text-decoration:underline"> </span>${JENKINS_HOME}<span style="color:#f8f8f8;text-decoration:underline"> </span>-czf<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;${BACKUP_TMP_DIR}/${backup_number}.tar.gz&#34;</span><span style="color:#f8f8f8;text-decoration:underline"> </span>--exclude<span style="color:#f8f8f8;text-decoration:underline"> </span>jobs/<span style="color:#8f5902;font-style:italic">*/workspace*</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-c<span style="color:#f8f8f8;text-decoration:underline"> </span>jobs<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic">&amp;&amp;</span><span style="color:#f8f8f8;text-decoration:underline"> </span>\<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>aws<span style="color:#f8f8f8;text-decoration:underline"> </span>s3<span style="color:#f8f8f8;text-decoration:underline"> </span>cp<span style="color:#f8f8f8;text-decoration:underline"> </span>${BACKUP_TMP_DIR}/${backup_number}.tar.gz<span style="color:#f8f8f8;text-decoration:underline"> </span>s3<span style="color:#000;font-weight:bold">:</span>//${BACKUP_BUCKET}/${BACKUP_PATH}/${backup_number}.tar.gz<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span>Done<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">  </span>restore.sh<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>|<span style="color:#8f5902;font-style:italic">-
 | ||
| </span><span style="color:#8f5902;font-style:italic">    #!/bin/bash -xeu</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span><span style="color:#000;font-weight:bold">[[</span><span style="color:#f8f8f8;text-decoration:underline"> </span>!<span style="color:#f8f8f8;text-decoration:underline"> </span>$<span style="color:#8f5902;font-style:italic"># -eq 1 ]] &amp;&amp; echo &#34;Usage: $0 backup_number&#34; &amp;&amp; exit 1</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span><span style="color:#000;font-weight:bold">[[</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-z<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;${BACKUP_BUCKET}&#34;</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:#8f5902;font-style:italic">&amp;&amp;</span><span style="color:#f8f8f8;text-decoration:underline"> </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;Required &#39;BACKUP_BUCKET&#39; env not set&#34;</span><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>exit<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1</span>;<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span><span style="color:#000;font-weight:bold">[[</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-z<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;${BACKUP_PATH}&#34;</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:#8f5902;font-style:italic">&amp;&amp;</span><span style="color:#f8f8f8;text-decoration:underline"> </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;Required &#39;BACKUP_PATH&#39; env not set&#34;</span><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>exit<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1</span>;<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span><span style="color:#000;font-weight:bold">[[</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-z<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;${JENKINS_HOME}&#34;</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:#8f5902;font-style:italic">&amp;&amp;</span><span style="color:#f8f8f8;text-decoration:underline"> </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;Required &#39;JENKINS_HOME&#39; env not set&#34;</span><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>exit<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1</span>;<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>backup_number=$<span style="color:#0000cf;font-weight:bold">1</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;Running restore #${backup_number}&#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>BACKUP_TMP_DIR=$(mktemp<span style="color:#f8f8f8;text-decoration:underline"> </span>-d)<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>aws<span style="color:#f8f8f8;text-decoration:underline"> </span>s3<span style="color:#f8f8f8;text-decoration:underline"> </span>cp<span style="color:#f8f8f8;text-decoration:underline"> </span>s3<span style="color:#000;font-weight:bold">:</span>//${BACKUP_BUCKET}/${BACKUP_PATH}/${backup_number}.tar.gz<span style="color:#f8f8f8;text-decoration:underline"> </span>${BACKUP_TMP_DIR}/${backup_number}.tar.gz<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>tar<span style="color:#f8f8f8;text-decoration:underline"> </span>-C<span style="color:#f8f8f8;text-decoration:underline"> </span>${JENKINS_HOME}<span style="color:#f8f8f8;text-decoration:underline"> </span>-zxf<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;${BACKUP_TMP_DIR}/${backup_number}.tar.gz&#34;</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span>Done</code></pre></div>
 | ||
| <p>In our example we will use S3 bucket lifecycle policy to keep
 | ||
| the number of backups under control, e.g. Cloud Formation fragment:</p>
 | ||
| <div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-yaml" data-lang="yaml"><span style="color:#f8f8f8;text-decoration:underline">    </span>Type<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>AWS<span style="color:#000;font-weight:bold">::</span>S3<span style="color:#000;font-weight:bold">::</span>Bucket<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>Properties<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">      </span>BucketName<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>my-example-bucket<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">      </span>...<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">      </span>LifecycleConfiguration<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">        </span>Rules<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>Id<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>BackupCleanup<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">            </span>Status<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>Enabled<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">            </span>Prefix<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>my-backup-path<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">            </span>ExpirationInDays<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">7</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">            </span>NoncurrentVersionExpirationInDays<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">14</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">            </span>AbortIncompleteMultipartUpload<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">              </span>DaysAfterInitiation<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">3</span></code></pre></div>
 | ||
|       </description>
 | ||
|     </item>
 | ||
|     
 | ||
|     <item>
 | ||
|       <title>Docs: Notifications</title>
 | ||
|       <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/notifications/</link>
 | ||
|       <pubDate>Mon, 13 Apr 2020 00:00:00 +0000</pubDate>
 | ||
|       
 | ||
|       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/notifications/</guid>
 | ||
|       <description>
 | ||
|         
 | ||
|         
 | ||
|         
 | ||
| 
 | ||
| <h2 id="slack">Slack</h2>
 | ||
| 
 | ||
| <p>Please follow <a href="https://api.slack.com/incoming-webhooks" target="_blank">this</a> instructions to get web hook URL.</p>
 | ||
| 
 | ||
| <p>Create web hook secret with name <code>jenkins-operator-notification-data</code>. Contains key <code>url</code> with provided web hook URL.</p>
 | ||
| <div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">$ kubectl create secret generic jenkins-operator-notification-data --from-literal<span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#000">url</span><span style="color:#ce5c00;font-weight:bold">=</span>&lt;webhook_url&gt;</code></pre></div>
 | ||
| <p>Example configuration for Slack:</p>
 | ||
| 
 | ||
| <pre><code>kind: Jenkins
 | ||
| spec:
 | ||
|   master:
 | ||
|     notifications:
 | ||
|     - loggingLevel: info
 | ||
|       verbose: true
 | ||
|       name: &lt;name&gt;
 | ||
|       slack:
 | ||
|         webHookURLSecretKeySelector:
 | ||
|           secret:
 | ||
|             name: &lt;secret_name&gt;
 | ||
|           key: &lt;key&gt;
 | ||
| </code></pre>
 | ||
| 
 | ||
| <h2 id="microsoft-teams">Microsoft Teams</h2>
 | ||
| 
 | ||
| <p>Please follow <a href="https://docs.microsoft.com/en-gb/outlook/actionable-messages/send-via-connectors" target="_blank">this</a> instructions to get web hook URL.</p>
 | ||
| 
 | ||
| <p>Example configuration for Microsoft Teams:</p>
 | ||
| 
 | ||
| <pre><code>kind: Jenkins
 | ||
| spec:
 | ||
|   master:
 | ||
|     notifications:
 | ||
|     - loggingLevel: info
 | ||
|       verbose: true
 | ||
|       name: &lt;name&gt;
 | ||
|       teams:
 | ||
|         webHookURLSecretKeySelector:
 | ||
|           secret:
 | ||
|             name: &lt;secret_name&gt;
 | ||
|           key: &lt;key&gt;
 | ||
| </code></pre>
 | ||
| 
 | ||
| <h2 id="mailgun">Mailgun</h2>
 | ||
| 
 | ||
| <p>Example configuration for Mailgun:</p>
 | ||
| 
 | ||
| <pre><code>kind: Jenkins
 | ||
| spec:
 | ||
|   master:
 | ||
|     notifications:
 | ||
|     - loggingLevel: info
 | ||
|       verbose: true
 | ||
|       name: &lt;name&gt;
 | ||
|       mailgun:
 | ||
|         domain: &lt;domain&gt;
 | ||
|         apiKeySecretKeySelector:
 | ||
|           secret:
 | ||
|             name: &lt;secret_name&gt;
 | ||
|           key: &lt;key&gt;
 | ||
|         recipient: &lt;your_email&gt;
 | ||
|         from: &lt;mailgun_email&gt;
 | ||
| </code></pre>
 | ||
| 
 | ||
| <h2 id="debug-options">Debug options</h2>
 | ||
| 
 | ||
| <p>As you see there is two debugging options:</p>
 | ||
| 
 | ||
| <ul>
 | ||
| <li><p><code>loggingLevel</code> (warning/info) - Set level of messages to send.</p></li>
 | ||
| 
 | ||
| <li><p><code>verbose</code> - Print stacktrace and additional error messages</p></li>
 | ||
| </ul>
 | ||
| 
 | ||
| <h2 id="multiple-providers">Multiple providers</h2>
 | ||
| 
 | ||
| <p>You can use multiple providers to send notification to another communication channels at the same time.
 | ||
| For example you will send notifications to Slack and Teams.</p>
 | ||
| 
 | ||
| <pre><code>kind: Jenkins
 | ||
| spec:
 | ||
|   master:
 | ||
|     notifications:
 | ||
|     - loggingLevel: info
 | ||
|       verbose: true
 | ||
|       name: nslack
 | ||
|       slack:
 | ||
|         webHookURLSecretKeySelector:
 | ||
|           secret:
 | ||
|             name: &lt;secret_name&gt;
 | ||
|           key: &lt;key&gt;
 | ||
|     - loggingLevel: info
 | ||
|       verbose: true
 | ||
|       name: nteams
 | ||
|       teams:
 | ||
|         webHookURLSecretKeySelector:
 | ||
|           secret:
 | ||
|             name: &lt;secret_name&gt;
 | ||
|           key: &lt;key&gt;
 | ||
| </code></pre>
 | ||
| 
 | ||
|       </description>
 | ||
|     </item>
 | ||
|     
 | ||
|     <item>
 | ||
|       <title>Docs: Migration from v0.2.x</title>
 | ||
|       <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.3.x/migration/</link>
 | ||
|       <pubDate>Fri, 03 Jan 2020 00:00:00 +0000</pubDate>
 | ||
|       
 | ||
|       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.3.x/migration/</guid>
 | ||
|       <description>
 | ||
|         
 | ||
|         
 | ||
|         
 | ||
| 
 | ||
| <h3 id="changes">Changes</h3>
 | ||
| 
 | ||
| <ul>
 | ||
| <li>new Jenkins Custom Resource Definition version <code>jenkins.io/v1alpha2</code>:
 | ||
| 
 | ||
| <ul>
 | ||
| <li><code>spec.master.masterAnnotations</code> was deprecated, use <code>spec.master.annotations</code></li>
 | ||
| <li>added <code>spec.notifications</code></li>
 | ||
| <li>added <code>spec.master.tolerations</code> (in v0.3.1)</li>
 | ||
| <li>added <code>spec.master.disableCSRFProtection</code></li>
 | ||
| </ul></li>
 | ||
| </ul>
 | ||
| 
 | ||
| <h3 id="migration">Migration</h3>
 | ||
| 
 | ||
| <ul>
 | ||
| <li>adjust the operator image version, e.g. <code>image: virtuslab/jenkins-operator:v0.3.1</code></li>
 | ||
| <li>migrate your Jenkins Custom Resources to <code>apiVersion: jenkins.io/v1alpha2</code>, adjust content if necessary</li>
 | ||
| </ul>
 | ||
| 
 | ||
| <p>The v0.3.x should work fine with <code>jenkins.io/v1alpha1</code>, but we recommend using <code>jenkins.io/v1alpha2</code>.</p>
 | ||
| 
 | ||
|       </description>
 | ||
|     </item>
 | ||
|     
 | ||
|     <item>
 | ||
|       <title>Docs: AKS</title>
 | ||
|       <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.3.x/aks/</link>
 | ||
|       <pubDate>Fri, 20 Dec 2019 00:00:00 +0000</pubDate>
 | ||
|       
 | ||
|       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.3.x/aks/</guid>
 | ||
|       <description>
 | ||
|         
 | ||
|         
 | ||
|         <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">
 | ||
| </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 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>
 | ||
| 
 | ||
|       </description>
 | ||
|     </item>
 | ||
|     
 | ||
|     <item>
 | ||
|       <title>Docs: Configure backup and restore</title>
 | ||
|       <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.3.x/configure-backup-and-restore/</link>
 | ||
|       <pubDate>Fri, 20 Dec 2019 00:00:00 +0000</pubDate>
 | ||
|       
 | ||
|       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.3.x/configure-backup-and-restore/</guid>
 | ||
|       <description>
 | ||
|         
 | ||
|         
 | ||
|         
 | ||
| 
 | ||
| <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 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">
 | ||
| </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 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">
 | ||
| </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 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">
 | ||
| </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.7</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 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">
 | ||
| </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>
 | ||
|       </description>
 | ||
|     </item>
 | ||
|     
 | ||
|     <item>
 | ||
|       <title>Docs: Custom Backup and Restore Providers</title>
 | ||
|       <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.3.x/custom-backup-and-restore/</link>
 | ||
|       <pubDate>Fri, 20 Dec 2019 00:00:00 +0000</pubDate>
 | ||
|       
 | ||
|       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.3.x/custom-backup-and-restore/</guid>
 | ||
|       <description>
 | ||
|         
 | ||
|         
 | ||
|         
 | ||
| 
 | ||
| <p>With enough effort one can create a custom backup and restore provider
 | ||
| for the Jenkins Operator.</p>
 | ||
| 
 | ||
| <h2 id="requirements">Requirements</h2>
 | ||
| 
 | ||
| <p>Two commands (e.g. scripts) are required:</p>
 | ||
| 
 | ||
| <ul>
 | ||
| <li>a backup command, e.g. <code>backup.sh</code> that takes one argument, a <strong>backup number</strong></li>
 | ||
| <li>a restore command, e.g. <code>backup.sh</code> that takes one argument, a <strong>backup number</strong></li>
 | ||
| </ul>
 | ||
| 
 | ||
| <p>Both scripts need to return an exit code of <code>0</code> on success and <code>1</code> or greater for failure.</p>
 | ||
| 
 | ||
| <p>One of those scripts (or the entry point of the container) needs to be responsible
 | ||
| for backup cleanup or rotation if required, or an external system.</p>
 | ||
| 
 | ||
| <h2 id="how-it-works">How it works</h2>
 | ||
| 
 | ||
| <p>The mechanism relies on basic Kubernetes and UNIX functionalities.</p>
 | ||
| 
 | ||
| <p>The backup (and restore) container runs as a sidecar in the same
 | ||
| Kubernetes pod as the Jenkins master.</p>
 | ||
| 
 | ||
| <p>Name of the backup and restore containers can be set as necessary using
 | ||
| <code>spec.backup.containerName</code> and <code>spec.restore.containerName</code>.
 | ||
| In most cases it will be the same container, but we allow for less common use cases.</p>
 | ||
| 
 | ||
| <p>The operator will call a backup or restore commands inside a sidecar container when necessary:</p>
 | ||
| 
 | ||
| <ul>
 | ||
| <li>backup command (defined in <code>spec.backup.action.exec.command</code>)
 | ||
| will be called every <code>N</code> seconds configurable in: <code>spec.backup.interval</code>
 | ||
| and on pod shutdown (if enabled in <code>spec.backup.makeBackupBeforePodDeletion</code>)
 | ||
| with an integer representing the current backup number as first and only argument</li>
 | ||
| <li>restore command (defined in <code>spec.restore.action.exec.command</code>)
 | ||
| will be called at Jenkins startup
 | ||
| with an integer representing the backup number to restore as first and only argument
 | ||
| (can be overridden using <code>spec.restore.recoveryOnce</code>)</li>
 | ||
| </ul>
 | ||
| 
 | ||
| <h2 id="example-aws-s3-backup-using-the-cli">Example AWS S3 backup using the CLI</h2>
 | ||
| 
 | ||
| <p>This example shows abbreviated version of a simple AWS S3 backup implementation
 | ||
| using: <code>aws-cli</code>, <code>bash</code> and <code>kube2iam</code>.</p>
 | ||
| 
 | ||
| <p>In addition to your normal <code>Jenkins</code> <code>CustomResource</code> some additional settings
 | ||
| for backup and restore are required, e.g.:</p>
 | ||
| <div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-yaml" data-lang="yaml">kind<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>Jenkins<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline"></span>apiVersion<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins.io/v1alpha1<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline"></span>metadata<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">  </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>example<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">  </span>namespace<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline"></span>spec<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">  </span>master<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>masterAnnotations<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">      </span>iam.amazonaws.com/role<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;my-example-backup-role&#34;</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># tell kube2iam where the AWS IAM role is</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>containers<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">      </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins-master<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">        </span>...<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">      </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>backup<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># container responsible for backup and restore</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">        </span>image<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>quay.io/virtuslab/aws-cli<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1.16.263-2</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">        </span>workingDir<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">        </span>command<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># our container entry point</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>sleep<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>infinity<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">        </span>env<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>BACKUP_BUCKET<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">            </span>value<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>my-example-bucket<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># the S3 bucket name to use</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>BACKUP_PATH<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">            </span>value<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>my-backup-path<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># the S3 bucket path prefix to use</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>JENKINS_HOME<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">            </span>value<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>/jenkins-home<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># the path to mount jenkins home dir in the backup container</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">        </span>volumeMounts<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>mountPath<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>/jenkins-home<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># Jenkins home volume</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">            </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins-home<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>mountPath<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/backup.sh<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">            </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>backup-scripts<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">            </span>subPath<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>backup.sh<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">            </span>readOnly<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">true</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>mountPath<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/restore.sh<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">            </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>backup-scripts<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">            </span>subPath<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>restore.sh<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">            </span>readOnly<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">true</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>volumes<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">      </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>backup-scripts<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">        </span>configMap<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span>defaultMode<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">0754</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins-operator-backup-s3<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>securityContext<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># make sure both containers use the same UID and GUID</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">      </span>runAsUser<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1000</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">      </span>fsGroup<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1000</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">  </span>...<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">  </span>backup<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>containerName<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>backup<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># container name responsible for backup</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>interval<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">3600</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># how often make a backup in seconds</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>makeBackupBeforePodDeletion<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">true</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># trigger backup just before deleting the pod</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>action<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">      </span>exec<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">        </span>command<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span><span style="color:#8f5902;font-style:italic"># this command is invoked on &#34;backup&#34; container to create a backup,</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span><span style="color:#8f5902;font-style:italic"># &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"># for example /home/user/bin/backup.sh &lt;backup_number&gt;</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/backup.sh<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">  </span>restore<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>containerName<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>backup<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># container name is responsible for restore backup</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>action<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">      </span>exec<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">        </span>command<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span><span style="color:#8f5902;font-style:italic"># this command is invoked on &#34;backup&#34; container to restore a backup,</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span><span style="color:#8f5902;font-style:italic"># &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"># for example /home/user/bin/restore.sh &lt;backup_number&gt;</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/restore.sh<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#8f5902;font-style:italic">#    recoveryOnce: &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>
 | ||
| <p>The actual backup and restore scripts will be provided in a <code>ConfigMap</code>:</p>
 | ||
| <div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-yaml" data-lang="yaml">kind<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>ConfigMap<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline"></span>apiVersion<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>v1<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline"></span>metadata<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">  </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins-operator-backup-s3<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">  </span>namespace<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">  </span>labels<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>app<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins-operator<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline"></span>data<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">  </span>backup.sh<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>|<span style="color:#8f5902;font-style:italic">-
 | ||
| </span><span style="color:#8f5902;font-style:italic">    #!/bin/bash -xeu</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span><span style="color:#000;font-weight:bold">[[</span><span style="color:#f8f8f8;text-decoration:underline"> </span>!<span style="color:#f8f8f8;text-decoration:underline"> </span>$<span style="color:#8f5902;font-style:italic"># -eq 1 ]] &amp;&amp; echo &#34;Usage: $0 backup_number&#34; &amp;&amp; exit 1;</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span><span style="color:#000;font-weight:bold">[[</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-z<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;${BACKUP_BUCKET}&#34;</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:#8f5902;font-style:italic">&amp;&amp;</span><span style="color:#f8f8f8;text-decoration:underline"> </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;Required &#39;BACKUP_BUCKET&#39; env not set&#34;</span><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>exit<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1</span>;<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span><span style="color:#000;font-weight:bold">[[</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-z<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;${BACKUP_PATH}&#34;</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:#8f5902;font-style:italic">&amp;&amp;</span><span style="color:#f8f8f8;text-decoration:underline"> </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;Required &#39;BACKUP_PATH&#39; env not set&#34;</span><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>exit<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1</span>;<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span><span style="color:#000;font-weight:bold">[[</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-z<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;${JENKINS_HOME}&#34;</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:#8f5902;font-style:italic">&amp;&amp;</span><span style="color:#f8f8f8;text-decoration:underline"> </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;Required &#39;JENKINS_HOME&#39; env not set&#34;</span><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>exit<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1</span>;<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>backup_number=$<span style="color:#0000cf;font-weight:bold">1</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;Running backup #${backup_number}&#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>BACKUP_TMP_DIR=$(mktemp<span style="color:#f8f8f8;text-decoration:underline"> </span>-d)<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>tar<span style="color:#f8f8f8;text-decoration:underline"> </span>-C<span style="color:#f8f8f8;text-decoration:underline"> </span>${JENKINS_HOME}<span style="color:#f8f8f8;text-decoration:underline"> </span>-czf<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;${BACKUP_TMP_DIR}/${backup_number}.tar.gz&#34;</span><span style="color:#f8f8f8;text-decoration:underline"> </span>--exclude<span style="color:#f8f8f8;text-decoration:underline"> </span>jobs/<span style="color:#8f5902;font-style:italic">*/workspace*</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-c<span style="color:#f8f8f8;text-decoration:underline"> </span>jobs<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic">&amp;&amp;</span><span style="color:#f8f8f8;text-decoration:underline"> </span>\<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>aws<span style="color:#f8f8f8;text-decoration:underline"> </span>s3<span style="color:#f8f8f8;text-decoration:underline"> </span>cp<span style="color:#f8f8f8;text-decoration:underline"> </span>${BACKUP_TMP_DIR}/${backup_number}.tar.gz<span style="color:#f8f8f8;text-decoration:underline"> </span>s3<span style="color:#000;font-weight:bold">:</span>//${BACKUP_BUCKET}/${BACKUP_PATH}/${backup_number}.tar.gz<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span>Done<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">  </span>restore.sh<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>|<span style="color:#8f5902;font-style:italic">-
 | ||
| </span><span style="color:#8f5902;font-style:italic">    #!/bin/bash -xeu</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span><span style="color:#000;font-weight:bold">[[</span><span style="color:#f8f8f8;text-decoration:underline"> </span>!<span style="color:#f8f8f8;text-decoration:underline"> </span>$<span style="color:#8f5902;font-style:italic"># -eq 1 ]] &amp;&amp; echo &#34;Usage: $0 backup_number&#34; &amp;&amp; exit 1</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span><span style="color:#000;font-weight:bold">[[</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-z<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;${BACKUP_BUCKET}&#34;</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:#8f5902;font-style:italic">&amp;&amp;</span><span style="color:#f8f8f8;text-decoration:underline"> </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;Required &#39;BACKUP_BUCKET&#39; env not set&#34;</span><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>exit<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1</span>;<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span><span style="color:#000;font-weight:bold">[[</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-z<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;${BACKUP_PATH}&#34;</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:#8f5902;font-style:italic">&amp;&amp;</span><span style="color:#f8f8f8;text-decoration:underline"> </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;Required &#39;BACKUP_PATH&#39; env not set&#34;</span><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>exit<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1</span>;<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span><span style="color:#000;font-weight:bold">[[</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-z<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;${JENKINS_HOME}&#34;</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:#8f5902;font-style:italic">&amp;&amp;</span><span style="color:#f8f8f8;text-decoration:underline"> </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;Required &#39;JENKINS_HOME&#39; env not set&#34;</span><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>exit<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1</span>;<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>backup_number=$<span style="color:#0000cf;font-weight:bold">1</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;Running restore #${backup_number}&#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>BACKUP_TMP_DIR=$(mktemp<span style="color:#f8f8f8;text-decoration:underline"> </span>-d)<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>aws<span style="color:#f8f8f8;text-decoration:underline"> </span>s3<span style="color:#f8f8f8;text-decoration:underline"> </span>cp<span style="color:#f8f8f8;text-decoration:underline"> </span>s3<span style="color:#000;font-weight:bold">:</span>//${BACKUP_BUCKET}/${BACKUP_PATH}/${backup_number}.tar.gz<span style="color:#f8f8f8;text-decoration:underline"> </span>${BACKUP_TMP_DIR}/${backup_number}.tar.gz<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>tar<span style="color:#f8f8f8;text-decoration:underline"> </span>-C<span style="color:#f8f8f8;text-decoration:underline"> </span>${JENKINS_HOME}<span style="color:#f8f8f8;text-decoration:underline"> </span>-zxf<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;${BACKUP_TMP_DIR}/${backup_number}.tar.gz&#34;</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span>Done</code></pre></div>
 | ||
| <p>In our example we will use S3 bucket lifecycle policy to keep
 | ||
| the number of backups under control, e.g. Cloud Formation fragment:</p>
 | ||
| <div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-yaml" data-lang="yaml"><span style="color:#f8f8f8;text-decoration:underline">    </span>Type<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>AWS<span style="color:#000;font-weight:bold">::</span>S3<span style="color:#000;font-weight:bold">::</span>Bucket<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>Properties<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">      </span>BucketName<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>my-example-bucket<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">      </span>...<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">      </span>LifecycleConfiguration<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">        </span>Rules<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>Id<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>BackupCleanup<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">            </span>Status<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>Enabled<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">            </span>Prefix<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>my-backup-path<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">            </span>ExpirationInDays<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">7</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">            </span>NoncurrentVersionExpirationInDays<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">14</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">            </span>AbortIncompleteMultipartUpload<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">              </span>DaysAfterInitiation<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">3</span></code></pre></div>
 | ||
|       </description>
 | ||
|     </item>
 | ||
|     
 | ||
|     <item>
 | ||
|       <title>Docs: Notifications</title>
 | ||
|       <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.3.x/notifications/</link>
 | ||
|       <pubDate>Fri, 20 Dec 2019 00:00:00 +0000</pubDate>
 | ||
|       
 | ||
|       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.3.x/notifications/</guid>
 | ||
|       <description>
 | ||
|         
 | ||
|         
 | ||
|         
 | ||
| 
 | ||
| <h2 id="slack">Slack</h2>
 | ||
| 
 | ||
| <p>Please follow <a href="https://api.slack.com/incoming-webhooks" target="_blank">this</a> instructions to get web hook URL.</p>
 | ||
| 
 | ||
| <p>Create web hook secret with name <code>jenkins-operator-notification-data</code>. Contains key <code>url</code> with provided web hook URL.</p>
 | ||
| <div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">$ kubectl create secret generic jenkins-operator-notification-data --from-literal<span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#000">url</span><span style="color:#ce5c00;font-weight:bold">=</span>&lt;webhook_url&gt;</code></pre></div>
 | ||
| <p>Example configuration for Slack:</p>
 | ||
| 
 | ||
| <pre><code>kind: Jenkins
 | ||
| spec:
 | ||
|   master:
 | ||
|     notifications:
 | ||
|     - loggingLevel: info
 | ||
|       verbose: true
 | ||
|       name: &lt;name&gt;
 | ||
|       slack:
 | ||
|         webHookURLSecretKeySelector:
 | ||
|           secret:
 | ||
|             name: &lt;secret_name&gt;
 | ||
|           key: &lt;key&gt;
 | ||
| </code></pre>
 | ||
| 
 | ||
| <h2 id="microsoft-teams">Microsoft Teams</h2>
 | ||
| 
 | ||
| <p>Please follow <a href="https://docs.microsoft.com/en-gb/outlook/actionable-messages/send-via-connectors" target="_blank">this</a> instructions to get web hook URL.</p>
 | ||
| 
 | ||
| <p>Example configuration for Microsoft Teams:</p>
 | ||
| 
 | ||
| <pre><code>kind: Jenkins
 | ||
| spec:
 | ||
|   master:
 | ||
|     notifications:
 | ||
|     - loggingLevel: info
 | ||
|       verbose: true
 | ||
|       name: &lt;name&gt;
 | ||
|       teams:
 | ||
|         webHookURLSecretKeySelector:
 | ||
|           secret:
 | ||
|             name: &lt;secret_name&gt;
 | ||
|           key: &lt;key&gt;
 | ||
| </code></pre>
 | ||
| 
 | ||
| <h2 id="mailgun">Mailgun</h2>
 | ||
| 
 | ||
| <p>Example configuration for Mailgun:</p>
 | ||
| 
 | ||
| <pre><code>kind: Jenkins
 | ||
| spec:
 | ||
|   master:
 | ||
|     notifications:
 | ||
|     - loggingLevel: info
 | ||
|       verbose: true
 | ||
|       name: &lt;name&gt;
 | ||
|       mailgun:
 | ||
|         domain: &lt;domain&gt;
 | ||
|         apiKeySecretKeySelector:
 | ||
|           secret:
 | ||
|             name: &lt;secret_name&gt;
 | ||
|           key: &lt;key&gt;
 | ||
|         recipient: &lt;your_email&gt;
 | ||
|         from: &lt;mailgun_email&gt;
 | ||
| </code></pre>
 | ||
| 
 | ||
| <h2 id="debug-options">Debug options</h2>
 | ||
| 
 | ||
| <p>As you see there is two debugging options:</p>
 | ||
| 
 | ||
| <ul>
 | ||
| <li><p><code>loggingLevel</code> (warning/info) - Set level of messages to send.</p></li>
 | ||
| 
 | ||
| <li><p><code>verbose</code> - Print stacktrace and additional error messages</p></li>
 | ||
| </ul>
 | ||
| 
 | ||
| <h2 id="multiple-providers">Multiple providers</h2>
 | ||
| 
 | ||
| <p>You can use multiple providers to send notification to another communication channels at the same time.
 | ||
| For example you will send notifications to Slack and Teams.</p>
 | ||
| 
 | ||
| <pre><code>kind: Jenkins
 | ||
| spec:
 | ||
|   master:
 | ||
|     notifications:
 | ||
|     - loggingLevel: info
 | ||
|       verbose: true
 | ||
|       name: nslack
 | ||
|       slack:
 | ||
|         webHookURLSecretKeySelector:
 | ||
|           secret:
 | ||
|             name: &lt;secret_name&gt;
 | ||
|           key: &lt;key&gt;
 | ||
|     - loggingLevel: info
 | ||
|       verbose: true
 | ||
|       name: nteams
 | ||
|       teams:
 | ||
|         webHookURLSecretKeySelector:
 | ||
|           secret:
 | ||
|             name: &lt;secret_name&gt;
 | ||
|           key: &lt;key&gt;
 | ||
| </code></pre>
 | ||
| 
 | ||
|       </description>
 | ||
|     </item>
 | ||
|     
 | ||
|     <item>
 | ||
|       <title>Docs: AKS</title>
 | ||
|       <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.1.x/aks/</link>
 | ||
|       <pubDate>Mon, 05 Aug 2019 00:00:00 +0000</pubDate>
 | ||
|       
 | ||
|       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.1.x/aks/</guid>
 | ||
|       <description>
 | ||
|         
 | ||
|         
 | ||
|         <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">
 | ||
| </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 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>
 | ||
| 
 | ||
|       </description>
 | ||
|     </item>
 | ||
|     
 | ||
|     <item>
 | ||
|       <title>Docs: AKS</title>
 | ||
|       <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.2.x/aks/</link>
 | ||
|       <pubDate>Mon, 05 Aug 2019 00:00:00 +0000</pubDate>
 | ||
|       
 | ||
|       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.2.x/aks/</guid>
 | ||
|       <description>
 | ||
|         
 | ||
|         
 | ||
|         <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">
 | ||
| </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 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>
 | ||
| 
 | ||
|       </description>
 | ||
|     </item>
 | ||
|     
 | ||
|     <item>
 | ||
|       <title>Docs: Configure backup and restore</title>
 | ||
|       <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.1.x/configure-backup-and-restore/</link>
 | ||
|       <pubDate>Mon, 05 Aug 2019 00:00:00 +0000</pubDate>
 | ||
|       
 | ||
|       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.1.x/configure-backup-and-restore/</guid>
 | ||
|       <description>
 | ||
|         
 | ||
|         
 | ||
|         
 | ||
| 
 | ||
| <p>Backup and restore is done by a container sidecar.</p>
 | ||
| 
 | ||
| <h4 id="create-pvc">Create PVC</h4>
 | ||
| 
 | ||
| <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">
 | ||
| </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 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">
 | ||
| </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 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">
 | ||
| </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.7</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 to make a backup, in seconds</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>makeBackupBeforePodDeletion<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">true</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># 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 to restore the 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 restore the 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>
 | ||
|       </description>
 | ||
|     </item>
 | ||
|     
 | ||
|     <item>
 | ||
|       <title>Docs: Configure backup and restore</title>
 | ||
|       <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.2.x/configure-backup-and-restore/</link>
 | ||
|       <pubDate>Mon, 05 Aug 2019 00:00:00 +0000</pubDate>
 | ||
|       
 | ||
|       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.2.x/configure-backup-and-restore/</guid>
 | ||
|       <description>
 | ||
|         
 | ||
|         
 | ||
|         
 | ||
| 
 | ||
| <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 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">
 | ||
| </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 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">
 | ||
| </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 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">
 | ||
| </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.7</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 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">
 | ||
| </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>
 | ||
|       </description>
 | ||
|     </item>
 | ||
|     
 | ||
|     <item>
 | ||
|       <title>Docs: Custom Backup and Restore Providers</title>
 | ||
|       <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.2.x/custom-backup-and-restore/</link>
 | ||
|       <pubDate>Mon, 05 Aug 2019 00:00:00 +0000</pubDate>
 | ||
|       
 | ||
|       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.2.x/custom-backup-and-restore/</guid>
 | ||
|       <description>
 | ||
|         
 | ||
|         
 | ||
|         
 | ||
| 
 | ||
| <p>With enough effort one can create a custom backup and restore provider
 | ||
| for the Jenkins Operator.</p>
 | ||
| 
 | ||
| <h2 id="requirements">Requirements</h2>
 | ||
| 
 | ||
| <p>Two commands (e.g. scripts) are required:</p>
 | ||
| 
 | ||
| <ul>
 | ||
| <li>a backup command, e.g. <code>backup.sh</code> that takes one argument, a <strong>backup number</strong></li>
 | ||
| <li>a restore command, e.g. <code>backup.sh</code> that takes one argument, a <strong>backup number</strong></li>
 | ||
| </ul>
 | ||
| 
 | ||
| <p>Both scripts need to return an exit code of <code>0</code> on success and <code>1</code> or greater for failure.</p>
 | ||
| 
 | ||
| <p>One of those scripts (or the entry point of the container) needs to be responsible
 | ||
| for backup cleanup or rotation if required, or an external system.</p>
 | ||
| 
 | ||
| <h2 id="how-it-works">How it works</h2>
 | ||
| 
 | ||
| <p>The mechanism relies on basic Kubernetes and UNIX functionalities.</p>
 | ||
| 
 | ||
| <p>The backup (and restore) container runs as a sidecar in the same
 | ||
| Kubernetes pod as the Jenkins master.</p>
 | ||
| 
 | ||
| <p>Name of the backup and restore containers can be set as necessary using
 | ||
| <code>spec.backup.containerName</code> and <code>spec.restore.containerName</code>.
 | ||
| In most cases it will be the same container, but we allow for less common use cases.</p>
 | ||
| 
 | ||
| <p>The operator will call a backup or restore commands inside a sidecar container when necessary:</p>
 | ||
| 
 | ||
| <ul>
 | ||
| <li>backup command (defined in <code>spec.backup.action.exec.command</code>)
 | ||
| will be called every <code>N</code> seconds configurable in: <code>spec.backup.interval</code>
 | ||
| and on pod shutdown (if enabled in <code>spec.backup.makeBackupBeforePodDeletion</code>)
 | ||
| with an integer representing the current backup number as first and only argument</li>
 | ||
| <li>restore command (defined in <code>spec.restore.action.exec.command</code>)
 | ||
| will be called at Jenkins startup
 | ||
| with an integer representing the backup number to restore as first and only argument
 | ||
| (can be overridden using <code>spec.restore.recoveryOnce</code>)</li>
 | ||
| </ul>
 | ||
| 
 | ||
| <h2 id="example-aws-s3-backup-using-the-cli">Example AWS S3 backup using the CLI</h2>
 | ||
| 
 | ||
| <p>This example shows abbreviated version of a simple AWS S3 backup implementation
 | ||
| using: <code>aws-cli</code>, <code>bash</code> and <code>kube2iam</code>.</p>
 | ||
| 
 | ||
| <p>In addition to your normal <code>Jenkins</code> <code>CustomResource</code> some additional settings
 | ||
| for backup and restore are required, e.g.:</p>
 | ||
| <div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-yaml" data-lang="yaml">kind<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>Jenkins<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline"></span>apiVersion<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins.io/v1alpha1<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline"></span>metadata<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">  </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>example<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">  </span>namespace<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline"></span>spec<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">  </span>master<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>masterAnnotations<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">      </span>iam.amazonaws.com/role<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;my-example-backup-role&#34;</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># tell kube2iam where the AWS IAM role is</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>containers<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">      </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins-master<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">        </span>...<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">      </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>backup<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># container responsible for backup and restore</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">        </span>image<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>quay.io/virtuslab/aws-cli<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1.16.263-2</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">        </span>workingDir<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">        </span>command<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># our container entry point</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>sleep<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>infinity<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">        </span>env<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>BACKUP_BUCKET<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">            </span>value<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>my-example-bucket<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># the S3 bucket name to use</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>BACKUP_PATH<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">            </span>value<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>my-backup-path<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># the S3 bucket path prefix to use</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>JENKINS_HOME<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">            </span>value<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>/jenkins-home<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># the path to mount jenkins home dir in the backup container</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">        </span>volumeMounts<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>mountPath<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>/jenkins-home<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># Jenkins home volume</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">            </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins-home<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>mountPath<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/backup.sh<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">            </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>backup-scripts<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">            </span>subPath<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>backup.sh<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">            </span>readOnly<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">true</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>mountPath<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/restore.sh<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">            </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>backup-scripts<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">            </span>subPath<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>restore.sh<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">            </span>readOnly<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">true</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>volumes<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">      </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>backup-scripts<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">        </span>configMap<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span>defaultMode<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">0754</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins-operator-backup-s3<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>securityContext<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># make sure both containers use the same UID and GUID</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">      </span>runAsUser<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1000</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">      </span>fsGroup<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1000</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">  </span>...<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">  </span>backup<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>containerName<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>backup<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># container name responsible for backup</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>interval<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">3600</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># how often make a backup in seconds</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>makeBackupBeforePodDeletion<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">true</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># trigger backup just before deleting the pod</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>action<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">      </span>exec<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">        </span>command<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span><span style="color:#8f5902;font-style:italic"># this command is invoked on &#34;backup&#34; container to create a backup,</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span><span style="color:#8f5902;font-style:italic"># &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"># for example /home/user/bin/backup.sh &lt;backup_number&gt;</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/backup.sh<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">  </span>restore<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>containerName<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>backup<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># container name is responsible for restore backup</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>action<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">      </span>exec<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">        </span>command<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span><span style="color:#8f5902;font-style:italic"># this command is invoked on &#34;backup&#34; container to restore a backup,</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span><span style="color:#8f5902;font-style:italic"># &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"># for example /home/user/bin/restore.sh &lt;backup_number&gt;</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/restore.sh<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#8f5902;font-style:italic">#    recoveryOnce: &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>
 | ||
| <p>The actual backup and restore scripts will be provided in a <code>ConfigMap</code>:</p>
 | ||
| <div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-yaml" data-lang="yaml">kind<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>ConfigMap<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline"></span>apiVersion<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>v1<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline"></span>metadata<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">  </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins-operator-backup-s3<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">  </span>namespace<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">  </span>labels<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>app<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins-operator<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline"></span>data<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">  </span>backup.sh<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>|<span style="color:#8f5902;font-style:italic">-
 | ||
| </span><span style="color:#8f5902;font-style:italic">    #!/bin/bash -xeu</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span><span style="color:#000;font-weight:bold">[[</span><span style="color:#f8f8f8;text-decoration:underline"> </span>!<span style="color:#f8f8f8;text-decoration:underline"> </span>$<span style="color:#8f5902;font-style:italic"># -eq 1 ]] &amp;&amp; echo &#34;Usage: $0 backup_number&#34; &amp;&amp; exit 1;</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span><span style="color:#000;font-weight:bold">[[</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-z<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;${BACKUP_BUCKET}&#34;</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:#8f5902;font-style:italic">&amp;&amp;</span><span style="color:#f8f8f8;text-decoration:underline"> </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;Required &#39;BACKUP_BUCKET&#39; env not set&#34;</span><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>exit<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1</span>;<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span><span style="color:#000;font-weight:bold">[[</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-z<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;${BACKUP_PATH}&#34;</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:#8f5902;font-style:italic">&amp;&amp;</span><span style="color:#f8f8f8;text-decoration:underline"> </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;Required &#39;BACKUP_PATH&#39; env not set&#34;</span><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>exit<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1</span>;<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span><span style="color:#000;font-weight:bold">[[</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-z<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;${JENKINS_HOME}&#34;</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:#8f5902;font-style:italic">&amp;&amp;</span><span style="color:#f8f8f8;text-decoration:underline"> </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;Required &#39;JENKINS_HOME&#39; env not set&#34;</span><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>exit<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1</span>;<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>backup_number=$<span style="color:#0000cf;font-weight:bold">1</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;Running backup #${backup_number}&#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>BACKUP_TMP_DIR=$(mktemp<span style="color:#f8f8f8;text-decoration:underline"> </span>-d)<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>tar<span style="color:#f8f8f8;text-decoration:underline"> </span>-C<span style="color:#f8f8f8;text-decoration:underline"> </span>${JENKINS_HOME}<span style="color:#f8f8f8;text-decoration:underline"> </span>-czf<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;${BACKUP_TMP_DIR}/${backup_number}.tar.gz&#34;</span><span style="color:#f8f8f8;text-decoration:underline"> </span>--exclude<span style="color:#f8f8f8;text-decoration:underline"> </span>jobs/<span style="color:#8f5902;font-style:italic">*/workspace*</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-c<span style="color:#f8f8f8;text-decoration:underline"> </span>jobs<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic">&amp;&amp;</span><span style="color:#f8f8f8;text-decoration:underline"> </span>\<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>aws<span style="color:#f8f8f8;text-decoration:underline"> </span>s3<span style="color:#f8f8f8;text-decoration:underline"> </span>cp<span style="color:#f8f8f8;text-decoration:underline"> </span>${BACKUP_TMP_DIR}/${backup_number}.tar.gz<span style="color:#f8f8f8;text-decoration:underline"> </span>s3<span style="color:#000;font-weight:bold">:</span>//${BACKUP_BUCKET}/${BACKUP_PATH}/${backup_number}.tar.gz<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span>Done<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">  </span>restore.sh<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>|<span style="color:#8f5902;font-style:italic">-
 | ||
| </span><span style="color:#8f5902;font-style:italic">    #!/bin/bash -xeu</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span><span style="color:#000;font-weight:bold">[[</span><span style="color:#f8f8f8;text-decoration:underline"> </span>!<span style="color:#f8f8f8;text-decoration:underline"> </span>$<span style="color:#8f5902;font-style:italic"># -eq 1 ]] &amp;&amp; echo &#34;Usage: $0 backup_number&#34; &amp;&amp; exit 1</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span><span style="color:#000;font-weight:bold">[[</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-z<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;${BACKUP_BUCKET}&#34;</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:#8f5902;font-style:italic">&amp;&amp;</span><span style="color:#f8f8f8;text-decoration:underline"> </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;Required &#39;BACKUP_BUCKET&#39; env not set&#34;</span><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>exit<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1</span>;<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span><span style="color:#000;font-weight:bold">[[</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-z<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;${BACKUP_PATH}&#34;</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:#8f5902;font-style:italic">&amp;&amp;</span><span style="color:#f8f8f8;text-decoration:underline"> </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;Required &#39;BACKUP_PATH&#39; env not set&#34;</span><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>exit<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1</span>;<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span><span style="color:#000;font-weight:bold">[[</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-z<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;${JENKINS_HOME}&#34;</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:#8f5902;font-style:italic">&amp;&amp;</span><span style="color:#f8f8f8;text-decoration:underline"> </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;Required &#39;JENKINS_HOME&#39; env not set&#34;</span><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>exit<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1</span>;<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>backup_number=$<span style="color:#0000cf;font-weight:bold">1</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;Running restore #${backup_number}&#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>BACKUP_TMP_DIR=$(mktemp<span style="color:#f8f8f8;text-decoration:underline"> </span>-d)<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>aws<span style="color:#f8f8f8;text-decoration:underline"> </span>s3<span style="color:#f8f8f8;text-decoration:underline"> </span>cp<span style="color:#f8f8f8;text-decoration:underline"> </span>s3<span style="color:#000;font-weight:bold">:</span>//${BACKUP_BUCKET}/${BACKUP_PATH}/${backup_number}.tar.gz<span style="color:#f8f8f8;text-decoration:underline"> </span>${BACKUP_TMP_DIR}/${backup_number}.tar.gz<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>tar<span style="color:#f8f8f8;text-decoration:underline"> </span>-C<span style="color:#f8f8f8;text-decoration:underline"> </span>${JENKINS_HOME}<span style="color:#f8f8f8;text-decoration:underline"> </span>-zxf<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;${BACKUP_TMP_DIR}/${backup_number}.tar.gz&#34;</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span>Done</code></pre></div>
 | ||
| <p>In our example we will use S3 bucket lifecycle policy to keep
 | ||
| the number of backups under control, e.g. Cloud Formation fragment:</p>
 | ||
| <div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-yaml" data-lang="yaml"><span style="color:#f8f8f8;text-decoration:underline">    </span>Type<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>AWS<span style="color:#000;font-weight:bold">::</span>S3<span style="color:#000;font-weight:bold">::</span>Bucket<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>Properties<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">      </span>BucketName<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>my-example-bucket<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">      </span>...<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">      </span>LifecycleConfiguration<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">        </span>Rules<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>Id<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>BackupCleanup<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">            </span>Status<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>Enabled<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">            </span>Prefix<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>my-backup-path<span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">            </span>ExpirationInDays<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">7</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">            </span>NoncurrentVersionExpirationInDays<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">14</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">            </span>AbortIncompleteMultipartUpload<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
 | ||
| </span><span style="color:#f8f8f8;text-decoration:underline">              </span>DaysAfterInitiation<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">3</span></code></pre></div>
 | ||
|       </description>
 | ||
|     </item>
 | ||
|     
 | ||
|     <item>
 | ||
|       <title>Docs: Jenkins Docker Images</title>
 | ||
|       <link>https://jenkinsci.github.io/kubernetes-operator/docs/how-it-works/jenkins-docker-images/</link>
 | ||
|       <pubDate>Mon, 05 Aug 2019 00:00:00 +0000</pubDate>
 | ||
|       
 | ||
|       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/how-it-works/jenkins-docker-images/</guid>
 | ||
|       <description>
 | ||
|         
 | ||
|         
 | ||
|         <p><strong>Jenkins Operator</strong> is fully compatible with <strong><code>jenkins:lts</code></strong> Docker image and does not introduce any hidden changes to the upstream Jenkins.</p>
 | ||
| 
 | ||
| <p>If needed, the Docker image can be easily changed in custom resource manifest as long as it supports standard Jenkins file system structure.</p>
 | ||
| 
 | ||
|       </description>
 | ||
|     </item>
 | ||
|     
 | ||
|     <item>
 | ||
|       <title>Docs: Migration from v0.1.x</title>
 | ||
|       <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.2.x/migration/</link>
 | ||
|       <pubDate>Mon, 05 Aug 2019 00:00:00 +0000</pubDate>
 | ||
|       
 | ||
|       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.2.x/migration/</guid>
 | ||
|       <description>
 | ||
|         
 | ||
|         
 | ||
|         
 | ||
| 
 | ||
| <h3 id="major-changes">Major Changes</h3>
 | ||
| 
 | ||
| <h4 id="adding-the-seed-job-agent">Adding the seed job agent</h4>
 | ||
| 
 | ||
| <p>From version <code>v0.2.0</code> seed jobs are not run by master executors, but by a dedicated agent deployed as a Kubernetes Pod.</p>
 | ||
| 
 | ||
| <p>We&rsquo;ve had disabled master executors for security reasons.</p>
 | ||
| 
 | ||
| <h4 id="replacing-configuration-jobs-with-groovy-scripts">Replacing configuration jobs with Groovy scripts</h4>
 | ||
| 
 | ||
| <p>In <code>v0.1.x</code> <strong>Jenkins Operator</strong> user configuration application was implemented using <strong>Jenkins</strong> jobs
 | ||
| and this mechanism was replaced since <code>v0.2.0</code> with Groovy scripts implementing the same functionality.</p>
 | ||
| 
 | ||
| <p>As a result, the <strong>Jenkins</strong> configuration jobs (&ldquo;Configure Seed Jobs&rdquo;, &ldquo;jenkins-operator-base-configuration&rdquo;, &ldquo;jenkins-operator-user-configuration&rdquo;) are no longer visible in <strong>Jenkins</strong> UI.</p>
 | ||
| 
 | ||
| <p>In <code>v0.1.x</code> you can see if any of the configuration jobs failed or succeded in the <strong>Jenkins</strong> UI (job build logs).
 | ||
| Instead, you can make sure the operator is running correctly by inspecting its logs, 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-bash" data-lang="bash">$ kubectl -n logs deployment/jenkins-operator</code></pre></div>
 | ||
| <h4 id="making-user-configuration-sources-configurable">Making User Configuration sources configurable</h4>
 | ||
| 
 | ||
| <p>In <code>v0.1.x</code> <strong>Jenkins Operator</strong> user configuration was stored in a <code>ConfigMap</code> and a <code>Secret</code>
 | ||
| named <code>jenkins-operator-user-configuration-&lt;cr_name&gt;</code>, and its name was hardcoded in the operator.</p>
 | ||
| 
 | ||
| <p>Since <code>v0.2.0</code> the user configuration can be stored in a multiple <code>ConfigMap</code> and <code>Secret</code> manifests
 | ||
| and has to be explicitly pointed to with <code>spec.configurationAsCode.configurations</code> and <code>spec.configurationAsCode.secret</code>
 | ||
| for the Configuration as Code plugin,
 | ||
| and <code>spec.groovyScripts.configurations</code> and <code>spec.groovyScripts.secret</code> for the more advanced groovy scripts.</p>
 | ||
| 
 | ||
| <h3 id="migration">Migration</h3>
 | ||
| 
 | ||
| <p>If you want to use <code>v0.1.x</code> operator configuration with <code>v0.2.x</code> you have to modify your Jenkins Custom Resource(s)
 | ||
| and add explicit references to the existing <code>ConfigMap</code> and <code>Secret</code>, 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">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&gt;<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>...<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">    secret:</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<span style="color:#8f5902;font-style:italic">&gt;
 | ||
| </span><span style="color:#8f5902;font-style:italic">    secret:</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">  ...</span></code></pre></div>
 | ||
|       </description>
 | ||
|     </item>
 | ||
|     
 | ||
|     <item>
 | ||
|       <title>Docs: Tools</title>
 | ||
|       <link>https://jenkinsci.github.io/kubernetes-operator/docs/developer-guide/tools/</link>
 | ||
|       <pubDate>Mon, 05 Aug 2019 00:00:00 +0000</pubDate>
 | ||
|       
 | ||
|       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/developer-guide/tools/</guid>
 | ||
|       <description>
 | ||
|         
 | ||
|         
 | ||
|         
 | ||
| 
 | ||
| 
 | ||
| 
 | ||
| <div class="pageinfo pageinfo-primary">
 | ||
| <p>This document explains how to install the Go tools used by the development process.</p>
 | ||
| 
 | ||
| </div>
 | ||
| 
 | ||
| 
 | ||
| <h2 id="configure-environment-variables">Configure environment variables</h2>
 | ||
| <div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash"><span style="color:#204a87">export</span> <span style="color:#000">GOPATH</span><span style="color:#ce5c00;font-weight:bold">=</span>/home/go <span style="color:#8f5902;font-style:italic"># example value</span>
 | ||
| <span style="color:#204a87">export</span> <span style="color:#000">GOROOT</span><span style="color:#ce5c00;font-weight:bold">=</span>/usr/lib/go-1.12 <span style="color:#8f5902;font-style:italic"># example value</span>
 | ||
| <span style="color:#204a87">export</span> <span style="color:#000">PATH</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#000">$GOPATH</span>/bin:<span style="color:#000">$PATH</span></code></pre></div>
 | ||
| <h2 id="goimports">goimports</h2>
 | ||
| 
 | ||
| <pre><code>go get golang.org/x/tools/cmd/goimports
 | ||
| cd $GOPATH/src/golang.org/x/tools/cmd/goimports
 | ||
| go build
 | ||
| go install
 | ||
| </code></pre>
 | ||
| 
 | ||
| <h2 id="golint">golint</h2>
 | ||
| 
 | ||
| <pre><code>go get -u golang.org/x/lint/golint
 | ||
| cd  $GOPATH/src/golang.org/x/lint/golint
 | ||
| go build
 | ||
| go install
 | ||
| </code></pre>
 | ||
| 
 | ||
| <h2 id="checkmake">checkmake</h2>
 | ||
| 
 | ||
| <pre><code>go get github.com/mrtazz/checkmake
 | ||
| cd $GOPATH/src/github.com/mrtazz/checkmake
 | ||
| go build
 | ||
| go install
 | ||
| </code></pre>
 | ||
| 
 | ||
| <h2 id="staticcheck">staticcheck</h2>
 | ||
| 
 | ||
| <pre><code>mkdir -p $GOPATH/src/github.com/dominikh/
 | ||
| cd $GOPATH/src/github.com/dominikh/
 | ||
| git clone https://github.com/dominikh/go-tools.git
 | ||
| cd  $GOPATH/src/github.com/dominikh/go-tools/staticcheck
 | ||
| go build
 | ||
| go install
 | ||
| </code></pre>
 | ||
| 
 | ||
|       </description>
 | ||
|     </item>
 | ||
|     
 | ||
|     <item>
 | ||
|       <title>Docs: Diagnostics</title>
 | ||
|       <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/diagnostics/</link>
 | ||
|       <pubDate>Mon, 13 Apr 2020 00:00:00 +0000</pubDate>
 | ||
|       
 | ||
|       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/diagnostics/</guid>
 | ||
|       <description>
 | ||
|         
 | ||
|         
 | ||
|         
 | ||
| 
 | ||
| <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 the <code>jenkins-operator</code> logs:</p>
 | ||
| <div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">kubectl logs deployment/jenkins-operator</code></pre></div>
 | ||
| <h2 id="troubleshooting">Troubleshooting</h2>
 | ||
| 
 | ||
| <p>Delete the Jenkins master pod and wait for the new one to come up:</p>
 | ||
| <div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">kubectl delete pod jenkins-&lt;cr_name&gt;</code></pre></div>
 | ||
|       </description>
 | ||
|     </item>
 | ||
|     
 | ||
|     <item>
 | ||
|       <title>Docs: Schema</title>
 | ||
|       <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/schema/</link>
 | ||
|       <pubDate>Mon, 13 Apr 2020 00:00:00 +0000</pubDate>
 | ||
|       
 | ||
|       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/schema/</guid>
 | ||
|       <description>
 | ||
|         
 | ||
|         
 | ||
|         
 | ||
| 
 | ||
| <div class="pageinfo pageinfo-primary">
 | ||
| <p>This document contains API scheme for <code>jenkins-operator</code> Custom Resource Definition 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>notifications</code></br>
 | ||
| <em>
 | ||
| <a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Notification">
 | ||
| [][]github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Notification
 | ||
| </a>
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <em>(Optional)</em>
 | ||
| <p>Notifications defines list of a services which are used to inform about Jenkins status
 | ||
| Can be used to integrate chat services like Slack, Microsoft Teams or Mailgun</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>service</code></br>
 | ||
| <em>
 | ||
| <a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Service">
 | ||
| Service
 | ||
| </a>
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <em>(Optional)</em>
 | ||
| <p>Service is Kubernetes service of Jenkins master HTTP pod
 | ||
| Defaults to :
 | ||
| port: 8080
 | ||
| type: ClusterIP</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>slaveService</code></br>
 | ||
| <em>
 | ||
| <a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Service">
 | ||
| Service
 | ||
| </a>
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <em>(Optional)</em>
 | ||
| <p>Service is Kubernetes service of Jenkins slave pods
 | ||
| Defaults to :
 | ||
| port: 50000
 | ||
| type: ClusterIP</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>backup</code></br>
 | ||
| <em>
 | ||
| <a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Backup">
 | ||
| Backup
 | ||
| </a>
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <em>(Optional)</em>
 | ||
| <p>Backup defines configuration of Jenkins backup
 | ||
| More info: <a href="https://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>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>roles</code></br>
 | ||
| <em>
 | ||
| <a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.12/#roleref-v1-rbac">
 | ||
| []Kubernetes rbac/v1.RoleRef
 | ||
| </a>
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <em>(Optional)</em>
 | ||
| <p>Roles defines list of extra RBAC roles for the Jenkins Master pod service account</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>serviceAccount</code></br>
 | ||
| <em>
 | ||
| <a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.ServiceAccount">
 | ||
| ServiceAccount
 | ||
| </a>
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <em>(Optional)</em>
 | ||
| <p>ServiceAccount defines Jenkins master service account attributes</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>jenkinsAPISettings</code></br>
 | ||
| <em>
 | ||
| <a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.JenkinsAPISettings">
 | ||
| JenkinsAPISettings
 | ||
| </a>
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <p>JenkinsAPISettings defines configuration used by the operator to gain admin access to the Jenkins API</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| </table>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>status</code></br>
 | ||
| <em>
 | ||
| <a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.JenkinsStatus">
 | ||
| JenkinsStatus
 | ||
| </a>
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <p>Status defines the observed state of Jenkins</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| </tbody>
 | ||
| </table>
 | ||
| <h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.AppliedGroovyScript">AppliedGroovyScript
 | ||
| </h3>
 | ||
| <p>
 | ||
| (<em>Appears on:</em>
 | ||
| <a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.JenkinsStatus">JenkinsStatus</a>)
 | ||
| </p>
 | ||
| <p>
 | ||
| <p>AppliedGroovyScript is the applied groovy script in Jenkins by the operator</p>
 | ||
| </p>
 | ||
| <table>
 | ||
| <thead>
 | ||
| <tr>
 | ||
| <th>Field</th>
 | ||
| <th>Description</th>
 | ||
| </tr>
 | ||
| </thead>
 | ||
| <tbody>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>configurationType</code></br>
 | ||
| <em>
 | ||
| string
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <p>ConfigurationType is the name of the configuration type(base-groovy, user-groovy, user-casc)</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>source</code></br>
 | ||
| <em>
 | ||
| string
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <p>Source is the name of source where is located groovy script</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>name</code></br>
 | ||
| <em>
 | ||
| string
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <p>Name is the name of the groovy script</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>hash</code></br>
 | ||
| <em>
 | ||
| string
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <p>Hash is the hash of the groovy script and secrets which it uses</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| </tbody>
 | ||
| </table>
 | ||
| <h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.AuthorizationStrategy">AuthorizationStrategy
 | ||
| (<code>string</code> alias)</p></h3>
 | ||
| <p>
 | ||
| (<em>Appears on:</em>
 | ||
| <a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.JenkinsAPISettings">JenkinsAPISettings</a>)
 | ||
| </p>
 | ||
| <p>
 | ||
| <p>AuthorizationStrategy defines authorization strategy of the operator for the Jenkins API</p>
 | ||
| </p>
 | ||
| <h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Backup">Backup
 | ||
| </h3>
 | ||
| <p>
 | ||
| (<em>Appears on:</em>
 | ||
| <a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.JenkinsSpec">JenkinsSpec</a>)
 | ||
| </p>
 | ||
| <p>
 | ||
| <p>Backup defines configuration of Jenkins backup</p>
 | ||
| </p>
 | ||
| <table>
 | ||
| <thead>
 | ||
| <tr>
 | ||
| <th>Field</th>
 | ||
| <th>Description</th>
 | ||
| </tr>
 | ||
| </thead>
 | ||
| <tbody>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>containerName</code></br>
 | ||
| <em>
 | ||
| string
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <p>ContainerName is the container name responsible for backup operation</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>action</code></br>
 | ||
| <em>
 | ||
| <a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Handler">
 | ||
| Handler
 | ||
| </a>
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <p>Action defines action which performs backup in backup container sidecar</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>interval</code></br>
 | ||
| <em>
 | ||
| uint64
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <p>Interval tells how often make backup in seconds
 | ||
| Defaults to 30.</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>makeBackupBeforePodDeletion</code></br>
 | ||
| <em>
 | ||
| bool
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <p>MakeBackupBeforePodDeletion tells operator to make backup before Jenkins master pod deletion</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| </tbody>
 | ||
| </table>
 | ||
| <h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.ConfigMapRef">ConfigMapRef
 | ||
| </h3>
 | ||
| <p>
 | ||
| (<em>Appears on:</em>
 | ||
| <a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.Customization">Customization</a>)
 | ||
| </p>
 | ||
| <p>
 | ||
| <p>ConfigMapRef is reference to Kubernetes ConfigMap</p>
 | ||
| </p>
 | ||
| <table>
 | ||
| <thead>
 | ||
| <tr>
 | ||
| <th>Field</th>
 | ||
| <th>Description</th>
 | ||
| </tr>
 | ||
| </thead>
 | ||
| <tbody>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>name</code></br>
 | ||
| <em>
 | ||
| string
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| </td>
 | ||
| </tr>
 | ||
| </tbody>
 | ||
| </table>
 | ||
| <h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.ConfigurationAsCode">ConfigurationAsCode
 | ||
| </h3>
 | ||
| <p>
 | ||
| (<em>Appears on:</em>
 | ||
| <a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.JenkinsSpec">JenkinsSpec</a>)
 | ||
| </p>
 | ||
| <p>
 | ||
| <p>ConfigurationAsCode defines configuration of Jenkins customization via Configuration as Code Jenkins plugin</p>
 | ||
| </p>
 | ||
| <table>
 | ||
| <thead>
 | ||
| <tr>
 | ||
| <th>Field</th>
 | ||
| <th>Description</th>
 | ||
| </tr>
 | ||
| </thead>
 | ||
| <tbody>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>Customization</code></br>
 | ||
| <em>
 | ||
| <a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Customization">
 | ||
| Customization
 | ||
| </a>
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <p>
 | ||
| (Members of <code>Customization</code> are embedded into this type.)
 | ||
| </p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| </tbody>
 | ||
| </table>
 | ||
| <h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Container">Container
 | ||
| </h3>
 | ||
| <p>
 | ||
| (<em>Appears on:</em>
 | ||
| <a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.JenkinsMaster">JenkinsMaster</a>)
 | ||
| </p>
 | ||
| <p>
 | ||
| <p>Container defines Kubernetes container attributes</p>
 | ||
| </p>
 | ||
| <table>
 | ||
| <thead>
 | ||
| <tr>
 | ||
| <th>Field</th>
 | ||
| <th>Description</th>
 | ||
| </tr>
 | ||
| </thead>
 | ||
| <tbody>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>name</code></br>
 | ||
| <em>
 | ||
| string
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <p>Name of the container specified as a DNS_LABEL.
 | ||
| Each container in a pod must have a unique name (DNS_LABEL).</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>image</code></br>
 | ||
| <em>
 | ||
| string
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <p>Docker image name.
 | ||
| More info: <a href="https://kubernetes.io/docs/concepts/containers/images">https://kubernetes.io/docs/concepts/containers/images</a></p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>imagePullPolicy</code></br>
 | ||
| <em>
 | ||
| <a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.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>
 | ||
| <p>
 | ||
| (Members of <code>Customization</code> are embedded into this type.)
 | ||
| </p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| </tbody>
 | ||
| </table>
 | ||
| <h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Handler">Handler
 | ||
| </h3>
 | ||
| <p>
 | ||
| (<em>Appears on:</em>
 | ||
| <a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.Backup">Backup</a>, 
 | ||
| <a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.Restore">Restore</a>)
 | ||
| </p>
 | ||
| <p>
 | ||
| <p>Handler defines a specific action that should be taken</p>
 | ||
| </p>
 | ||
| <table>
 | ||
| <thead>
 | ||
| <tr>
 | ||
| <th>Field</th>
 | ||
| <th>Description</th>
 | ||
| </tr>
 | ||
| </thead>
 | ||
| <tbody>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>exec</code></br>
 | ||
| <em>
 | ||
| <a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.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.JenkinsAPISettings">JenkinsAPISettings
 | ||
| </h3>
 | ||
| <p>
 | ||
| (<em>Appears on:</em>
 | ||
| <a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.JenkinsSpec">JenkinsSpec</a>)
 | ||
| </p>
 | ||
| <p>
 | ||
| <p>JenkinsAPISettings defines configuration used by the operator to gain admin access to the Jenkins API</p>
 | ||
| </p>
 | ||
| <table>
 | ||
| <thead>
 | ||
| <tr>
 | ||
| <th>Field</th>
 | ||
| <th>Description</th>
 | ||
| </tr>
 | ||
| </thead>
 | ||
| <tbody>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>authorizationStrategy</code></br>
 | ||
| <em>
 | ||
| <a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.AuthorizationStrategy">
 | ||
| AuthorizationStrategy
 | ||
| </a>
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| </td>
 | ||
| </tr>
 | ||
| </tbody>
 | ||
| </table>
 | ||
| <h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.JenkinsCredentialType">JenkinsCredentialType
 | ||
| (<code>string</code> alias)</p></h3>
 | ||
| <p>
 | ||
| (<em>Appears on:</em>
 | ||
| <a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.SeedJob">SeedJob</a>)
 | ||
| </p>
 | ||
| <p>
 | ||
| <p>JenkinsCredentialType defines type of Jenkins credential used to seed job mechanism</p>
 | ||
| </p>
 | ||
| <h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.JenkinsMaster">JenkinsMaster
 | ||
| </h3>
 | ||
| <p>
 | ||
| (<em>Appears on:</em>
 | ||
| <a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.JenkinsSpec">JenkinsSpec</a>)
 | ||
| </p>
 | ||
| <p>
 | ||
| <p>JenkinsMaster defines the Jenkins master pod attributes and plugins,
 | ||
| every single change requires a Jenkins master pod restart</p>
 | ||
| </p>
 | ||
| <table>
 | ||
| <thead>
 | ||
| <tr>
 | ||
| <th>Field</th>
 | ||
| <th>Description</th>
 | ||
| </tr>
 | ||
| </thead>
 | ||
| <tbody>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>annotations</code></br>
 | ||
| <em>
 | ||
| map[string]string
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <em>(Optional)</em>
 | ||
| <p>Annotations is an unstructured key value map stored with a resource that may be
 | ||
| set by external tools to store and retrieve arbitrary metadata. They are not
 | ||
| queryable and should be preserved when modifying objects.
 | ||
| More info: <a href="http://kubernetes.io/docs/user-guide/annotations">http://kubernetes.io/docs/user-guide/annotations</a></p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>masterAnnotations</code></br>
 | ||
| <em>
 | ||
| map[string]string
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <em>(Optional)</em>
 | ||
| <p>Annotations is an unstructured key value map stored with a resource that may be
 | ||
| set by external tools to store and retrieve arbitrary metadata. They are not
 | ||
| queryable and should be preserved when modifying objects.
 | ||
| More info: <a href="http://kubernetes.io/docs/user-guide/annotations">http://kubernetes.io/docs/user-guide/annotations</a>
 | ||
| Deprecated: will be removed in the future, please use Annotations(annotations)</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>labels</code></br>
 | ||
| <em>
 | ||
| map[string]string
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <em>(Optional)</em>
 | ||
| <p>Map of string keys and values that can be used to organize and categorize
 | ||
| (scope and select) objects. May match selectors of replication controllers
 | ||
| and services.
 | ||
| More info: <a href="http://kubernetes.io/docs/user-guide/labels">http://kubernetes.io/docs/user-guide/labels</a></p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>nodeSelector</code></br>
 | ||
| <em>
 | ||
| map[string]string
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <em>(Optional)</em>
 | ||
| <p>NodeSelector is a selector which must be true for the pod to fit on a node.
 | ||
| Selector which must match a node&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>
 | ||
| <em>(Optional)</em>
 | ||
| <p>List of containers belonging to the pod.
 | ||
| Containers cannot currently be added or removed.
 | ||
| There must be at least one container in a Pod.
 | ||
| Defaults to:
 | ||
| - image: jenkins/jenkins:lts
 | ||
| imagePullPolicy: Always
 | ||
| livenessProbe:
 | ||
| failureThreshold: 12
 | ||
| httpGet:
 | ||
| path: /login
 | ||
| port: http
 | ||
| scheme: HTTP
 | ||
| initialDelaySeconds: 80
 | ||
| periodSeconds: 10
 | ||
| successThreshold: 1
 | ||
| timeoutSeconds: 5
 | ||
| name: jenkins-master
 | ||
| readinessProbe:
 | ||
| failureThreshold: 3
 | ||
| httpGet:
 | ||
| path: /login
 | ||
| port: http
 | ||
| scheme: HTTP
 | ||
| initialDelaySeconds: 30
 | ||
| periodSeconds: 10
 | ||
| successThreshold: 1
 | ||
| timeoutSeconds: 1
 | ||
| resources:
 | ||
| limits:
 | ||
| cpu: 1500m
 | ||
| memory: 3Gi
 | ||
| requests:
 | ||
| cpu: &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>tolerations</code></br>
 | ||
| <em>
 | ||
| <a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.12/#toleration-v1-core">
 | ||
| []Kubernetes core/v1.Toleration
 | ||
| </a>
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <em>(Optional)</em>
 | ||
| <p>If specified, the pod&rsquo;s tolerations.</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>basePlugins</code></br>
 | ||
| <em>
 | ||
| <a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Plugin">
 | ||
| [][]github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Plugin
 | ||
| </a>
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <em>(Optional)</em>
 | ||
| <p>BasePlugins contains plugins required by operator
 | ||
| Defaults to :
 | ||
| - name: kubernetes
 | ||
| version: 1.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>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>disableCSRFProtection</code></br>
 | ||
| <em>
 | ||
| bool
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <p>DisableCSRFProtection allows you to toggle CSRF Protection on Jenkins</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>priorityClassName</code></br>
 | ||
| <em>
 | ||
| string
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <em>(Optional)</em>
 | ||
| <p>PriorityClassName for Jenkins master pod</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| </tbody>
 | ||
| </table>
 | ||
| <h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.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>notifications</code></br>
 | ||
| <em>
 | ||
| <a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Notification">
 | ||
| [][]github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Notification
 | ||
| </a>
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <em>(Optional)</em>
 | ||
| <p>Notifications defines list of a services which are used to inform about Jenkins status
 | ||
| Can be used to integrate chat services like Slack, Microsoft Teams or Mailgun</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>service</code></br>
 | ||
| <em>
 | ||
| <a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Service">
 | ||
| Service
 | ||
| </a>
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <em>(Optional)</em>
 | ||
| <p>Service is Kubernetes service of Jenkins master HTTP pod
 | ||
| Defaults to :
 | ||
| port: 8080
 | ||
| type: ClusterIP</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>slaveService</code></br>
 | ||
| <em>
 | ||
| <a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Service">
 | ||
| Service
 | ||
| </a>
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <em>(Optional)</em>
 | ||
| <p>Service is Kubernetes service of Jenkins slave pods
 | ||
| Defaults to :
 | ||
| port: 50000
 | ||
| type: ClusterIP</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>backup</code></br>
 | ||
| <em>
 | ||
| <a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Backup">
 | ||
| Backup
 | ||
| </a>
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <em>(Optional)</em>
 | ||
| <p>Backup defines configuration of Jenkins backup
 | ||
| More info: <a href="https://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>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>roles</code></br>
 | ||
| <em>
 | ||
| <a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.12/#roleref-v1-rbac">
 | ||
| []Kubernetes rbac/v1.RoleRef
 | ||
| </a>
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <em>(Optional)</em>
 | ||
| <p>Roles defines list of extra RBAC roles for the Jenkins Master pod service account</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>serviceAccount</code></br>
 | ||
| <em>
 | ||
| <a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.ServiceAccount">
 | ||
| ServiceAccount
 | ||
| </a>
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <em>(Optional)</em>
 | ||
| <p>ServiceAccount defines Jenkins master service account attributes</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>jenkinsAPISettings</code></br>
 | ||
| <em>
 | ||
| <a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.JenkinsAPISettings">
 | ||
| JenkinsAPISettings
 | ||
| </a>
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <p>JenkinsAPISettings defines configuration used by the operator to gain admin access to the Jenkins API</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| </tbody>
 | ||
| </table>
 | ||
| <h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.JenkinsStatus">JenkinsStatus
 | ||
| </h3>
 | ||
| <p>
 | ||
| (<em>Appears on:</em>
 | ||
| <a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.Jenkins">Jenkins</a>)
 | ||
| </p>
 | ||
| <p>
 | ||
| <p>JenkinsStatus defines the observed state of Jenkins</p>
 | ||
| </p>
 | ||
| <table>
 | ||
| <thead>
 | ||
| <tr>
 | ||
| <th>Field</th>
 | ||
| <th>Description</th>
 | ||
| </tr>
 | ||
| </thead>
 | ||
| <tbody>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>operatorVersion</code></br>
 | ||
| <em>
 | ||
| string
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <em>(Optional)</em>
 | ||
| <p>OperatorVersion is the operator version which manages this CR</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>provisionStartTime</code></br>
 | ||
| <em>
 | ||
| <a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.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>
 | ||
| (<em>Appears on:</em>
 | ||
| <a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.JenkinsSpec">JenkinsSpec</a>)
 | ||
| </p>
 | ||
| <p>
 | ||
| <p>Notification is a service configuration used to send notifications about Jenkins status</p>
 | ||
| </p>
 | ||
| <table>
 | ||
| <thead>
 | ||
| <tr>
 | ||
| <th>Field</th>
 | ||
| <th>Description</th>
 | ||
| </tr>
 | ||
| </thead>
 | ||
| <tbody>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>level</code></br>
 | ||
| <em>
 | ||
| <a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.NotificationLevel">
 | ||
| NotificationLevel
 | ||
| </a>
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>verbose</code></br>
 | ||
| <em>
 | ||
| bool
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>name</code></br>
 | ||
| <em>
 | ||
| string
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>slack</code></br>
 | ||
| <em>
 | ||
| <a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Slack">
 | ||
| github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Slack
 | ||
| </a>
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>teams</code></br>
 | ||
| <em>
 | ||
| <a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.MicrosoftTeams">
 | ||
| github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.MicrosoftTeams
 | ||
| </a>
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>mailgun</code></br>
 | ||
| <em>
 | ||
| <a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Mailgun">
 | ||
| github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Mailgun
 | ||
| </a>
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>smtp</code></br>
 | ||
| <em>
 | ||
| <a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.SMTP">
 | ||
| github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.SMTP
 | ||
| </a>
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| </td>
 | ||
| </tr>
 | ||
| </tbody>
 | ||
| </table>
 | ||
| <h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.NotificationLevel">NotificationLevel
 | ||
| (<code>string</code> alias)</p></h3>
 | ||
| <p>
 | ||
| (<em>Appears on:</em>
 | ||
| <a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.Notification">Notification</a>)
 | ||
| </p>
 | ||
| <p>
 | ||
| <p>NotificationLevel defines the level of a Notification</p>
 | ||
| </p>
 | ||
| <h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Plugin">Plugin
 | ||
| </h3>
 | ||
| <p>
 | ||
| (<em>Appears on:</em>
 | ||
| <a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.JenkinsMaster">JenkinsMaster</a>)
 | ||
| </p>
 | ||
| <p>
 | ||
| <p>Plugin defines Jenkins plugin</p>
 | ||
| </p>
 | ||
| <table>
 | ||
| <thead>
 | ||
| <tr>
 | ||
| <th>Field</th>
 | ||
| <th>Description</th>
 | ||
| </tr>
 | ||
| </thead>
 | ||
| <tbody>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>name</code></br>
 | ||
| <em>
 | ||
| string
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <p>Name is the name of Jenkins plugin</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>version</code></br>
 | ||
| <em>
 | ||
| string
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <p>Version is the version of Jenkins plugin</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>downloadURL</code></br>
 | ||
| <em>
 | ||
| string
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <p>DownloadURL is the custom url from where plugin has to be downloaded.</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| </tbody>
 | ||
| </table>
 | ||
| <h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Restore">Restore
 | ||
| </h3>
 | ||
| <p>
 | ||
| (<em>Appears on:</em>
 | ||
| <a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.JenkinsSpec">JenkinsSpec</a>)
 | ||
| </p>
 | ||
| <p>
 | ||
| <p>Restore defines configuration of Jenkins backup restore operation</p>
 | ||
| </p>
 | ||
| <table>
 | ||
| <thead>
 | ||
| <tr>
 | ||
| <th>Field</th>
 | ||
| <th>Description</th>
 | ||
| </tr>
 | ||
| </thead>
 | ||
| <tbody>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>containerName</code></br>
 | ||
| <em>
 | ||
| string
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <p>ContainerName is the container name responsible for restore backup operation</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>action</code></br>
 | ||
| <em>
 | ||
| <a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Handler">
 | ||
| Handler
 | ||
| </a>
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <p>Action defines action which performs restore backup in restore container sidecar</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>recoveryOnce</code></br>
 | ||
| <em>
 | ||
| uint64
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <em>(Optional)</em>
 | ||
| <p>RecoveryOnce if want to restore specific backup set this field and then Jenkins will be restarted and desired backup will be restored</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| </tbody>
 | ||
| </table>
 | ||
| <h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.SMTP">SMTP
 | ||
| </h3>
 | ||
| <p>
 | ||
| (<em>Appears on:</em>
 | ||
| <a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.Notification">Notification</a>)
 | ||
| </p>
 | ||
| <p>
 | ||
| <p>SMTP is handler for sending emails via this protocol</p>
 | ||
| </p>
 | ||
| <table>
 | ||
| <thead>
 | ||
| <tr>
 | ||
| <th>Field</th>
 | ||
| <th>Description</th>
 | ||
| </tr>
 | ||
| </thead>
 | ||
| <tbody>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>usernameSecretKeySelector</code></br>
 | ||
| <em>
 | ||
| <a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.SecretKeySelector">
 | ||
| SecretKeySelector
 | ||
| </a>
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>passwordSecretKeySelector</code></br>
 | ||
| <em>
 | ||
| <a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.SecretKeySelector">
 | ||
| SecretKeySelector
 | ||
| </a>
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>port</code></br>
 | ||
| <em>
 | ||
| int
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>server</code></br>
 | ||
| <em>
 | ||
| string
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>tlsInsecureSkipVerify</code></br>
 | ||
| <em>
 | ||
| bool
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>from</code></br>
 | ||
| <em>
 | ||
| string
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>to</code></br>
 | ||
| <em>
 | ||
| string
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| </td>
 | ||
| </tr>
 | ||
| </tbody>
 | ||
| </table>
 | ||
| <h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.SecretKeySelector">SecretKeySelector
 | ||
| </h3>
 | ||
| <p>
 | ||
| (<em>Appears on:</em>
 | ||
| <a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.Mailgun">Mailgun</a>, 
 | ||
| <a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.MicrosoftTeams">MicrosoftTeams</a>, 
 | ||
| <a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.SMTP">SMTP</a>, 
 | ||
| <a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.Slack">Slack</a>)
 | ||
| </p>
 | ||
| <p>
 | ||
| <p>SecretKeySelector selects a key of a Secret.</p>
 | ||
| </p>
 | ||
| <table>
 | ||
| <thead>
 | ||
| <tr>
 | ||
| <th>Field</th>
 | ||
| <th>Description</th>
 | ||
| </tr>
 | ||
| </thead>
 | ||
| <tbody>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>secret</code></br>
 | ||
| <em>
 | ||
| <a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.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>bitbucketPushTrigger</code></br>
 | ||
| <em>
 | ||
| bool
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <em>(Optional)</em>
 | ||
| <p>BitbucketPushTrigger is used for Bitbucket web hooks</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>githubPushTrigger</code></br>
 | ||
| <em>
 | ||
| bool
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <em>(Optional)</em>
 | ||
| <p>GitHubPushTrigger is used for GitHub web hooks</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>buildPeriodically</code></br>
 | ||
| <em>
 | ||
| string
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <em>(Optional)</em>
 | ||
| <p>BuildPeriodically is setting for scheduled trigger</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>pollSCM</code></br>
 | ||
| <em>
 | ||
| string
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <em>(Optional)</em>
 | ||
| <p>PollSCM is setting for polling changes in SCM</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>ignoreMissingFiles</code></br>
 | ||
| <em>
 | ||
| bool
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <em>(Optional)</em>
 | ||
| <p>IgnoreMissingFiles is setting for Job DSL API plugin to ignore files that miss</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>additionalClasspath</code></br>
 | ||
| <em>
 | ||
| string
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <em>(Optional)</em>
 | ||
| <p>AdditionalClasspath is setting for Job DSL API plugin to set Additional Classpath</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>failOnMissingPlugin</code></br>
 | ||
| <em>
 | ||
| bool
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <em>(Optional)</em>
 | ||
| <p>FailOnMissingPlugin is setting for Job DSL API plugin that fails job if required plugin is missing</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>unstableOnDeprecation</code></br>
 | ||
| <em>
 | ||
| bool
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <em>(Optional)</em>
 | ||
| <p>UnstableOnDeprecation is setting for Job DSL API plugin that sets build status as unstable if build using deprecated features</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| </tbody>
 | ||
| </table>
 | ||
| <h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Service">Service
 | ||
| </h3>
 | ||
| <p>
 | ||
| (<em>Appears on:</em>
 | ||
| <a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.JenkinsSpec">JenkinsSpec</a>)
 | ||
| </p>
 | ||
| <p>
 | ||
| <p>Service defines Kubernetes service attributes</p>
 | ||
| </p>
 | ||
| <table>
 | ||
| <thead>
 | ||
| <tr>
 | ||
| <th>Field</th>
 | ||
| <th>Description</th>
 | ||
| </tr>
 | ||
| </thead>
 | ||
| <tbody>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>annotations</code></br>
 | ||
| <em>
 | ||
| map[string]string
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <em>(Optional)</em>
 | ||
| <p>Annotations is an unstructured key value map stored with a resource that may be
 | ||
| set by external tools to store and retrieve arbitrary metadata. They are not
 | ||
| queryable and should be preserved when modifying objects.
 | ||
| More info: <a href="http://kubernetes.io/docs/user-guide/annotations">http://kubernetes.io/docs/user-guide/annotations</a></p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>labels</code></br>
 | ||
| <em>
 | ||
| map[string]string
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <em>(Optional)</em>
 | ||
| <p>Route service traffic to pods with label keys and values matching this
 | ||
| selector. If empty or not present, the service is assumed to have an
 | ||
| external process managing its endpoints, which Kubernetes will not
 | ||
| modify. Only applies to types ClusterIP, NodePort, and LoadBalancer.
 | ||
| Ignored if type is ExternalName.
 | ||
| More info: <a href="https://kubernetes.io/docs/concepts/services-networking/service/">https://kubernetes.io/docs/concepts/services-networking/service/</a></p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>type</code></br>
 | ||
| <em>
 | ||
| <a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.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.ServiceAccount">ServiceAccount
 | ||
| </h3>
 | ||
| <p>
 | ||
| (<em>Appears on:</em>
 | ||
| <a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.JenkinsSpec">JenkinsSpec</a>)
 | ||
| </p>
 | ||
| <p>
 | ||
| <p>ServiceAccount defines Kubernetes service account attributes</p>
 | ||
| </p>
 | ||
| <table>
 | ||
| <thead>
 | ||
| <tr>
 | ||
| <th>Field</th>
 | ||
| <th>Description</th>
 | ||
| </tr>
 | ||
| </thead>
 | ||
| <tbody>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>annotations</code></br>
 | ||
| <em>
 | ||
| map[string]string
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <em>(Optional)</em>
 | ||
| <p>Annotations is an unstructured key value map stored with a resource that may be
 | ||
| set by external tools to store and retrieve arbitrary metadata. They are not
 | ||
| queryable and should be preserved when modifying objects.
 | ||
| More info: <a href="http://kubernetes.io/docs/user-guide/annotations">http://kubernetes.io/docs/user-guide/annotations</a></p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| </tbody>
 | ||
| </table>
 | ||
| <h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Slack">Slack
 | ||
| </h3>
 | ||
| <p>
 | ||
| (<em>Appears on:</em>
 | ||
| <a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.Notification">Notification</a>)
 | ||
| </p>
 | ||
| <p>
 | ||
| <p>Slack is handler for Slack notification channel</p>
 | ||
| </p>
 | ||
| <table>
 | ||
| <thead>
 | ||
| <tr>
 | ||
| <th>Field</th>
 | ||
| <th>Description</th>
 | ||
| </tr>
 | ||
| </thead>
 | ||
| <tbody>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>webHookURLSecretKeySelector</code></br>
 | ||
| <em>
 | ||
| <a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.SecretKeySelector">
 | ||
| SecretKeySelector
 | ||
| </a>
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <p>The web hook URL to Slack App</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| </tbody>
 | ||
| </table>
 | ||
| <hr/>
 | ||
| <p><em>
 | ||
| Generated with <code>gen-crd-api-reference-docs</code>
 | ||
| on git commit <code>8404b97</code>.
 | ||
| </em></p>
 | ||
| 
 | ||
|       </description>
 | ||
|     </item>
 | ||
|     
 | ||
|     <item>
 | ||
|       <title>Docs: Diagnostics</title>
 | ||
|       <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.3.x/diagnostics/</link>
 | ||
|       <pubDate>Fri, 20 Dec 2019 00:00:00 +0000</pubDate>
 | ||
|       
 | ||
|       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.3.x/diagnostics/</guid>
 | ||
|       <description>
 | ||
|         
 | ||
|         
 | ||
|         
 | ||
| 
 | ||
| <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 the <code>jenkins-operator</code> logs:</p>
 | ||
| <div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">kubectl logs deployment/jenkins-operator</code></pre></div>
 | ||
| <h2 id="troubleshooting">Troubleshooting</h2>
 | ||
| 
 | ||
| <p>Delete the Jenkins master pod and wait for the new one to come up:</p>
 | ||
| <div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">kubectl delete pod jenkins-&lt;cr_name&gt;</code></pre></div>
 | ||
|       </description>
 | ||
|     </item>
 | ||
|     
 | ||
|     <item>
 | ||
|       <title>Docs: Schema</title>
 | ||
|       <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.3.x/schema/</link>
 | ||
|       <pubDate>Fri, 20 Dec 2019 00:00:00 +0000</pubDate>
 | ||
|       
 | ||
|       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.3.x/schema/</guid>
 | ||
|       <description>
 | ||
|         
 | ||
|         
 | ||
|         
 | ||
| 
 | ||
| <div class="pageinfo pageinfo-primary">
 | ||
| <p>This document contains API scheme for <code>jenkins-operator</code> Custom Resource Definition 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>notifications</code></br>
 | ||
| <em>
 | ||
| <a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Notification">
 | ||
| [][]github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Notification
 | ||
| </a>
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <p>Notifications defines list of a services which are used to inform about Jenkins status
 | ||
| Can be used to integrate chat services like Slack, Microsoft Teams or Mailgun</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>service</code></br>
 | ||
| <em>
 | ||
| <a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Service">
 | ||
| Service
 | ||
| </a>
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <em>(Optional)</em>
 | ||
| <p>Service is Kubernetes service of Jenkins master HTTP pod
 | ||
| Defaults to :
 | ||
| port: 8080
 | ||
| type: ClusterIP</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>slaveService</code></br>
 | ||
| <em>
 | ||
| <a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Service">
 | ||
| Service
 | ||
| </a>
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <em>(Optional)</em>
 | ||
| <p>Service is Kubernetes service of Jenkins slave pods
 | ||
| Defaults to :
 | ||
| port: 50000
 | ||
| type: ClusterIP</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>backup</code></br>
 | ||
| <em>
 | ||
| <a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Backup">
 | ||
| Backup
 | ||
| </a>
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <em>(Optional)</em>
 | ||
| <p>Backup defines configuration of Jenkins backup
 | ||
| More info: <a href="https://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>annotations</code></br>
 | ||
| <em>
 | ||
| map[string]string
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <em>(Optional)</em>
 | ||
| <p>Annotations is an unstructured key value map stored with a resource that may be
 | ||
| set by external tools to store and retrieve arbitrary metadata. They are not
 | ||
| queryable and should be preserved when modifying objects.
 | ||
| More info: <a href="http://kubernetes.io/docs/user-guide/annotations">http://kubernetes.io/docs/user-guide/annotations</a></p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>masterAnnotations</code></br>
 | ||
| <em>
 | ||
| map[string]string
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <em>(Optional)</em>
 | ||
| <p>Annotations is an unstructured key value map stored with a resource that may be
 | ||
| set by external tools to store and retrieve arbitrary metadata. They are not
 | ||
| queryable and should be preserved when modifying objects.
 | ||
| More info: <a href="http://kubernetes.io/docs/user-guide/annotations">http://kubernetes.io/docs/user-guide/annotations</a>
 | ||
| Deprecated: will be removed in the future, please use Annotations(annotations)</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>labels</code></br>
 | ||
| <em>
 | ||
| map[string]string
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <em>(Optional)</em>
 | ||
| <p>Map of string keys and values that can be used to organize and categorize
 | ||
| (scope and select) objects. May match selectors of replication controllers
 | ||
| and services.
 | ||
| More info: <a href="http://kubernetes.io/docs/user-guide/labels">http://kubernetes.io/docs/user-guide/labels</a></p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>nodeSelector</code></br>
 | ||
| <em>
 | ||
| map[string]string
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <em>(Optional)</em>
 | ||
| <p>NodeSelector is a selector which must be true for the pod to fit on a node.
 | ||
| Selector which must match a node&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>tolerations</code></br>
 | ||
| <em>
 | ||
| <a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.12/#toleration-v1-core">
 | ||
| []Kubernetes core/v1.Toleration
 | ||
| </a>
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <em>(Optional)</em>
 | ||
| <p>If specified, the pod&rsquo;s tolerations.</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>basePlugins</code></br>
 | ||
| <em>
 | ||
| <a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Plugin">
 | ||
| [][]github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Plugin
 | ||
| </a>
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <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>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>disableCSRFProtection</code></br>
 | ||
| <em>
 | ||
| bool
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <p>DisableCSRFProtection allows you to toggle CSRF Protection on Jenkins</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>notifications</code></br>
 | ||
| <em>
 | ||
| <a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Notification">
 | ||
| [][]github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Notification
 | ||
| </a>
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <p>Notifications defines list of a services which are used to inform about Jenkins status
 | ||
| Can be used to integrate chat services like Slack, Microsoft Teams or Mailgun</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>service</code></br>
 | ||
| <em>
 | ||
| <a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Service">
 | ||
| Service
 | ||
| </a>
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <em>(Optional)</em>
 | ||
| <p>Service is Kubernetes service of Jenkins master HTTP pod
 | ||
| Defaults to :
 | ||
| port: 8080
 | ||
| type: ClusterIP</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>slaveService</code></br>
 | ||
| <em>
 | ||
| <a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Service">
 | ||
| Service
 | ||
| </a>
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <em>(Optional)</em>
 | ||
| <p>Service is Kubernetes service of Jenkins slave pods
 | ||
| Defaults to :
 | ||
| port: 50000
 | ||
| type: ClusterIP</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>backup</code></br>
 | ||
| <em>
 | ||
| <a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Backup">
 | ||
| Backup
 | ||
| </a>
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <em>(Optional)</em>
 | ||
| <p>Backup defines configuration of Jenkins backup
 | ||
| More info: <a href="https://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>
 | ||
| (<em>Appears on:</em>
 | ||
| <a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.JenkinsSpec">JenkinsSpec</a>)
 | ||
| </p>
 | ||
| <p>
 | ||
| <p>Notification is a service configuration used to send notifications about Jenkins status</p>
 | ||
| </p>
 | ||
| <table>
 | ||
| <thead>
 | ||
| <tr>
 | ||
| <th>Field</th>
 | ||
| <th>Description</th>
 | ||
| </tr>
 | ||
| </thead>
 | ||
| <tbody>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>level</code></br>
 | ||
| <em>
 | ||
| <a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.NotificationLevel">
 | ||
| NotificationLevel
 | ||
| </a>
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>verbose</code></br>
 | ||
| <em>
 | ||
| bool
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>name</code></br>
 | ||
| <em>
 | ||
| string
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>slack</code></br>
 | ||
| <em>
 | ||
| <a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Slack">
 | ||
| github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Slack
 | ||
| </a>
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>teams</code></br>
 | ||
| <em>
 | ||
| <a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.MicrosoftTeams">
 | ||
| github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.MicrosoftTeams
 | ||
| </a>
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>mailgun</code></br>
 | ||
| <em>
 | ||
| <a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Mailgun">
 | ||
| github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Mailgun
 | ||
| </a>
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>smtp</code></br>
 | ||
| <em>
 | ||
| <a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.SMTP">
 | ||
| github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.SMTP
 | ||
| </a>
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| </td>
 | ||
| </tr>
 | ||
| </tbody>
 | ||
| </table>
 | ||
| <h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.NotificationLevel">NotificationLevel
 | ||
| (<code>string</code> alias)</p></h3>
 | ||
| <p>
 | ||
| (<em>Appears on:</em>
 | ||
| <a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.Notification">Notification</a>)
 | ||
| </p>
 | ||
| <p>
 | ||
| <p>NotificationLevel defines the level of a Notification</p>
 | ||
| </p>
 | ||
| <h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Plugin">Plugin
 | ||
| </h3>
 | ||
| <p>
 | ||
| (<em>Appears on:</em>
 | ||
| <a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.JenkinsMaster">JenkinsMaster</a>)
 | ||
| </p>
 | ||
| <p>
 | ||
| <p>Plugin defines Jenkins plugin</p>
 | ||
| </p>
 | ||
| <table>
 | ||
| <thead>
 | ||
| <tr>
 | ||
| <th>Field</th>
 | ||
| <th>Description</th>
 | ||
| </tr>
 | ||
| </thead>
 | ||
| <tbody>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>name</code></br>
 | ||
| <em>
 | ||
| string
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <p>Name is the name of Jenkins plugin</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>version</code></br>
 | ||
| <em>
 | ||
| string
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <p>Version is the version of Jenkins plugin</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| </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.SMTP">SMTP
 | ||
| </h3>
 | ||
| <p>
 | ||
| (<em>Appears on:</em>
 | ||
| <a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.Notification">Notification</a>)
 | ||
| </p>
 | ||
| <p>
 | ||
| <p>SMTP is handler for sending emails via this protocol</p>
 | ||
| </p>
 | ||
| <table>
 | ||
| <thead>
 | ||
| <tr>
 | ||
| <th>Field</th>
 | ||
| <th>Description</th>
 | ||
| </tr>
 | ||
| </thead>
 | ||
| <tbody>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>usernameSecretKeySelector</code></br>
 | ||
| <em>
 | ||
| <a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.SecretKeySelector">
 | ||
| SecretKeySelector
 | ||
| </a>
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>passwordSecretKeySelector</code></br>
 | ||
| <em>
 | ||
| <a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.SecretKeySelector">
 | ||
| SecretKeySelector
 | ||
| </a>
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>port</code></br>
 | ||
| <em>
 | ||
| int
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>server</code></br>
 | ||
| <em>
 | ||
| string
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>tlsInsecureSkipVerify</code></br>
 | ||
| <em>
 | ||
| bool
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>from</code></br>
 | ||
| <em>
 | ||
| string
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>to</code></br>
 | ||
| <em>
 | ||
| string
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| </td>
 | ||
| </tr>
 | ||
| </tbody>
 | ||
| </table>
 | ||
| <h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.SecretKeySelector">SecretKeySelector
 | ||
| </h3>
 | ||
| <p>
 | ||
| (<em>Appears on:</em>
 | ||
| <a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.Mailgun">Mailgun</a>, 
 | ||
| <a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.MicrosoftTeams">MicrosoftTeams</a>, 
 | ||
| <a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.SMTP">SMTP</a>, 
 | ||
| <a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.Slack">Slack</a>)
 | ||
| </p>
 | ||
| <p>
 | ||
| <p>SecretKeySelector selects a key of a Secret.</p>
 | ||
| </p>
 | ||
| <table>
 | ||
| <thead>
 | ||
| <tr>
 | ||
| <th>Field</th>
 | ||
| <th>Description</th>
 | ||
| </tr>
 | ||
| </thead>
 | ||
| <tbody>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>secret</code></br>
 | ||
| <em>
 | ||
| <a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.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>4b89360</code>.
 | ||
| </em></p>
 | ||
| 
 | ||
|       </description>
 | ||
|     </item>
 | ||
|     
 | ||
|     <item>
 | ||
|       <title>Docs: Diagnostics</title>
 | ||
|       <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.1.x/diagnostics/</link>
 | ||
|       <pubDate>Mon, 05 Aug 2019 00:00:00 +0000</pubDate>
 | ||
|       
 | ||
|       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.1.x/diagnostics/</guid>
 | ||
|       <description>
 | ||
|         
 | ||
|         
 | ||
|         
 | ||
| 
 | ||
| <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 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>
 | ||
|       </description>
 | ||
|     </item>
 | ||
|     
 | ||
|     <item>
 | ||
|       <title>Docs: Diagnostics</title>
 | ||
|       <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.2.x/diagnostics/</link>
 | ||
|       <pubDate>Mon, 05 Aug 2019 00:00:00 +0000</pubDate>
 | ||
|       
 | ||
|       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.2.x/diagnostics/</guid>
 | ||
|       <description>
 | ||
|         
 | ||
|         
 | ||
|         
 | ||
| 
 | ||
| <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 the <code>jenkins-operator</code> logs:</p>
 | ||
| <div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">kubectl logs deployment/jenkins-operator</code></pre></div>
 | ||
| <h2 id="troubleshooting">Troubleshooting</h2>
 | ||
| 
 | ||
| <p>Delete the Jenkins master pod and wait for the new one to come up:</p>
 | ||
| <div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">kubectl delete pod jenkins-&lt;cr_name&gt;</code></pre></div>
 | ||
|       </description>
 | ||
|     </item>
 | ||
|     
 | ||
|     <item>
 | ||
|       <title>Docs: Schema</title>
 | ||
|       <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.2.x/schema/</link>
 | ||
|       <pubDate>Mon, 05 Aug 2019 00:00:00 +0000</pubDate>
 | ||
|       
 | ||
|       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.2.x/schema/</guid>
 | ||
|       <description>
 | ||
|         
 | ||
|         
 | ||
|         
 | ||
| 
 | ||
| <div class="pageinfo pageinfo-primary">
 | ||
| <p>This document contains API scheme for <code>jenkins-operator</code> Custom Resource Definition 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 the 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 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>
 | ||
| <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 the Kubernetes service of the 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 the Kubernetes service of the 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 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>
 | ||
| <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 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>
 | ||
| <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 the 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 the configuration of Jenkins customization via the 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 the configuration of a 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 the action which performs the backup in the backup container sidecar</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>interval</code></br>
 | ||
| <em>
 | ||
| uint64
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <p>Interval tells you how often the backup is made in seconds
 | ||
| Defaults to 30.</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>makeBackupBeforePodDeletion</code></br>
 | ||
| <em>
 | ||
| bool
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <p>MakeBackupBeforePodDeletion tells the operator to make a 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 the 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 the 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 the 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 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>
 | ||
| <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 the username 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 ids 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 the seed job definitions are</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>repositoryBranch</code></br>
 | ||
| <em>
 | ||
| string
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <p>RepositoryBranch is the repository branch where the seed job definitions are</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 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>
 | ||
| <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
 | ||
| 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>
 | ||
| </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>
 | ||
| 
 | ||
|       </description>
 | ||
|     </item>
 | ||
|     
 | ||
|     <item>
 | ||
|       <title>Docs: Scheme</title>
 | ||
|       <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.1.x/scheme/</link>
 | ||
|       <pubDate>Mon, 05 Aug 2019 00:00:00 +0000</pubDate>
 | ||
|       
 | ||
|       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.1.x/scheme/</guid>
 | ||
|       <description>
 | ||
|         
 | ||
|         
 | ||
|         
 | ||
| 
 | ||
| <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 the 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 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>
 | ||
| <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 the Kubernetes service of the 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 the Kubernetes service of the 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 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>
 | ||
| <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 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>
 | ||
| </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 the 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 the action which performs the backup in the backup container sidecar</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>interval</code></br>
 | ||
| <em>
 | ||
| uint64
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <p>Interval tells you how often the backup is made in seconds
 | ||
| Defaults to 30.</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>makeBackupBeforePodDeletion</code></br>
 | ||
| <em>
 | ||
| bool
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <p>MakeBackupBeforePodDeletion tells the operator to make a 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 the 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 a Jenkins build</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>retries</code></br>
 | ||
| <em>
 | ||
| int
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <p>Retires is the amount of times a 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 the 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 the 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.
 | ||
| The 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.
 | ||
| The 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 in the 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 the 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 the Kubernetes service of the 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 the Kubernetes service of the 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 the configuration of the 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 the configuration of the 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 the 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 the 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 the 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 a 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  the username 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 ids 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 the Jenkins plugin</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>version</code></br>
 | ||
| <em>
 | ||
| string
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <p>Version is the version of the 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 the configuration of a 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 the 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 the restore backup in a restore container sidecar</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>recoveryOnce</code></br>
 | ||
| <em>
 | ||
| uint64
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <em>(Optional)</em>
 | ||
| <p>RecoveryOnce if you want to restore a specific backup, set this field, and then Jenkins will be restarted and the 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 the seed job definitions are</p>
 | ||
| </td>
 | ||
| </tr>
 | ||
| <tr>
 | ||
| <td>
 | ||
| <code>repositoryBranch</code></br>
 | ||
| <em>
 | ||
| string
 | ||
| </em>
 | ||
| </td>
 | ||
| <td>
 | ||
| <p>RepositoryBranch is the repository branch where the seed job definitions are</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 the 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 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>
 | ||
| <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.
 | ||
| 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>
 | ||
| </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>
 | ||
| 
 | ||
|       </description>
 | ||
|     </item>
 | ||
|     
 | ||
|     <item>
 | ||
|       <title>Docs: Migration guide from v1alpha1 to v1alpha2</title>
 | ||
|       <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.1.x/migration-guide-v1alpha1-to-v1alpha2/</link>
 | ||
|       <pubDate>Mon, 05 Aug 2019 00:00:00 +0000</pubDate>
 | ||
|       
 | ||
|       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.1.x/migration-guide-v1alpha1-to-v1alpha2/</guid>
 | ||
|       <description>
 | ||
|         
 | ||
|         
 | ||
|         
 | ||
| 
 | ||
| <p>Please note that <strong>CRD manifests are global</strong>, not namespaced, so every <strong>Jenkins operator</strong> 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-the-jenkins-operator-pod">Stop the 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>Verify the desired state, by running this 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
 | ||
| No resources found.</code></pre></div>
 | ||
| <h2 id="stop-the-jenkins-master-pod">Stop the 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>Verify the desired state, by running this 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
 | ||
| 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 below 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.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.5-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.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.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.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.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.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.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.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.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.5-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.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.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.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.5-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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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-a-new-version">Update CRD to a new version</h2>
 | ||
| 
 | ||
| <p>A 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 the 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-a-new-version">Update RBAC to a new version</h2>
 | ||
| 
 | ||
| <p>A new operator version requires updated RBAC permissions:</p>
 | ||
| 
 | ||
| <p>To use the 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>
 | ||
| 
 | ||
|       </description>
 | ||
|     </item>
 | ||
|     
 | ||
|   </channel>
 | ||
| </rss> |