Update docs
This commit is contained in:
		
							parent
							
								
									9b4a04c32f
								
							
						
					
					
						commit
						fb1eb95fd0
					
				|  | @ -235,7 +235,7 @@ spec: | ||||||
|         serviceAccountName: jenkins-operator |         serviceAccountName: jenkins-operator | ||||||
|     strategy: deployment |     strategy: deployment | ||||||
|   installModes: |   installModes: | ||||||
|   - supported: false |   - supported: true | ||||||
|     type: OwnNamespace |     type: OwnNamespace | ||||||
|   - supported: true |   - supported: true | ||||||
|     type: SingleNamespace |     type: SingleNamespace | ||||||
|  |  | ||||||
|  | @ -0,0 +1,83 @@ | ||||||
|  | <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> | ||||||
|  |   <channel> | ||||||
|  |     <title>Jenkins Operator – Developer Guide</title> | ||||||
|  |     <link>https://jenkinsci.github.io/kubernetes-operator/docs/developer-guide/</link> | ||||||
|  |     <description>Recent Hugo news from gohugo.io</description> | ||||||
|  |     <generator>Hugo -- gohugo.io</generator> | ||||||
|  |     <lastBuildDate>Mon, 05 Aug 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/developer-guide/</link> | ||||||
|  |     </image> | ||||||
|  |      | ||||||
|  | 	  <atom:link href="https://jenkinsci.github.io/kubernetes-operator/docs/developer-guide/index.xml" rel="self" type="application/rss+xml" /> | ||||||
|  |      | ||||||
|  |      | ||||||
|  |        | ||||||
|  |          | ||||||
|  |        | ||||||
|  |      | ||||||
|  |      | ||||||
|  |     <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> | ||||||
|  |      | ||||||
|  |   </channel> | ||||||
|  | </rss> | ||||||
|  | @ -1,606 +0,0 @@ | ||||||
| <!doctype html> |  | ||||||
| <html lang="en" class="no-js"> |  | ||||||
|   <head> |  | ||||||
|     <meta charset="utf-8"> |  | ||||||
| <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> |  | ||||||
| <meta name="generator" content="Hugo 0.55.6" /> |  | ||||||
| 
 |  | ||||||
| <META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW"> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <link rel="shortcut icon" href="/favicons/favicon.ico" > |  | ||||||
| <link rel="apple-touch-icon" href="/kubernetes-operator/favicons/apple-touch-icon-180x180.png" sizes="180x180"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/favicon-16x16.png" sizes="16x16"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/favicon-32x32.png" sizes="32x32"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/android-36x36.png" sizes="36x36"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/android-48x48.png" sizes="48x48"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/android-72x72.png" sizes="72x72"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/android-96x196.png" sizes="96x196"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/android-144x144.png" sizes="144x144"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/android-192x192.png"sizes="192x192"> |  | ||||||
| 
 |  | ||||||
| <title>AKS | Jenkins Operator</title><meta property="og:title" content="AKS" /> |  | ||||||
| <meta property="og:description" content="Additional configuration for Azure Kubernetes Service |  | ||||||
| " /> |  | ||||||
| <meta property="og:type" content="article" /> |  | ||||||
| <meta property="og:url" content="https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/future/aks/" /> |  | ||||||
| <meta property="article:published_time" content="2019-08-05T00:00:00+00:00"/> |  | ||||||
| <meta property="article:modified_time" content="2019-08-05T00:00:00+00:00"/><meta property="og:site_name" content="Jenkins Operator" /> |  | ||||||
| 
 |  | ||||||
| <meta itemprop="name" content="AKS"> |  | ||||||
| <meta itemprop="description" content="Additional configuration for Azure Kubernetes Service |  | ||||||
| "> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <meta itemprop="datePublished" content="2019-08-05T00:00:00+00:00" /> |  | ||||||
| <meta itemprop="dateModified" content="2019-08-05T00:00:00+00:00" /> |  | ||||||
| <meta itemprop="wordCount" content="47"> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <meta itemprop="keywords" content="" /> |  | ||||||
| <meta name="twitter:card" content="summary"/> |  | ||||||
| <meta name="twitter:title" content="AKS"/> |  | ||||||
| <meta name="twitter:description" content="Additional configuration for Azure Kubernetes Service |  | ||||||
| "/> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <link rel="preload" href="/kubernetes-operator/scss/main.min.76f9ae686f932b9aa67346ef8543e8a6b0302cb67aa119d21b053c31bc3f2448.css" as="style"> |  | ||||||
| <link href="/kubernetes-operator/scss/main.min.76f9ae686f932b9aa67346ef8543e8a6b0302cb67aa119d21b053c31bc3f2448.css" rel="stylesheet" integrity=""> |  | ||||||
| 
 |  | ||||||
| <script |  | ||||||
|   src="https://code.jquery.com/jquery-3.3.1.min.js" |  | ||||||
|   integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" |  | ||||||
|   crossorigin="anonymous"></script> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|     <title>AKS | Jenkins Operator</title> |  | ||||||
|   </head> |  | ||||||
|   <body class="td-page"> |  | ||||||
|     <header> |  | ||||||
|        |  | ||||||
| <nav class="js-navbar-scroll navbar navbar-expand navbar-dark flex-column flex-md-row td-navbar"> |  | ||||||
| 	<a class="navbar-brand" href="/kubernetes-operator/"> |  | ||||||
| 		<img style="width: 32px; height: 32px; margin-right: 7.5px;" src="/kubernetes-operator/img/logo.svg"></img><span class="text-uppercase font-weight-bold">Jenkins Operator</span> |  | ||||||
| 	</a> |  | ||||||
| 	<div class="td-navbar-nav-scroll ml-md-auto" id="main_navbar"> |  | ||||||
| 		<ul class="navbar-nav mt-2 mt-lg-0"> |  | ||||||
| 			<li class="nav-item mr-4 mb-2 mb-lg-0"> |  | ||||||
| 				<a class="nav-link" href="/kubernetes-operator/about"><span>What's the Jenkins Operator?</span></a> |  | ||||||
|             </li> |  | ||||||
|             <li class="nav-item mr-4 mb-2 mb-lg-0"> |  | ||||||
|                 <a class="nav-link" href="/kubernetes-operator/docs"><span>Documentation</span></a> |  | ||||||
|             </li> |  | ||||||
| 			 |  | ||||||
| 		</ul> |  | ||||||
| 	</div> |  | ||||||
| 	<div class="navbar-nav d-none d-lg-block"> |  | ||||||
|  <input type="search" class="form-control td-search-input" placeholder=" Search this site…" aria-label="Search this site…" autocomplete="off"> |  | ||||||
| </div> |  | ||||||
| </nav> |  | ||||||
| 
 |  | ||||||
|     </header> |  | ||||||
|     <div class="container-fluid td-outer"> |  | ||||||
|       <div class="td-main"> |  | ||||||
|         <div class="row flex-xl-nowrap"> |  | ||||||
|           <div class="col-12 col-md-3 col-xl-2 td-sidebar d-print-none"> |  | ||||||
|              |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <div id="td-sidebar-menu" class="td-sidebar__inner"> |  | ||||||
|    |  | ||||||
|   <form class="td-sidebar__search d-flex align-items-center"> |  | ||||||
|      |  | ||||||
|  <input type="search" class="form-control td-search-input" placeholder=" Search this site…" aria-label="Search this site…" autocomplete="off"> |  | ||||||
| 
 |  | ||||||
|     <button class="btn btn-link td-sidebar__toggle d-md-none p-0 ml-3 fas fa-bars" type="button" data-toggle="collapse" data-target="#td-section-nav" aria-controls="td-docs-nav" aria-expanded="false" aria-label="Toggle section navigation"> |  | ||||||
|     </button> |  | ||||||
|   </form> |  | ||||||
|    |  | ||||||
|   <nav class="collapse td-sidebar-nav pt-2 pl-4" id="td-section-nav"> |  | ||||||
|      |  | ||||||
|      |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/" class="align-left pl-0 pr-2 td-sidebar-link td-sidebar-link__section">Documentation</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse show" id="kubernetes-operator-docs"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/installation/" class="align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section">Installation</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse " id="kubernetes-operator-docs-installation"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/how-it-works/" class="align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section">How it works</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse " id="kubernetes-operator-docs-how-it-works"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-how-it-works-architecture-and-design" href="/kubernetes-operator/docs/how-it-works/architecture-and-design/">Architecture and design</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-how-it-works-jenkins-docker-images" href="/kubernetes-operator/docs/how-it-works/jenkins-docker-images/">Jenkins Docker Images</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/getting-started/" class="align-left pl-0 pr-2 td-sidebar-link td-sidebar-link__section">Getting Started</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse show" id="kubernetes-operator-docs-getting-started"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/getting-started/future/" class="align-left pl-0 pr-2 active td-sidebar-link td-sidebar-link__section">Future (v0.3.x)</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse show" id="kubernetes-operator-docs-getting-started-future"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-deploy-jenkins" href="/kubernetes-operator/docs/getting-started/future/deploy-jenkins/">Deploy Jenkins</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-configuration" href="/kubernetes-operator/docs/getting-started/future/configuration/">Configuration</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-customization" href="/kubernetes-operator/docs/getting-started/future/customization/">Customization</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page  active" id="m-kubernetes-operator-docs-getting-started-future-aks" href="/kubernetes-operator/docs/getting-started/future/aks/">AKS</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-configure-backup-and-restore" href="/kubernetes-operator/docs/getting-started/future/configure-backup-and-restore/">Configure backup and restore</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-custom-backup-and-restore" href="/kubernetes-operator/docs/getting-started/future/custom-backup-and-restore/">Custom Backup and Restore Providers</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-diagnostics" href="/kubernetes-operator/docs/getting-started/future/diagnostics/">Diagnostics</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-schema" href="/kubernetes-operator/docs/getting-started/future/schema/">Schema</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-developer-guide" href="/kubernetes-operator/docs/getting-started/future/developer-guide/">Developer Guide</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/getting-started/latest/" class="align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section">Latest (v0.2.x)</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse " id="kubernetes-operator-docs-getting-started-latest"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-deploy-jenkins" href="/kubernetes-operator/docs/getting-started/latest/deploy-jenkins/">Deploy Jenkins</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-configuration" href="/kubernetes-operator/docs/getting-started/latest/configuration/">Configuration</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-customization" href="/kubernetes-operator/docs/getting-started/latest/customization/">Customization</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-aks" href="/kubernetes-operator/docs/getting-started/latest/aks/">AKS</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-configure-backup-and-restore" href="/kubernetes-operator/docs/getting-started/latest/configure-backup-and-restore/">Configure backup and restore</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-custom-backup-and-restore" href="/kubernetes-operator/docs/getting-started/latest/custom-backup-and-restore/">Custom Backup and Restore Providers</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-migration" href="/kubernetes-operator/docs/getting-started/latest/migration/">Migration from v0.1.x</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-diagnostics" href="/kubernetes-operator/docs/getting-started/latest/diagnostics/">Diagnostics</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-schema" href="/kubernetes-operator/docs/getting-started/latest/schema/">Schema</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-developer-guide" href="/kubernetes-operator/docs/getting-started/latest/developer-guide/">Developer Guide</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/getting-started/v0.1.x/" class="align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section">v0.1.x</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse " id="kubernetes-operator-docs-getting-started-v0-1-x"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-deploy-jenkins" href="/kubernetes-operator/docs/getting-started/v0.1.x/deploy-jenkins/">Deploy Jenkins</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-configuration" href="/kubernetes-operator/docs/getting-started/v0.1.x/configuration/">Configuration</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-customization" href="/kubernetes-operator/docs/getting-started/v0.1.x/customization/">Customization</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-aks" href="/kubernetes-operator/docs/getting-started/v0.1.x/aks/">AKS</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-configure-backup-and-restore" href="/kubernetes-operator/docs/getting-started/v0.1.x/configure-backup-and-restore/">Configure backup and restore</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-diagnostics" href="/kubernetes-operator/docs/getting-started/v0.1.x/diagnostics/">Diagnostics</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-scheme" href="/kubernetes-operator/docs/getting-started/v0.1.x/scheme/">Scheme</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-migration-guide-v1alpha1-to-v1alpha2" href="/kubernetes-operator/docs/getting-started/v0.1.x/migration-guide-v1alpha1-to-v1alpha2/">Migration guide from v1alpha1 to v1alpha2</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-developer-guide" href="/kubernetes-operator/docs/getting-started/v0.1.x/developer-guide/">Developer Guide</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/security/" class="align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section">Security</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse " id="kubernetes-operator-docs-security"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|   </nav> |  | ||||||
| </div> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|           </div> |  | ||||||
|           <div class="d-none d-xl-block col-xl-2 td-toc d-print-none"> |  | ||||||
|              |  | ||||||
|      |  | ||||||
|      |  | ||||||
|      |  | ||||||
|       <div class="td-page-meta ml-2 pb-1 pt-2 mb-0"> |  | ||||||
|            |  | ||||||
|            |  | ||||||
|            |  | ||||||
|         <a href="https://github.com/jenkinsci/kubernetes-operator/edit/master/website/content/en/docs/Getting%20Started/future/aks.md" target="_blank"><i class="fa fa-edit fa-fw"></i> Edit this page</a> |  | ||||||
|         <a href="https://github.com/jenkinsci/kubernetes-operator/issues/new?title=AKS" target="_blank"><i class="fab fa-github fa-fw"></i> Create documentation issue</a> |  | ||||||
|            |  | ||||||
|                |  | ||||||
|               <a href="https://github.com/jenkinsci/kubernetes-operator/issues/new" target="_blank"><i class="fas fa-tasks fa-fw"></i> Create project issue</a> |  | ||||||
|            |  | ||||||
|       </div> |  | ||||||
|      |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|           </div> |  | ||||||
|           <main class="col-12 col-md-9 col-xl-8 pl-md-5" role="main"> |  | ||||||
|             <nav aria-label="breadcrumb" class="d-none d-md-block d-print-none"> |  | ||||||
| 	<ol class="breadcrumb spb-1"> |  | ||||||
| 		 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <li class="breadcrumb-item" > |  | ||||||
| 	<a href="https://jenkinsci.github.io/kubernetes-operator/docs/">Documentation</a> |  | ||||||
| </li> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <li class="breadcrumb-item" > |  | ||||||
| 	<a href="https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/">Getting Started</a> |  | ||||||
| </li> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <li class="breadcrumb-item" > |  | ||||||
| 	<a href="https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/future/">Future (v0.3.x)</a> |  | ||||||
| </li> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <li class="breadcrumb-item active" aria-current="page"> |  | ||||||
| 	<a href="https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/future/aks/">AKS</a> |  | ||||||
| </li> |  | ||||||
| 
 |  | ||||||
| 	</ol> |  | ||||||
| </nav	> |  | ||||||
| 
 |  | ||||||
|              |  | ||||||
| <div class="td-content"> |  | ||||||
| 	<h1>AKS</h1> |  | ||||||
| 	<div class="lead">Additional configuration for Azure Kubernetes Service</div> |  | ||||||
| 	<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> |  | ||||||
| 
 |  | ||||||
| 	 |  | ||||||
| 	 |  | ||||||
| 	<div class="text-muted mt-5 pt-3 border-top">Last modified August 5, 2019 |  | ||||||
| </div> |  | ||||||
| </div> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|           </main> |  | ||||||
|         </div> |  | ||||||
|       </div> |  | ||||||
|        |  | ||||||
| <footer class="bg-dark py-5 row d-print-none"> |  | ||||||
|   <div class="container-fluid mx-sm-5"> |  | ||||||
|     <div class="row"> |  | ||||||
|       <div class="col-6 col-sm-4 text-xs-center order-sm-2"> |  | ||||||
|          |  | ||||||
|       </div> |  | ||||||
|       <div class="col-6 col-sm-4 text-right text-xs-center order-sm-3"> |  | ||||||
|          |  | ||||||
|       </div> |  | ||||||
|       <div class="col-12 col-sm-4 text-center py-2 order-sm-2"> |  | ||||||
|         <small class="text-white">© 2019 VirtusLab All Rights Reserved</small> |  | ||||||
|          |  | ||||||
| 	 |  | ||||||
| 		<p class="mt-2"><a href="/kubernetes-operator/about/">What's the Jenkins Operator?</a></p> |  | ||||||
| 	 |  | ||||||
|       </div> |  | ||||||
|     </div> |  | ||||||
|   </div> |  | ||||||
| </footer> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|     </div> |  | ||||||
|      |  | ||||||
| <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script> |  | ||||||
| <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <script src="/kubernetes-operator/js/main.min.15ba3b50c3bd013e1b26793d1a59390ea2e0f21481eafe4022de05a44eba88fc.js" integrity="sha256-Fbo7UMO9AT4bJnk9Glk5DqLg8hSB6v5AIt4FpE66iPw="></script> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|   </body> |  | ||||||
| </html> |  | ||||||
|  | @ -1,911 +0,0 @@ | ||||||
| <!doctype html> |  | ||||||
| <html lang="en" class="no-js"> |  | ||||||
|   <head> |  | ||||||
|     <meta charset="utf-8"> |  | ||||||
| <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> |  | ||||||
| <meta name="generator" content="Hugo 0.55.6" /> |  | ||||||
| 
 |  | ||||||
| <META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW"> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <link rel="shortcut icon" href="/favicons/favicon.ico" > |  | ||||||
| <link rel="apple-touch-icon" href="/kubernetes-operator/favicons/apple-touch-icon-180x180.png" sizes="180x180"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/favicon-16x16.png" sizes="16x16"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/favicon-32x32.png" sizes="32x32"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/android-36x36.png" sizes="36x36"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/android-48x48.png" sizes="48x48"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/android-72x72.png" sizes="72x72"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/android-96x196.png" sizes="96x196"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/android-144x144.png" sizes="144x144"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/android-192x192.png"sizes="192x192"> |  | ||||||
| 
 |  | ||||||
| <title>Configuration | Jenkins Operator</title><meta property="og:title" content="Configuration" /> |  | ||||||
| <meta property="og:description" content="How to configure Jenkins with Operator |  | ||||||
| " /> |  | ||||||
| <meta property="og:type" content="article" /> |  | ||||||
| <meta property="og:url" content="https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/future/configuration/" /> |  | ||||||
| <meta property="article:published_time" content="2019-08-05T00:00:00+00:00"/> |  | ||||||
| <meta property="article:modified_time" content="2019-08-05T00:00:00+00:00"/><meta property="og:site_name" content="Jenkins Operator" /> |  | ||||||
| 
 |  | ||||||
| <meta itemprop="name" content="Configuration"> |  | ||||||
| <meta itemprop="description" content="How to configure Jenkins with Operator |  | ||||||
| "> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <meta itemprop="datePublished" content="2019-08-05T00:00:00+00:00" /> |  | ||||||
| <meta itemprop="dateModified" content="2019-08-05T00:00:00+00:00" /> |  | ||||||
| <meta itemprop="wordCount" content="726"> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <meta itemprop="keywords" content="" /> |  | ||||||
| <meta name="twitter:card" content="summary"/> |  | ||||||
| <meta name="twitter:title" content="Configuration"/> |  | ||||||
| <meta name="twitter:description" content="How to configure Jenkins with Operator |  | ||||||
| "/> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <link rel="preload" href="/kubernetes-operator/scss/main.min.76f9ae686f932b9aa67346ef8543e8a6b0302cb67aa119d21b053c31bc3f2448.css" as="style"> |  | ||||||
| <link href="/kubernetes-operator/scss/main.min.76f9ae686f932b9aa67346ef8543e8a6b0302cb67aa119d21b053c31bc3f2448.css" rel="stylesheet" integrity=""> |  | ||||||
| 
 |  | ||||||
| <script |  | ||||||
|   src="https://code.jquery.com/jquery-3.3.1.min.js" |  | ||||||
|   integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" |  | ||||||
|   crossorigin="anonymous"></script> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|     <title>Configuration | Jenkins Operator</title> |  | ||||||
|   </head> |  | ||||||
|   <body class="td-page"> |  | ||||||
|     <header> |  | ||||||
|        |  | ||||||
| <nav class="js-navbar-scroll navbar navbar-expand navbar-dark flex-column flex-md-row td-navbar"> |  | ||||||
| 	<a class="navbar-brand" href="/kubernetes-operator/"> |  | ||||||
| 		<img style="width: 32px; height: 32px; margin-right: 7.5px;" src="/kubernetes-operator/img/logo.svg"></img><span class="text-uppercase font-weight-bold">Jenkins Operator</span> |  | ||||||
| 	</a> |  | ||||||
| 	<div class="td-navbar-nav-scroll ml-md-auto" id="main_navbar"> |  | ||||||
| 		<ul class="navbar-nav mt-2 mt-lg-0"> |  | ||||||
| 			<li class="nav-item mr-4 mb-2 mb-lg-0"> |  | ||||||
| 				<a class="nav-link" href="/kubernetes-operator/about"><span>What's the Jenkins Operator?</span></a> |  | ||||||
|             </li> |  | ||||||
|             <li class="nav-item mr-4 mb-2 mb-lg-0"> |  | ||||||
|                 <a class="nav-link" href="/kubernetes-operator/docs"><span>Documentation</span></a> |  | ||||||
|             </li> |  | ||||||
| 			 |  | ||||||
| 		</ul> |  | ||||||
| 	</div> |  | ||||||
| 	<div class="navbar-nav d-none d-lg-block"> |  | ||||||
|  <input type="search" class="form-control td-search-input" placeholder=" Search this site…" aria-label="Search this site…" autocomplete="off"> |  | ||||||
| </div> |  | ||||||
| </nav> |  | ||||||
| 
 |  | ||||||
|     </header> |  | ||||||
|     <div class="container-fluid td-outer"> |  | ||||||
|       <div class="td-main"> |  | ||||||
|         <div class="row flex-xl-nowrap"> |  | ||||||
|           <div class="col-12 col-md-3 col-xl-2 td-sidebar d-print-none"> |  | ||||||
|              |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <div id="td-sidebar-menu" class="td-sidebar__inner"> |  | ||||||
|    |  | ||||||
|   <form class="td-sidebar__search d-flex align-items-center"> |  | ||||||
|      |  | ||||||
|  <input type="search" class="form-control td-search-input" placeholder=" Search this site…" aria-label="Search this site…" autocomplete="off"> |  | ||||||
| 
 |  | ||||||
|     <button class="btn btn-link td-sidebar__toggle d-md-none p-0 ml-3 fas fa-bars" type="button" data-toggle="collapse" data-target="#td-section-nav" aria-controls="td-docs-nav" aria-expanded="false" aria-label="Toggle section navigation"> |  | ||||||
|     </button> |  | ||||||
|   </form> |  | ||||||
|    |  | ||||||
|   <nav class="collapse td-sidebar-nav pt-2 pl-4" id="td-section-nav"> |  | ||||||
|      |  | ||||||
|      |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/" class="align-left pl-0 pr-2 td-sidebar-link td-sidebar-link__section">Documentation</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse show" id="kubernetes-operator-docs"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/installation/" class="align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section">Installation</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse " id="kubernetes-operator-docs-installation"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/how-it-works/" class="align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section">How it works</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse " id="kubernetes-operator-docs-how-it-works"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-how-it-works-architecture-and-design" href="/kubernetes-operator/docs/how-it-works/architecture-and-design/">Architecture and design</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-how-it-works-jenkins-docker-images" href="/kubernetes-operator/docs/how-it-works/jenkins-docker-images/">Jenkins Docker Images</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/getting-started/" class="align-left pl-0 pr-2 td-sidebar-link td-sidebar-link__section">Getting Started</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse show" id="kubernetes-operator-docs-getting-started"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/getting-started/future/" class="align-left pl-0 pr-2 active td-sidebar-link td-sidebar-link__section">Future (v0.3.x)</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse show" id="kubernetes-operator-docs-getting-started-future"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-deploy-jenkins" href="/kubernetes-operator/docs/getting-started/future/deploy-jenkins/">Deploy Jenkins</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page  active" id="m-kubernetes-operator-docs-getting-started-future-configuration" href="/kubernetes-operator/docs/getting-started/future/configuration/">Configuration</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-customization" href="/kubernetes-operator/docs/getting-started/future/customization/">Customization</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-aks" href="/kubernetes-operator/docs/getting-started/future/aks/">AKS</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-configure-backup-and-restore" href="/kubernetes-operator/docs/getting-started/future/configure-backup-and-restore/">Configure backup and restore</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-custom-backup-and-restore" href="/kubernetes-operator/docs/getting-started/future/custom-backup-and-restore/">Custom Backup and Restore Providers</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-diagnostics" href="/kubernetes-operator/docs/getting-started/future/diagnostics/">Diagnostics</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-schema" href="/kubernetes-operator/docs/getting-started/future/schema/">Schema</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-developer-guide" href="/kubernetes-operator/docs/getting-started/future/developer-guide/">Developer Guide</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/getting-started/latest/" class="align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section">Latest (v0.2.x)</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse " id="kubernetes-operator-docs-getting-started-latest"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-deploy-jenkins" href="/kubernetes-operator/docs/getting-started/latest/deploy-jenkins/">Deploy Jenkins</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-configuration" href="/kubernetes-operator/docs/getting-started/latest/configuration/">Configuration</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-customization" href="/kubernetes-operator/docs/getting-started/latest/customization/">Customization</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-aks" href="/kubernetes-operator/docs/getting-started/latest/aks/">AKS</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-configure-backup-and-restore" href="/kubernetes-operator/docs/getting-started/latest/configure-backup-and-restore/">Configure backup and restore</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-custom-backup-and-restore" href="/kubernetes-operator/docs/getting-started/latest/custom-backup-and-restore/">Custom Backup and Restore Providers</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-migration" href="/kubernetes-operator/docs/getting-started/latest/migration/">Migration from v0.1.x</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-diagnostics" href="/kubernetes-operator/docs/getting-started/latest/diagnostics/">Diagnostics</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-schema" href="/kubernetes-operator/docs/getting-started/latest/schema/">Schema</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-developer-guide" href="/kubernetes-operator/docs/getting-started/latest/developer-guide/">Developer Guide</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/getting-started/v0.1.x/" class="align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section">v0.1.x</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse " id="kubernetes-operator-docs-getting-started-v0-1-x"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-deploy-jenkins" href="/kubernetes-operator/docs/getting-started/v0.1.x/deploy-jenkins/">Deploy Jenkins</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-configuration" href="/kubernetes-operator/docs/getting-started/v0.1.x/configuration/">Configuration</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-customization" href="/kubernetes-operator/docs/getting-started/v0.1.x/customization/">Customization</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-aks" href="/kubernetes-operator/docs/getting-started/v0.1.x/aks/">AKS</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-configure-backup-and-restore" href="/kubernetes-operator/docs/getting-started/v0.1.x/configure-backup-and-restore/">Configure backup and restore</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-diagnostics" href="/kubernetes-operator/docs/getting-started/v0.1.x/diagnostics/">Diagnostics</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-scheme" href="/kubernetes-operator/docs/getting-started/v0.1.x/scheme/">Scheme</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-migration-guide-v1alpha1-to-v1alpha2" href="/kubernetes-operator/docs/getting-started/v0.1.x/migration-guide-v1alpha1-to-v1alpha2/">Migration guide from v1alpha1 to v1alpha2</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-developer-guide" href="/kubernetes-operator/docs/getting-started/v0.1.x/developer-guide/">Developer Guide</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/security/" class="align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section">Security</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse " id="kubernetes-operator-docs-security"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|   </nav> |  | ||||||
| </div> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|           </div> |  | ||||||
|           <div class="d-none d-xl-block col-xl-2 td-toc d-print-none"> |  | ||||||
|              |  | ||||||
|      |  | ||||||
|      |  | ||||||
|      |  | ||||||
|       <div class="td-page-meta ml-2 pb-1 pt-2 mb-0"> |  | ||||||
|            |  | ||||||
|            |  | ||||||
|            |  | ||||||
|         <a href="https://github.com/jenkinsci/kubernetes-operator/edit/master/website/content/en/docs/Getting%20Started/future/configuration.md" target="_blank"><i class="fa fa-edit fa-fw"></i> Edit this page</a> |  | ||||||
|         <a href="https://github.com/jenkinsci/kubernetes-operator/issues/new?title=Configuration" target="_blank"><i class="fab fa-github fa-fw"></i> Create documentation issue</a> |  | ||||||
|            |  | ||||||
|                |  | ||||||
|               <a href="https://github.com/jenkinsci/kubernetes-operator/issues/new" target="_blank"><i class="fas fa-tasks fa-fw"></i> Create project issue</a> |  | ||||||
|            |  | ||||||
|       </div> |  | ||||||
|      |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <nav id="TableOfContents"> |  | ||||||
| <ul> |  | ||||||
| <li> |  | ||||||
| <ul> |  | ||||||
| <li><a href="#configure-seed-jobs-and-pipelines">Configure Seed Jobs and Pipelines</a></li> |  | ||||||
| <li><a href="#prepare-job-definitions-and-pipelines">Prepare job definitions and pipelines</a></li> |  | ||||||
| <li><a href="#configure-seed-jobs">Configure Seed Jobs</a> |  | ||||||
| <ul> |  | ||||||
| <li><a href="#ssh-authentication">SSH authentication</a> |  | ||||||
| <ul> |  | ||||||
| <li><a href="#generate-ssh-keys">Generate SSH Keys</a></li> |  | ||||||
| <li><a href="#public-key">Public key</a></li> |  | ||||||
| <li><a href="#configure-ssh-authentication">Configure SSH authentication</a></li> |  | ||||||
| </ul></li> |  | ||||||
| <li><a href="#username-password-authentication">Username & password authentication</a></li> |  | ||||||
| </ul></li> |  | ||||||
| <li><a href="#http-proxy-for-downloading-plugins">HTTP Proxy for downloading plugins</a></li> |  | ||||||
| <li><a href="#pulling-docker-images-from-private-repositories">Pulling Docker images from private repositories</a> |  | ||||||
| <ul> |  | ||||||
| <li><a href="#docker-hub-configuration">Docker Hub Configuration</a></li> |  | ||||||
| </ul></li> |  | ||||||
| </ul></li> |  | ||||||
| </ul> |  | ||||||
| </nav> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|           </div> |  | ||||||
|           <main class="col-12 col-md-9 col-xl-8 pl-md-5" role="main"> |  | ||||||
|             <nav aria-label="breadcrumb" class="d-none d-md-block d-print-none"> |  | ||||||
| 	<ol class="breadcrumb spb-1"> |  | ||||||
| 		 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <li class="breadcrumb-item" > |  | ||||||
| 	<a href="https://jenkinsci.github.io/kubernetes-operator/docs/">Documentation</a> |  | ||||||
| </li> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <li class="breadcrumb-item" > |  | ||||||
| 	<a href="https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/">Getting Started</a> |  | ||||||
| </li> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <li class="breadcrumb-item" > |  | ||||||
| 	<a href="https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/future/">Future (v0.3.x)</a> |  | ||||||
| </li> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <li class="breadcrumb-item active" aria-current="page"> |  | ||||||
| 	<a href="https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/future/configuration/">Configuration</a> |  | ||||||
| </li> |  | ||||||
| 
 |  | ||||||
| 	</ol> |  | ||||||
| </nav	> |  | ||||||
| 
 |  | ||||||
|              |  | ||||||
| <div class="td-content"> |  | ||||||
| 	<h1>Configuration</h1> |  | ||||||
| 	<div class="lead">How to configure Jenkins with Operator</div> |  | ||||||
| 	 |  | ||||||
| 
 |  | ||||||
| <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 = "build-jenkins-operator-${UUID.randomUUID().toString()}" |  | ||||||
| def home = "/home/jenkins" |  | ||||||
| def workspace = "${home}/workspace/build-jenkins-operator" |  | ||||||
| def workdir = "${workspace}/src/github.com/jenkinsci/kubernetes-operator/" |  | ||||||
| 
 |  | ||||||
| podTemplate(label: label, |  | ||||||
|         containers: [ |  | ||||||
|                 containerTemplate(name: 'jnlp', image: 'jenkins/jnlp-slave:alpine'), |  | ||||||
|                 containerTemplate(name: 'go', image: 'golang:1-alpine', command: 'cat', ttyEnabled: true), |  | ||||||
|         ], |  | ||||||
|         envVars: [ |  | ||||||
|                 envVar(key: 'GOPATH', value: workspace), |  | ||||||
|         ], |  | ||||||
|         ) { |  | ||||||
| 
 |  | ||||||
|     node(label) { |  | ||||||
|         dir(workdir) { |  | ||||||
|             stage('Init') { |  | ||||||
|                 timeout(time: 3, unit: 'MINUTES') { |  | ||||||
|                     checkout scm |  | ||||||
|                 } |  | ||||||
|                 container('go') { |  | ||||||
|                     sh 'apk --no-cache --update add make git gcc libc-dev' |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
| 
 |  | ||||||
|             stage('Dep') { |  | ||||||
|                 container('go') { |  | ||||||
|                     sh 'make dep' |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
| 
 |  | ||||||
|             stage('Test') { |  | ||||||
|                 container('go') { |  | ||||||
|                     sh 'make test' |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
| 
 |  | ||||||
|             stage('Build') { |  | ||||||
|                 container('go') { |  | ||||||
|                     sh 'make build' |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| </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: "cicd/jobs/*.jenkins" |  | ||||||
|     description: "Jenkins Operator repository" |  | ||||||
|     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="/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="/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 <filename> <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 <filename> -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 <filename> -pubout > <filename>.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: "cicd/jobs/*.jenkins" |  | ||||||
|     description: "Jenkins Operator repository" |  | ||||||
|     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 & 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: "cicd/jobs/*.jenkins" |  | ||||||
|     description: "Jenkins Operator repository" |  | ||||||
|     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><proxy_url></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 <namespace> edit secret <name></code></pre></div> |  | ||||||
| <p>The <code>.dockerconfigjson</code> key’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>{ |  | ||||||
|     "auths":{ |  | ||||||
|         "https://index.docker.io/v1/":{ |  | ||||||
|             "username":"user", |  | ||||||
|             "password":"password", |  | ||||||
|             "email":"yourdockeremail@gmail.com", |  | ||||||
|             "auth":"base64 of string user:password" |  | ||||||
|         }, |  | ||||||
|         "auth.docker.io":{ |  | ||||||
|             "username":"user", |  | ||||||
|             "password":"password", |  | ||||||
|             "email":"yourdockeremail@gmail.com", |  | ||||||
|             "auth":"base64 of string user:password" |  | ||||||
|         }, |  | ||||||
|         "registry.docker.io":{ |  | ||||||
|             "username":"user", |  | ||||||
|             "password":"password", |  | ||||||
|             "email":"yourdockeremail@gmail.com", |  | ||||||
|             "auth":"base64 of string user:password" |  | ||||||
|         }, |  | ||||||
|         "docker.io":{ |  | ||||||
|             "username":"user", |  | ||||||
|             "password":"password", |  | ||||||
|             "email":"yourdockeremail@gmail.com", |  | ||||||
|             "auth":"base64 of string user:password" |  | ||||||
|         }, |  | ||||||
|         "https://registry-1.docker.io/v2/": { |  | ||||||
|             "username":"user", |  | ||||||
|             "password":"password", |  | ||||||
|             "email":"yourdockeremail@gmail.com", |  | ||||||
|             "auth":"base64 of string user:password" |  | ||||||
|         }, |  | ||||||
|         "registry-1.docker.io/v2/": { |  | ||||||
|             "username":"user", |  | ||||||
|             "password":"password", |  | ||||||
|             "email":"yourdockeremail@gmail.com", |  | ||||||
|             "auth":"base64 of string user:password" |  | ||||||
|         }, |  | ||||||
|         "registry-1.docker.io": { |  | ||||||
|             "username":"user", |  | ||||||
|             "password":"password", |  | ||||||
|             "email":"yourdockeremail@gmail.com", |  | ||||||
|             "auth":"base64 of string user:password" |  | ||||||
|         }, |  | ||||||
|         "https://registry-1.docker.io": { |  | ||||||
|             "username":"user", |  | ||||||
|             "password":"password", |  | ||||||
|             "email":"yourdockeremail@gmail.com", |  | ||||||
|             "auth":"base64 of string user:password" |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| </code></pre> |  | ||||||
| 
 |  | ||||||
| 	 |  | ||||||
| 	 |  | ||||||
| 	<div class="text-muted mt-5 pt-3 border-top">Last modified August 5, 2019 |  | ||||||
| </div> |  | ||||||
| </div> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|           </main> |  | ||||||
|         </div> |  | ||||||
|       </div> |  | ||||||
|        |  | ||||||
| <footer class="bg-dark py-5 row d-print-none"> |  | ||||||
|   <div class="container-fluid mx-sm-5"> |  | ||||||
|     <div class="row"> |  | ||||||
|       <div class="col-6 col-sm-4 text-xs-center order-sm-2"> |  | ||||||
|          |  | ||||||
|       </div> |  | ||||||
|       <div class="col-6 col-sm-4 text-right text-xs-center order-sm-3"> |  | ||||||
|          |  | ||||||
|       </div> |  | ||||||
|       <div class="col-12 col-sm-4 text-center py-2 order-sm-2"> |  | ||||||
|         <small class="text-white">© 2019 VirtusLab All Rights Reserved</small> |  | ||||||
|          |  | ||||||
| 	 |  | ||||||
| 		<p class="mt-2"><a href="/kubernetes-operator/about/">What's the Jenkins Operator?</a></p> |  | ||||||
| 	 |  | ||||||
|       </div> |  | ||||||
|     </div> |  | ||||||
|   </div> |  | ||||||
| </footer> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|     </div> |  | ||||||
|      |  | ||||||
| <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script> |  | ||||||
| <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <script src="/kubernetes-operator/js/main.min.15ba3b50c3bd013e1b26793d1a59390ea2e0f21481eafe4022de05a44eba88fc.js" integrity="sha256-Fbo7UMO9AT4bJnk9Glk5DqLg8hSB6v5AIt4FpE66iPw="></script> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|   </body> |  | ||||||
| </html> |  | ||||||
|  | @ -1,682 +0,0 @@ | ||||||
| <!doctype html> |  | ||||||
| <html lang="en" class="no-js"> |  | ||||||
|   <head> |  | ||||||
|     <meta charset="utf-8"> |  | ||||||
| <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> |  | ||||||
| <meta name="generator" content="Hugo 0.55.6" /> |  | ||||||
| 
 |  | ||||||
| <META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW"> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <link rel="shortcut icon" href="/favicons/favicon.ico" > |  | ||||||
| <link rel="apple-touch-icon" href="/kubernetes-operator/favicons/apple-touch-icon-180x180.png" sizes="180x180"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/favicon-16x16.png" sizes="16x16"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/favicon-32x32.png" sizes="32x32"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/android-36x36.png" sizes="36x36"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/android-48x48.png" sizes="48x48"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/android-72x72.png" sizes="72x72"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/android-96x196.png" sizes="96x196"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/android-144x144.png" sizes="144x144"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/android-192x192.png"sizes="192x192"> |  | ||||||
| 
 |  | ||||||
| <title>Configure backup and restore | Jenkins Operator</title><meta property="og:title" content="Configure backup and restore" /> |  | ||||||
| <meta property="og:description" content="Prevent loss of job history |  | ||||||
| " /> |  | ||||||
| <meta property="og:type" content="article" /> |  | ||||||
| <meta property="og:url" content="https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/future/configure-backup-and-restore/" /> |  | ||||||
| <meta property="article:published_time" content="2019-08-05T00:00:00+00:00"/> |  | ||||||
| <meta property="article:modified_time" content="2019-08-05T00:00:00+00:00"/><meta property="og:site_name" content="Jenkins Operator" /> |  | ||||||
| 
 |  | ||||||
| <meta itemprop="name" content="Configure backup and restore"> |  | ||||||
| <meta itemprop="description" content="Prevent loss of job history |  | ||||||
| "> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <meta itemprop="datePublished" content="2019-08-05T00:00:00+00:00" /> |  | ||||||
| <meta itemprop="dateModified" content="2019-08-05T00:00:00+00:00" /> |  | ||||||
| <meta itemprop="wordCount" content="156"> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <meta itemprop="keywords" content="" /> |  | ||||||
| <meta name="twitter:card" content="summary"/> |  | ||||||
| <meta name="twitter:title" content="Configure backup and restore"/> |  | ||||||
| <meta name="twitter:description" content="Prevent loss of job history |  | ||||||
| "/> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <link rel="preload" href="/kubernetes-operator/scss/main.min.76f9ae686f932b9aa67346ef8543e8a6b0302cb67aa119d21b053c31bc3f2448.css" as="style"> |  | ||||||
| <link href="/kubernetes-operator/scss/main.min.76f9ae686f932b9aa67346ef8543e8a6b0302cb67aa119d21b053c31bc3f2448.css" rel="stylesheet" integrity=""> |  | ||||||
| 
 |  | ||||||
| <script |  | ||||||
|   src="https://code.jquery.com/jquery-3.3.1.min.js" |  | ||||||
|   integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" |  | ||||||
|   crossorigin="anonymous"></script> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|     <title>Configure backup and restore | Jenkins Operator</title> |  | ||||||
|   </head> |  | ||||||
|   <body class="td-page"> |  | ||||||
|     <header> |  | ||||||
|        |  | ||||||
| <nav class="js-navbar-scroll navbar navbar-expand navbar-dark flex-column flex-md-row td-navbar"> |  | ||||||
| 	<a class="navbar-brand" href="/kubernetes-operator/"> |  | ||||||
| 		<img style="width: 32px; height: 32px; margin-right: 7.5px;" src="/kubernetes-operator/img/logo.svg"></img><span class="text-uppercase font-weight-bold">Jenkins Operator</span> |  | ||||||
| 	</a> |  | ||||||
| 	<div class="td-navbar-nav-scroll ml-md-auto" id="main_navbar"> |  | ||||||
| 		<ul class="navbar-nav mt-2 mt-lg-0"> |  | ||||||
| 			<li class="nav-item mr-4 mb-2 mb-lg-0"> |  | ||||||
| 				<a class="nav-link" href="/kubernetes-operator/about"><span>What's the Jenkins Operator?</span></a> |  | ||||||
|             </li> |  | ||||||
|             <li class="nav-item mr-4 mb-2 mb-lg-0"> |  | ||||||
|                 <a class="nav-link" href="/kubernetes-operator/docs"><span>Documentation</span></a> |  | ||||||
|             </li> |  | ||||||
| 			 |  | ||||||
| 		</ul> |  | ||||||
| 	</div> |  | ||||||
| 	<div class="navbar-nav d-none d-lg-block"> |  | ||||||
|  <input type="search" class="form-control td-search-input" placeholder=" Search this site…" aria-label="Search this site…" autocomplete="off"> |  | ||||||
| </div> |  | ||||||
| </nav> |  | ||||||
| 
 |  | ||||||
|     </header> |  | ||||||
|     <div class="container-fluid td-outer"> |  | ||||||
|       <div class="td-main"> |  | ||||||
|         <div class="row flex-xl-nowrap"> |  | ||||||
|           <div class="col-12 col-md-3 col-xl-2 td-sidebar d-print-none"> |  | ||||||
|              |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <div id="td-sidebar-menu" class="td-sidebar__inner"> |  | ||||||
|    |  | ||||||
|   <form class="td-sidebar__search d-flex align-items-center"> |  | ||||||
|      |  | ||||||
|  <input type="search" class="form-control td-search-input" placeholder=" Search this site…" aria-label="Search this site…" autocomplete="off"> |  | ||||||
| 
 |  | ||||||
|     <button class="btn btn-link td-sidebar__toggle d-md-none p-0 ml-3 fas fa-bars" type="button" data-toggle="collapse" data-target="#td-section-nav" aria-controls="td-docs-nav" aria-expanded="false" aria-label="Toggle section navigation"> |  | ||||||
|     </button> |  | ||||||
|   </form> |  | ||||||
|    |  | ||||||
|   <nav class="collapse td-sidebar-nav pt-2 pl-4" id="td-section-nav"> |  | ||||||
|      |  | ||||||
|      |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/" class="align-left pl-0 pr-2 td-sidebar-link td-sidebar-link__section">Documentation</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse show" id="kubernetes-operator-docs"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/installation/" class="align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section">Installation</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse " id="kubernetes-operator-docs-installation"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/how-it-works/" class="align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section">How it works</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse " id="kubernetes-operator-docs-how-it-works"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-how-it-works-architecture-and-design" href="/kubernetes-operator/docs/how-it-works/architecture-and-design/">Architecture and design</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-how-it-works-jenkins-docker-images" href="/kubernetes-operator/docs/how-it-works/jenkins-docker-images/">Jenkins Docker Images</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/getting-started/" class="align-left pl-0 pr-2 td-sidebar-link td-sidebar-link__section">Getting Started</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse show" id="kubernetes-operator-docs-getting-started"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/getting-started/future/" class="align-left pl-0 pr-2 active td-sidebar-link td-sidebar-link__section">Future (v0.3.x)</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse show" id="kubernetes-operator-docs-getting-started-future"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-deploy-jenkins" href="/kubernetes-operator/docs/getting-started/future/deploy-jenkins/">Deploy Jenkins</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-configuration" href="/kubernetes-operator/docs/getting-started/future/configuration/">Configuration</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-customization" href="/kubernetes-operator/docs/getting-started/future/customization/">Customization</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-aks" href="/kubernetes-operator/docs/getting-started/future/aks/">AKS</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page  active" id="m-kubernetes-operator-docs-getting-started-future-configure-backup-and-restore" href="/kubernetes-operator/docs/getting-started/future/configure-backup-and-restore/">Configure backup and restore</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-custom-backup-and-restore" href="/kubernetes-operator/docs/getting-started/future/custom-backup-and-restore/">Custom Backup and Restore Providers</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-diagnostics" href="/kubernetes-operator/docs/getting-started/future/diagnostics/">Diagnostics</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-schema" href="/kubernetes-operator/docs/getting-started/future/schema/">Schema</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-developer-guide" href="/kubernetes-operator/docs/getting-started/future/developer-guide/">Developer Guide</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/getting-started/latest/" class="align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section">Latest (v0.2.x)</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse " id="kubernetes-operator-docs-getting-started-latest"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-deploy-jenkins" href="/kubernetes-operator/docs/getting-started/latest/deploy-jenkins/">Deploy Jenkins</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-configuration" href="/kubernetes-operator/docs/getting-started/latest/configuration/">Configuration</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-customization" href="/kubernetes-operator/docs/getting-started/latest/customization/">Customization</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-aks" href="/kubernetes-operator/docs/getting-started/latest/aks/">AKS</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-configure-backup-and-restore" href="/kubernetes-operator/docs/getting-started/latest/configure-backup-and-restore/">Configure backup and restore</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-custom-backup-and-restore" href="/kubernetes-operator/docs/getting-started/latest/custom-backup-and-restore/">Custom Backup and Restore Providers</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-migration" href="/kubernetes-operator/docs/getting-started/latest/migration/">Migration from v0.1.x</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-diagnostics" href="/kubernetes-operator/docs/getting-started/latest/diagnostics/">Diagnostics</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-schema" href="/kubernetes-operator/docs/getting-started/latest/schema/">Schema</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-developer-guide" href="/kubernetes-operator/docs/getting-started/latest/developer-guide/">Developer Guide</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/getting-started/v0.1.x/" class="align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section">v0.1.x</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse " id="kubernetes-operator-docs-getting-started-v0-1-x"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-deploy-jenkins" href="/kubernetes-operator/docs/getting-started/v0.1.x/deploy-jenkins/">Deploy Jenkins</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-configuration" href="/kubernetes-operator/docs/getting-started/v0.1.x/configuration/">Configuration</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-customization" href="/kubernetes-operator/docs/getting-started/v0.1.x/customization/">Customization</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-aks" href="/kubernetes-operator/docs/getting-started/v0.1.x/aks/">AKS</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-configure-backup-and-restore" href="/kubernetes-operator/docs/getting-started/v0.1.x/configure-backup-and-restore/">Configure backup and restore</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-diagnostics" href="/kubernetes-operator/docs/getting-started/v0.1.x/diagnostics/">Diagnostics</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-scheme" href="/kubernetes-operator/docs/getting-started/v0.1.x/scheme/">Scheme</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-migration-guide-v1alpha1-to-v1alpha2" href="/kubernetes-operator/docs/getting-started/v0.1.x/migration-guide-v1alpha1-to-v1alpha2/">Migration guide from v1alpha1 to v1alpha2</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-developer-guide" href="/kubernetes-operator/docs/getting-started/v0.1.x/developer-guide/">Developer Guide</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/security/" class="align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section">Security</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse " id="kubernetes-operator-docs-security"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|   </nav> |  | ||||||
| </div> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|           </div> |  | ||||||
|           <div class="d-none d-xl-block col-xl-2 td-toc d-print-none"> |  | ||||||
|              |  | ||||||
|      |  | ||||||
|      |  | ||||||
|      |  | ||||||
|       <div class="td-page-meta ml-2 pb-1 pt-2 mb-0"> |  | ||||||
|            |  | ||||||
|            |  | ||||||
|            |  | ||||||
|         <a href="https://github.com/jenkinsci/kubernetes-operator/edit/master/website/content/en/docs/Getting%20Started/future/configure-backup-and-restore.md" target="_blank"><i class="fa fa-edit fa-fw"></i> Edit this page</a> |  | ||||||
|         <a href="https://github.com/jenkinsci/kubernetes-operator/issues/new?title=Configure%20backup%20and%20restore" target="_blank"><i class="fab fa-github fa-fw"></i> Create documentation issue</a> |  | ||||||
|            |  | ||||||
|                |  | ||||||
|               <a href="https://github.com/jenkinsci/kubernetes-operator/issues/new" target="_blank"><i class="fas fa-tasks fa-fw"></i> Create project issue</a> |  | ||||||
|            |  | ||||||
|       </div> |  | ||||||
|      |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <nav id="TableOfContents"> |  | ||||||
| <ul> |  | ||||||
| <li> |  | ||||||
| <ul> |  | ||||||
| <li> |  | ||||||
| <ul> |  | ||||||
| <li><a href="#pvc">PVC</a> |  | ||||||
| <ul> |  | ||||||
| <li><a href="#create-pvc">Create PVC</a></li> |  | ||||||
| <li><a href="#configure-jenkins-cr">Configure Jenkins CR</a></li> |  | ||||||
| </ul></li> |  | ||||||
| </ul></li> |  | ||||||
| </ul></li> |  | ||||||
| </ul> |  | ||||||
| </nav> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|           </div> |  | ||||||
|           <main class="col-12 col-md-9 col-xl-8 pl-md-5" role="main"> |  | ||||||
|             <nav aria-label="breadcrumb" class="d-none d-md-block d-print-none"> |  | ||||||
| 	<ol class="breadcrumb spb-1"> |  | ||||||
| 		 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <li class="breadcrumb-item" > |  | ||||||
| 	<a href="https://jenkinsci.github.io/kubernetes-operator/docs/">Documentation</a> |  | ||||||
| </li> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <li class="breadcrumb-item" > |  | ||||||
| 	<a href="https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/">Getting Started</a> |  | ||||||
| </li> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <li class="breadcrumb-item" > |  | ||||||
| 	<a href="https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/future/">Future (v0.3.x)</a> |  | ||||||
| </li> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <li class="breadcrumb-item active" aria-current="page"> |  | ||||||
| 	<a href="https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/future/configure-backup-and-restore/">Configure backup and restore</a> |  | ||||||
| </li> |  | ||||||
| 
 |  | ||||||
| 	</ol> |  | ||||||
| </nav	> |  | ||||||
| 
 |  | ||||||
|              |  | ||||||
| <div class="td-content"> |  | ||||||
| 	<h1>Configure backup and restore</h1> |  | ||||||
| 	<div class="lead">Prevent loss of job history</div> |  | ||||||
| 	 |  | ||||||
| 
 |  | ||||||
| <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><pvc_name<span style="color:#8f5902;font-style:italic">> |  | ||||||
| </span><span style="color:#8f5902;font-style:italic">  namespace: <namespace></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 <namespace> 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><cr_name<span style="color:#8f5902;font-style:italic">> |  | ||||||
| </span><span style="color:#8f5902;font-style:italic">  namespace: <namespace></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">"3"</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><pvc_name<span style="color:#8f5902;font-style:italic">> |  | ||||||
| </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 "backup" container to make backup, for example /home/user/bin/backup.sh <backup_number>, <backup_number> 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 "backup" container to make restore backup, for example /home/user/bin/restore.sh <backup_number>, <backup_number> is passed by operator</span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span><span style="color:#8f5902;font-style:italic">#recoveryOnce: <backup_number> # if want to restore specific backup configure this field and then Jenkins will be restarted and desired backup will be restored</span></code></pre></div> |  | ||||||
| 	 |  | ||||||
| 	 |  | ||||||
| 	<div class="text-muted mt-5 pt-3 border-top">Last modified August 5, 2019 |  | ||||||
| </div> |  | ||||||
| </div> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|           </main> |  | ||||||
|         </div> |  | ||||||
|       </div> |  | ||||||
|        |  | ||||||
| <footer class="bg-dark py-5 row d-print-none"> |  | ||||||
|   <div class="container-fluid mx-sm-5"> |  | ||||||
|     <div class="row"> |  | ||||||
|       <div class="col-6 col-sm-4 text-xs-center order-sm-2"> |  | ||||||
|          |  | ||||||
|       </div> |  | ||||||
|       <div class="col-6 col-sm-4 text-right text-xs-center order-sm-3"> |  | ||||||
|          |  | ||||||
|       </div> |  | ||||||
|       <div class="col-12 col-sm-4 text-center py-2 order-sm-2"> |  | ||||||
|         <small class="text-white">© 2019 VirtusLab All Rights Reserved</small> |  | ||||||
|          |  | ||||||
| 	 |  | ||||||
| 		<p class="mt-2"><a href="/kubernetes-operator/about/">What's the Jenkins Operator?</a></p> |  | ||||||
| 	 |  | ||||||
|       </div> |  | ||||||
|     </div> |  | ||||||
|   </div> |  | ||||||
| </footer> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|     </div> |  | ||||||
|      |  | ||||||
| <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script> |  | ||||||
| <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <script src="/kubernetes-operator/js/main.min.15ba3b50c3bd013e1b26793d1a59390ea2e0f21481eafe4022de05a44eba88fc.js" integrity="sha256-Fbo7UMO9AT4bJnk9Glk5DqLg8hSB6v5AIt4FpE66iPw="></script> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|   </body> |  | ||||||
| </html> |  | ||||||
|  | @ -1,778 +0,0 @@ | ||||||
| <!doctype html> |  | ||||||
| <html lang="en" class="no-js"> |  | ||||||
|   <head> |  | ||||||
|     <meta charset="utf-8"> |  | ||||||
| <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> |  | ||||||
| <meta name="generator" content="Hugo 0.55.6" /> |  | ||||||
| 
 |  | ||||||
| <META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW"> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <link rel="shortcut icon" href="/favicons/favicon.ico" > |  | ||||||
| <link rel="apple-touch-icon" href="/kubernetes-operator/favicons/apple-touch-icon-180x180.png" sizes="180x180"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/favicon-16x16.png" sizes="16x16"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/favicon-32x32.png" sizes="32x32"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/android-36x36.png" sizes="36x36"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/android-48x48.png" sizes="48x48"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/android-72x72.png" sizes="72x72"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/android-96x196.png" sizes="96x196"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/android-144x144.png" sizes="144x144"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/android-192x192.png"sizes="192x192"> |  | ||||||
| 
 |  | ||||||
| <title>Custom Backup and Restore Providers | Jenkins Operator</title><meta property="og:title" content="Custom Backup and Restore Providers" /> |  | ||||||
| <meta property="og:description" content="Custom backup and restore provider |  | ||||||
| " /> |  | ||||||
| <meta property="og:type" content="article" /> |  | ||||||
| <meta property="og:url" content="https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/future/custom-backup-and-restore/" /> |  | ||||||
| <meta property="article:published_time" content="2019-08-05T00:00:00+00:00"/> |  | ||||||
| <meta property="article:modified_time" content="2019-08-05T00:00:00+00:00"/><meta property="og:site_name" content="Jenkins Operator" /> |  | ||||||
| 
 |  | ||||||
| <meta itemprop="name" content="Custom Backup and Restore Providers"> |  | ||||||
| <meta itemprop="description" content="Custom backup and restore provider |  | ||||||
| "> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <meta itemprop="datePublished" content="2019-08-05T00:00:00+00:00" /> |  | ||||||
| <meta itemprop="dateModified" content="2019-08-05T00:00:00+00:00" /> |  | ||||||
| <meta itemprop="wordCount" content="511"> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <meta itemprop="keywords" content="" /> |  | ||||||
| <meta name="twitter:card" content="summary"/> |  | ||||||
| <meta name="twitter:title" content="Custom Backup and Restore Providers"/> |  | ||||||
| <meta name="twitter:description" content="Custom backup and restore provider |  | ||||||
| "/> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <link rel="preload" href="/kubernetes-operator/scss/main.min.76f9ae686f932b9aa67346ef8543e8a6b0302cb67aa119d21b053c31bc3f2448.css" as="style"> |  | ||||||
| <link href="/kubernetes-operator/scss/main.min.76f9ae686f932b9aa67346ef8543e8a6b0302cb67aa119d21b053c31bc3f2448.css" rel="stylesheet" integrity=""> |  | ||||||
| 
 |  | ||||||
| <script |  | ||||||
|   src="https://code.jquery.com/jquery-3.3.1.min.js" |  | ||||||
|   integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" |  | ||||||
|   crossorigin="anonymous"></script> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|     <title>Custom Backup and Restore Providers | Jenkins Operator</title> |  | ||||||
|   </head> |  | ||||||
|   <body class="td-page"> |  | ||||||
|     <header> |  | ||||||
|        |  | ||||||
| <nav class="js-navbar-scroll navbar navbar-expand navbar-dark flex-column flex-md-row td-navbar"> |  | ||||||
| 	<a class="navbar-brand" href="/kubernetes-operator/"> |  | ||||||
| 		<img style="width: 32px; height: 32px; margin-right: 7.5px;" src="/kubernetes-operator/img/logo.svg"></img><span class="text-uppercase font-weight-bold">Jenkins Operator</span> |  | ||||||
| 	</a> |  | ||||||
| 	<div class="td-navbar-nav-scroll ml-md-auto" id="main_navbar"> |  | ||||||
| 		<ul class="navbar-nav mt-2 mt-lg-0"> |  | ||||||
| 			<li class="nav-item mr-4 mb-2 mb-lg-0"> |  | ||||||
| 				<a class="nav-link" href="/kubernetes-operator/about"><span>What's the Jenkins Operator?</span></a> |  | ||||||
|             </li> |  | ||||||
|             <li class="nav-item mr-4 mb-2 mb-lg-0"> |  | ||||||
|                 <a class="nav-link" href="/kubernetes-operator/docs"><span>Documentation</span></a> |  | ||||||
|             </li> |  | ||||||
| 			 |  | ||||||
| 		</ul> |  | ||||||
| 	</div> |  | ||||||
| 	<div class="navbar-nav d-none d-lg-block"> |  | ||||||
|  <input type="search" class="form-control td-search-input" placeholder=" Search this site…" aria-label="Search this site…" autocomplete="off"> |  | ||||||
| </div> |  | ||||||
| </nav> |  | ||||||
| 
 |  | ||||||
|     </header> |  | ||||||
|     <div class="container-fluid td-outer"> |  | ||||||
|       <div class="td-main"> |  | ||||||
|         <div class="row flex-xl-nowrap"> |  | ||||||
|           <div class="col-12 col-md-3 col-xl-2 td-sidebar d-print-none"> |  | ||||||
|              |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <div id="td-sidebar-menu" class="td-sidebar__inner"> |  | ||||||
|    |  | ||||||
|   <form class="td-sidebar__search d-flex align-items-center"> |  | ||||||
|      |  | ||||||
|  <input type="search" class="form-control td-search-input" placeholder=" Search this site…" aria-label="Search this site…" autocomplete="off"> |  | ||||||
| 
 |  | ||||||
|     <button class="btn btn-link td-sidebar__toggle d-md-none p-0 ml-3 fas fa-bars" type="button" data-toggle="collapse" data-target="#td-section-nav" aria-controls="td-docs-nav" aria-expanded="false" aria-label="Toggle section navigation"> |  | ||||||
|     </button> |  | ||||||
|   </form> |  | ||||||
|    |  | ||||||
|   <nav class="collapse td-sidebar-nav pt-2 pl-4" id="td-section-nav"> |  | ||||||
|      |  | ||||||
|      |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/" class="align-left pl-0 pr-2 td-sidebar-link td-sidebar-link__section">Documentation</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse show" id="kubernetes-operator-docs"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/installation/" class="align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section">Installation</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse " id="kubernetes-operator-docs-installation"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/how-it-works/" class="align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section">How it works</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse " id="kubernetes-operator-docs-how-it-works"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-how-it-works-architecture-and-design" href="/kubernetes-operator/docs/how-it-works/architecture-and-design/">Architecture and design</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-how-it-works-jenkins-docker-images" href="/kubernetes-operator/docs/how-it-works/jenkins-docker-images/">Jenkins Docker Images</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/getting-started/" class="align-left pl-0 pr-2 td-sidebar-link td-sidebar-link__section">Getting Started</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse show" id="kubernetes-operator-docs-getting-started"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/getting-started/future/" class="align-left pl-0 pr-2 active td-sidebar-link td-sidebar-link__section">Future (v0.3.x)</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse show" id="kubernetes-operator-docs-getting-started-future"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-deploy-jenkins" href="/kubernetes-operator/docs/getting-started/future/deploy-jenkins/">Deploy Jenkins</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-configuration" href="/kubernetes-operator/docs/getting-started/future/configuration/">Configuration</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-customization" href="/kubernetes-operator/docs/getting-started/future/customization/">Customization</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-aks" href="/kubernetes-operator/docs/getting-started/future/aks/">AKS</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-configure-backup-and-restore" href="/kubernetes-operator/docs/getting-started/future/configure-backup-and-restore/">Configure backup and restore</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page  active" id="m-kubernetes-operator-docs-getting-started-future-custom-backup-and-restore" href="/kubernetes-operator/docs/getting-started/future/custom-backup-and-restore/">Custom Backup and Restore Providers</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-diagnostics" href="/kubernetes-operator/docs/getting-started/future/diagnostics/">Diagnostics</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-schema" href="/kubernetes-operator/docs/getting-started/future/schema/">Schema</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-developer-guide" href="/kubernetes-operator/docs/getting-started/future/developer-guide/">Developer Guide</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/getting-started/latest/" class="align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section">Latest (v0.2.x)</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse " id="kubernetes-operator-docs-getting-started-latest"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-deploy-jenkins" href="/kubernetes-operator/docs/getting-started/latest/deploy-jenkins/">Deploy Jenkins</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-configuration" href="/kubernetes-operator/docs/getting-started/latest/configuration/">Configuration</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-customization" href="/kubernetes-operator/docs/getting-started/latest/customization/">Customization</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-aks" href="/kubernetes-operator/docs/getting-started/latest/aks/">AKS</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-configure-backup-and-restore" href="/kubernetes-operator/docs/getting-started/latest/configure-backup-and-restore/">Configure backup and restore</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-custom-backup-and-restore" href="/kubernetes-operator/docs/getting-started/latest/custom-backup-and-restore/">Custom Backup and Restore Providers</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-migration" href="/kubernetes-operator/docs/getting-started/latest/migration/">Migration from v0.1.x</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-diagnostics" href="/kubernetes-operator/docs/getting-started/latest/diagnostics/">Diagnostics</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-schema" href="/kubernetes-operator/docs/getting-started/latest/schema/">Schema</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-developer-guide" href="/kubernetes-operator/docs/getting-started/latest/developer-guide/">Developer Guide</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/getting-started/v0.1.x/" class="align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section">v0.1.x</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse " id="kubernetes-operator-docs-getting-started-v0-1-x"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-deploy-jenkins" href="/kubernetes-operator/docs/getting-started/v0.1.x/deploy-jenkins/">Deploy Jenkins</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-configuration" href="/kubernetes-operator/docs/getting-started/v0.1.x/configuration/">Configuration</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-customization" href="/kubernetes-operator/docs/getting-started/v0.1.x/customization/">Customization</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-aks" href="/kubernetes-operator/docs/getting-started/v0.1.x/aks/">AKS</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-configure-backup-and-restore" href="/kubernetes-operator/docs/getting-started/v0.1.x/configure-backup-and-restore/">Configure backup and restore</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-diagnostics" href="/kubernetes-operator/docs/getting-started/v0.1.x/diagnostics/">Diagnostics</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-scheme" href="/kubernetes-operator/docs/getting-started/v0.1.x/scheme/">Scheme</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-migration-guide-v1alpha1-to-v1alpha2" href="/kubernetes-operator/docs/getting-started/v0.1.x/migration-guide-v1alpha1-to-v1alpha2/">Migration guide from v1alpha1 to v1alpha2</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-developer-guide" href="/kubernetes-operator/docs/getting-started/v0.1.x/developer-guide/">Developer Guide</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/security/" class="align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section">Security</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse " id="kubernetes-operator-docs-security"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|   </nav> |  | ||||||
| </div> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|           </div> |  | ||||||
|           <div class="d-none d-xl-block col-xl-2 td-toc d-print-none"> |  | ||||||
|              |  | ||||||
|      |  | ||||||
|      |  | ||||||
|      |  | ||||||
|       <div class="td-page-meta ml-2 pb-1 pt-2 mb-0"> |  | ||||||
|            |  | ||||||
|            |  | ||||||
|            |  | ||||||
|         <a href="https://github.com/jenkinsci/kubernetes-operator/edit/master/website/content/en/docs/Getting%20Started/future/custom-backup-and-restore.md" target="_blank"><i class="fa fa-edit fa-fw"></i> Edit this page</a> |  | ||||||
|         <a href="https://github.com/jenkinsci/kubernetes-operator/issues/new?title=Custom%20Backup%20and%20Restore%20Providers" target="_blank"><i class="fab fa-github fa-fw"></i> Create documentation issue</a> |  | ||||||
|            |  | ||||||
|                |  | ||||||
|               <a href="https://github.com/jenkinsci/kubernetes-operator/issues/new" target="_blank"><i class="fas fa-tasks fa-fw"></i> Create project issue</a> |  | ||||||
|            |  | ||||||
|       </div> |  | ||||||
|      |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <nav id="TableOfContents"> |  | ||||||
| <ul> |  | ||||||
| <li> |  | ||||||
| <ul> |  | ||||||
| <li><a href="#requirements">Requirements</a></li> |  | ||||||
| <li><a href="#how-it-works">How it works</a></li> |  | ||||||
| <li><a href="#example-aws-s3-backup-using-the-cli">Example AWS S3 backup using the CLI</a></li> |  | ||||||
| </ul></li> |  | ||||||
| </ul> |  | ||||||
| </nav> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|           </div> |  | ||||||
|           <main class="col-12 col-md-9 col-xl-8 pl-md-5" role="main"> |  | ||||||
|             <nav aria-label="breadcrumb" class="d-none d-md-block d-print-none"> |  | ||||||
| 	<ol class="breadcrumb spb-1"> |  | ||||||
| 		 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <li class="breadcrumb-item" > |  | ||||||
| 	<a href="https://jenkinsci.github.io/kubernetes-operator/docs/">Documentation</a> |  | ||||||
| </li> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <li class="breadcrumb-item" > |  | ||||||
| 	<a href="https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/">Getting Started</a> |  | ||||||
| </li> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <li class="breadcrumb-item" > |  | ||||||
| 	<a href="https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/future/">Future (v0.3.x)</a> |  | ||||||
| </li> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <li class="breadcrumb-item active" aria-current="page"> |  | ||||||
| 	<a href="https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/future/custom-backup-and-restore/">Custom Backup and Restore Providers</a> |  | ||||||
| </li> |  | ||||||
| 
 |  | ||||||
| 	</ol> |  | ||||||
| </nav	> |  | ||||||
| 
 |  | ||||||
|              |  | ||||||
| <div class="td-content"> |  | ||||||
| 	<h1>Custom Backup and Restore Providers</h1> |  | ||||||
| 	<div class="lead">Custom backup and restore provider</div> |  | ||||||
| 	 |  | ||||||
| 
 |  | ||||||
| <p>With enough effort one can create a custom backup and restore provider |  | ||||||
| for the Jenkins Operator.</p> |  | ||||||
| 
 |  | ||||||
| <h2 id="requirements">Requirements</h2> |  | ||||||
| 
 |  | ||||||
| <p>Two commands (e.g. scripts) are required:</p> |  | ||||||
| 
 |  | ||||||
| <ul> |  | ||||||
| <li>a backup command, e.g. <code>backup.sh</code> that takes one argument, a <strong>backup number</strong></li> |  | ||||||
| <li>a restore command, e.g. <code>backup.sh</code> that takes one argument, a <strong>backup number</strong></li> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
| <p>Both scripts need to return an exit code of <code>0</code> on success and <code>1</code> or greater for failure.</p> |  | ||||||
| 
 |  | ||||||
| <p>One of those scripts (or the entry point of the container) needs to be responsible |  | ||||||
| for backup cleanup or rotation if required, or an external system.</p> |  | ||||||
| 
 |  | ||||||
| <h2 id="how-it-works">How it works</h2> |  | ||||||
| 
 |  | ||||||
| <p>The mechanism relies on basic Kubernetes and UNIX functionalities.</p> |  | ||||||
| 
 |  | ||||||
| <p>The backup (and restore) container runs as a sidecar in the same |  | ||||||
| Kubernetes pod as the Jenkins master.</p> |  | ||||||
| 
 |  | ||||||
| <p>Name of the backup and restore containers can be set as necessary using |  | ||||||
| <code>spec.backup.containerName</code> and <code>spec.restore.containerName</code>. |  | ||||||
| In most cases it will be the same container, but we allow for less common use cases.</p> |  | ||||||
| 
 |  | ||||||
| <p>The operator will call a backup or restore commands inside a sidecar container when necessary:</p> |  | ||||||
| 
 |  | ||||||
| <ul> |  | ||||||
| <li>backup command (defined in <code>spec.backup.action.exec.command</code>) |  | ||||||
| will be called every <code>N</code> seconds configurable in: <code>spec.backup.interval</code> |  | ||||||
| and on pod shutdown (if enabled in <code>spec.backup.makeBackupBeforePodDeletion</code>) |  | ||||||
| with an integer representing the current backup number as first and only argument</li> |  | ||||||
| <li>restore command (defined in <code>spec.restore.action.exec.command</code>) |  | ||||||
| will be called at Jenkins startup |  | ||||||
| with an integer representing the backup number to restore as first and only argument |  | ||||||
| (can be overridden using <code>spec.restore.recoveryOnce</code>)</li> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
| <h2 id="example-aws-s3-backup-using-the-cli">Example AWS S3 backup using the CLI</h2> |  | ||||||
| 
 |  | ||||||
| <p>This example shows abbreviated version of a simple AWS S3 backup implementation |  | ||||||
| using: <code>aws-cli</code>, <code>bash</code> and <code>kube2iam</code>.</p> |  | ||||||
| 
 |  | ||||||
| <p>In addition to your normal <code>Jenkins</code> <code>CustomResource</code> some additional settings |  | ||||||
| for backup and restore are required, e.g.:</p> |  | ||||||
| <div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-yaml" data-lang="yaml">kind<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>Jenkins<span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline"></span>apiVersion<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins.io/v1alpha1<span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline"></span>metadata<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">  </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>example<span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">  </span>namespace<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins<span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline"></span>spec<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">  </span>master<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>masterAnnotations<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">      </span>iam.amazonaws.com/role<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"my-example-backup-role"</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># tell kube2iam where the AWS IAM role is</span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>containers<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">      </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins-master<span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">        </span>...<span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">      </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>backup<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># container responsible for backup and restore</span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">        </span>image<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>quay.io/virtuslab/aws-cli<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1.16</span>.<span style="color:#0000cf;font-weight:bold">263</span>-<span style="color:#0000cf;font-weight:bold">2</span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">        </span>workingDir<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/<span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">        </span>command<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># our container entry point</span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>sleep<span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>infinity<span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">        </span>env<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>BACKUP_BUCKET<span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">            </span>value<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>my-example-bucket<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># the S3 bucket name to use</span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>BACKUP_PATH<span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">            </span>value<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>my-backup-path<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># the S3 bucket path prefix to use</span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>JENKINS_HOME<span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">            </span>value<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>/jenkins-home<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># the path to mount jenkins home dir in the backup container</span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">        </span>volumeMounts<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>mountPath<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>/jenkins-home<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># Jenkins home volume</span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">            </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins-home<span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>mountPath<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/backup.sh<span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">            </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>backup-scripts<span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">            </span>subPath<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>backup.sh<span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">            </span>readOnly<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">true</span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>mountPath<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/restore.sh<span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">            </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>backup-scripts<span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">            </span>subPath<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>restore.sh<span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">            </span>readOnly<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">true</span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>volumes<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">      </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>backup-scripts<span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">        </span>configMap<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span>defaultMode<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">0754</span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins-operator-backup-s3<span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>securityContext<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># make sure both containers use the same UID and GUID</span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">      </span>runAsUser<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1000</span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">      </span>fsGroup<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1000</span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">  </span>...<span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">  </span>backup<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>containerName<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>backup<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># container name responsible for backup</span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>interval<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">3600</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># how often make a backup in seconds</span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>makeBackupBeforePodDeletion<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">true</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># trigger backup just before deleting the pod</span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>action<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">      </span>exec<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">        </span>command<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span><span style="color:#8f5902;font-style:italic"># this command is invoked on "backup" container to create a backup,</span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span><span style="color:#8f5902;font-style:italic"># <backup_number> is passed by operator,</span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span><span style="color:#8f5902;font-style:italic"># for example /home/user/bin/backup.sh <backup_number></span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/backup.sh<span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">  </span>restore<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>containerName<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>backup<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># container name is responsible for restore backup</span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>action<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">      </span>exec<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">        </span>command<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span><span style="color:#8f5902;font-style:italic"># this command is invoked on "backup" container to restore a backup,</span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span><span style="color:#8f5902;font-style:italic"># <backup_number> is passed by operator</span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span><span style="color:#8f5902;font-style:italic"># for example /home/user/bin/restore.sh <backup_number></span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">          </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>/home/user/bin/restore.sh<span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#8f5902;font-style:italic">#    recoveryOnce: <backup_number> # if want to restore specific backup configure this field and then Jenkins will be restarted and desired backup will be restored</span></code></pre></div> |  | ||||||
| <p>The actual backup and restore scripts will be provided in a <code>ConfigMap</code>:</p> |  | ||||||
| <div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-yaml" data-lang="yaml">kind<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>ConfigMap<span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline"></span>apiVersion<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>v1<span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline"></span>metadata<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">  </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins-operator-backup-s3<span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">  </span>namespace<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins<span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">  </span>labels<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>app<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>jenkins-operator<span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline"></span>data<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">  </span>backup.sh<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>|<span style="color:#8f5902;font-style:italic">- |  | ||||||
| </span><span style="color:#8f5902;font-style:italic">    #!/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 ]] && echo "Usage: $0 backup_number" && exit 1;</span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span><span style="color:#000;font-weight:bold">[[</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-z<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"${BACKUP_BUCKET}"</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">]]</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic">&&</span><span style="color:#f8f8f8;text-decoration:underline"> </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"Required 'BACKUP_BUCKET' env not set"</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic">&&</span><span style="color:#f8f8f8;text-decoration:underline"> </span>exit<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1</span>;<span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span><span style="color:#000;font-weight:bold">[[</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-z<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"${BACKUP_PATH}"</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">]]</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic">&&</span><span style="color:#f8f8f8;text-decoration:underline"> </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"Required 'BACKUP_PATH' env not set"</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic">&&</span><span style="color:#f8f8f8;text-decoration:underline"> </span>exit<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1</span>;<span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span><span style="color:#000;font-weight:bold">[[</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-z<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"${JENKINS_HOME}"</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">]]</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic">&&</span><span style="color:#f8f8f8;text-decoration:underline"> </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"Required 'JENKINS_HOME' env not set"</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic">&&</span><span style="color:#f8f8f8;text-decoration:underline"> </span>exit<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1</span>;<span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>backup_number=$<span style="color:#0000cf;font-weight:bold">1</span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"Running backup #${backup_number}"</span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>BACKUP_TMP_DIR=$(mktemp<span style="color:#f8f8f8;text-decoration:underline"> </span>-d)<span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>tar<span style="color:#f8f8f8;text-decoration:underline"> </span>-C<span style="color:#f8f8f8;text-decoration:underline"> </span>${JENKINS_HOME}<span style="color:#f8f8f8;text-decoration:underline"> </span>-czf<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"${BACKUP_TMP_DIR}/${backup_number}.tar.gz"</span><span style="color:#f8f8f8;text-decoration:underline"> </span>--exclude<span style="color:#f8f8f8;text-decoration:underline"> </span>jobs/<span style="color:#8f5902;font-style:italic">*/workspace*</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-c<span style="color:#f8f8f8;text-decoration:underline"> </span>jobs<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic">&&</span><span style="color:#f8f8f8;text-decoration:underline"> </span>\<span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>aws<span style="color:#f8f8f8;text-decoration:underline"> </span>s3<span style="color:#f8f8f8;text-decoration:underline"> </span>cp<span style="color:#f8f8f8;text-decoration:underline"> </span>${BACKUP_TMP_DIR}/${backup_number}.tar.gz<span style="color:#f8f8f8;text-decoration:underline"> </span>s3<span style="color:#000;font-weight:bold">:</span>//${BACKUP_BUCKET}/${BACKUP_PATH}/${backup_number}.tar.gz<span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span>Done<span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">  </span>restore.sh<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>|<span style="color:#8f5902;font-style:italic">- |  | ||||||
| </span><span style="color:#8f5902;font-style:italic">    #!/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 ]] && echo "Usage: $0 backup_number" && exit 1</span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span><span style="color:#000;font-weight:bold">[[</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-z<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"${BACKUP_BUCKET}"</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">]]</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic">&&</span><span style="color:#f8f8f8;text-decoration:underline"> </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"Required 'BACKUP_BUCKET' env not set"</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic">&&</span><span style="color:#f8f8f8;text-decoration:underline"> </span>exit<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1</span>;<span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span><span style="color:#000;font-weight:bold">[[</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-z<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"${BACKUP_PATH}"</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">]]</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic">&&</span><span style="color:#f8f8f8;text-decoration:underline"> </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"Required 'BACKUP_PATH' env not set"</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic">&&</span><span style="color:#f8f8f8;text-decoration:underline"> </span>exit<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1</span>;<span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span><span style="color:#000;font-weight:bold">[[</span><span style="color:#f8f8f8;text-decoration:underline"> </span>-z<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"${JENKINS_HOME}"</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">]]</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic">&&</span><span style="color:#f8f8f8;text-decoration:underline"> </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"Required 'JENKINS_HOME' env not set"</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic">&&</span><span style="color:#f8f8f8;text-decoration:underline"> </span>exit<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1</span>;<span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>backup_number=$<span style="color:#0000cf;font-weight:bold">1</span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"Running restore #${backup_number}"</span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>BACKUP_TMP_DIR=$(mktemp<span style="color:#f8f8f8;text-decoration:underline"> </span>-d)<span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>aws<span style="color:#f8f8f8;text-decoration:underline"> </span>s3<span style="color:#f8f8f8;text-decoration:underline"> </span>cp<span style="color:#f8f8f8;text-decoration:underline"> </span>s3<span style="color:#000;font-weight:bold">:</span>//${BACKUP_BUCKET}/${BACKUP_PATH}/${backup_number}.tar.gz<span style="color:#f8f8f8;text-decoration:underline"> </span>${BACKUP_TMP_DIR}/${backup_number}.tar.gz<span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>tar<span style="color:#f8f8f8;text-decoration:underline"> </span>-C<span style="color:#f8f8f8;text-decoration:underline"> </span>${JENKINS_HOME}<span style="color:#f8f8f8;text-decoration:underline"> </span>-zxf<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"${BACKUP_TMP_DIR}/${backup_number}.tar.gz"</span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>echo<span style="color:#f8f8f8;text-decoration:underline"> </span>Done</code></pre></div> |  | ||||||
| <p>In our example we will use S3 bucket lifecycle policy to keep |  | ||||||
| the number of backups under control, e.g. Cloud Formation fragment:</p> |  | ||||||
| <div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-yaml" data-lang="yaml"><span style="color:#f8f8f8;text-decoration:underline">    </span>Type<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>AWS<span style="color:#000;font-weight:bold">::</span>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> |  | ||||||
| 	 |  | ||||||
| 	 |  | ||||||
| 	<div class="text-muted mt-5 pt-3 border-top">Last modified August 5, 2019 |  | ||||||
| </div> |  | ||||||
| </div> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|           </main> |  | ||||||
|         </div> |  | ||||||
|       </div> |  | ||||||
|        |  | ||||||
| <footer class="bg-dark py-5 row d-print-none"> |  | ||||||
|   <div class="container-fluid mx-sm-5"> |  | ||||||
|     <div class="row"> |  | ||||||
|       <div class="col-6 col-sm-4 text-xs-center order-sm-2"> |  | ||||||
|          |  | ||||||
|       </div> |  | ||||||
|       <div class="col-6 col-sm-4 text-right text-xs-center order-sm-3"> |  | ||||||
|          |  | ||||||
|       </div> |  | ||||||
|       <div class="col-12 col-sm-4 text-center py-2 order-sm-2"> |  | ||||||
|         <small class="text-white">© 2019 VirtusLab All Rights Reserved</small> |  | ||||||
|          |  | ||||||
| 	 |  | ||||||
| 		<p class="mt-2"><a href="/kubernetes-operator/about/">What's the Jenkins Operator?</a></p> |  | ||||||
| 	 |  | ||||||
|       </div> |  | ||||||
|     </div> |  | ||||||
|   </div> |  | ||||||
| </footer> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|     </div> |  | ||||||
|      |  | ||||||
| <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script> |  | ||||||
| <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <script src="/kubernetes-operator/js/main.min.15ba3b50c3bd013e1b26793d1a59390ea2e0f21481eafe4022de05a44eba88fc.js" integrity="sha256-Fbo7UMO9AT4bJnk9Glk5DqLg8hSB6v5AIt4FpE66iPw="></script> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|   </body> |  | ||||||
| </html> |  | ||||||
|  | @ -1,763 +0,0 @@ | ||||||
| <!doctype html> |  | ||||||
| <html lang="en" class="no-js"> |  | ||||||
|   <head> |  | ||||||
|     <meta charset="utf-8"> |  | ||||||
| <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> |  | ||||||
| <meta name="generator" content="Hugo 0.55.6" /> |  | ||||||
| 
 |  | ||||||
| <META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW"> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <link rel="shortcut icon" href="/favicons/favicon.ico" > |  | ||||||
| <link rel="apple-touch-icon" href="/kubernetes-operator/favicons/apple-touch-icon-180x180.png" sizes="180x180"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/favicon-16x16.png" sizes="16x16"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/favicon-32x32.png" sizes="32x32"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/android-36x36.png" sizes="36x36"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/android-48x48.png" sizes="48x48"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/android-72x72.png" sizes="72x72"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/android-96x196.png" sizes="96x196"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/android-144x144.png" sizes="144x144"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/android-192x192.png"sizes="192x192"> |  | ||||||
| 
 |  | ||||||
| <title>Customization | Jenkins Operator</title><meta property="og:title" content="Customization" /> |  | ||||||
| <meta property="og:description" content="How to customize Jenkins |  | ||||||
| " /> |  | ||||||
| <meta property="og:type" content="article" /> |  | ||||||
| <meta property="og:url" content="https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/future/customization/" /> |  | ||||||
| <meta property="article:published_time" content="2019-08-05T00:00:00+00:00"/> |  | ||||||
| <meta property="article:modified_time" content="2019-08-05T00:00:00+00:00"/><meta property="og:site_name" content="Jenkins Operator" /> |  | ||||||
| 
 |  | ||||||
| <meta itemprop="name" content="Customization"> |  | ||||||
| <meta itemprop="description" content="How to customize Jenkins |  | ||||||
| "> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <meta itemprop="datePublished" content="2019-08-05T00:00:00+00:00" /> |  | ||||||
| <meta itemprop="dateModified" content="2019-08-05T00:00:00+00:00" /> |  | ||||||
| <meta itemprop="wordCount" content="253"> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <meta itemprop="keywords" content="" /> |  | ||||||
| <meta name="twitter:card" content="summary"/> |  | ||||||
| <meta name="twitter:title" content="Customization"/> |  | ||||||
| <meta name="twitter:description" content="How to customize Jenkins |  | ||||||
| "/> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <link rel="preload" href="/kubernetes-operator/scss/main.min.76f9ae686f932b9aa67346ef8543e8a6b0302cb67aa119d21b053c31bc3f2448.css" as="style"> |  | ||||||
| <link href="/kubernetes-operator/scss/main.min.76f9ae686f932b9aa67346ef8543e8a6b0302cb67aa119d21b053c31bc3f2448.css" rel="stylesheet" integrity=""> |  | ||||||
| 
 |  | ||||||
| <script |  | ||||||
|   src="https://code.jquery.com/jquery-3.3.1.min.js" |  | ||||||
|   integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" |  | ||||||
|   crossorigin="anonymous"></script> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|     <title>Customization | Jenkins Operator</title> |  | ||||||
|   </head> |  | ||||||
|   <body class="td-page"> |  | ||||||
|     <header> |  | ||||||
|        |  | ||||||
| <nav class="js-navbar-scroll navbar navbar-expand navbar-dark flex-column flex-md-row td-navbar"> |  | ||||||
| 	<a class="navbar-brand" href="/kubernetes-operator/"> |  | ||||||
| 		<img style="width: 32px; height: 32px; margin-right: 7.5px;" src="/kubernetes-operator/img/logo.svg"></img><span class="text-uppercase font-weight-bold">Jenkins Operator</span> |  | ||||||
| 	</a> |  | ||||||
| 	<div class="td-navbar-nav-scroll ml-md-auto" id="main_navbar"> |  | ||||||
| 		<ul class="navbar-nav mt-2 mt-lg-0"> |  | ||||||
| 			<li class="nav-item mr-4 mb-2 mb-lg-0"> |  | ||||||
| 				<a class="nav-link" href="/kubernetes-operator/about"><span>What's the Jenkins Operator?</span></a> |  | ||||||
|             </li> |  | ||||||
|             <li class="nav-item mr-4 mb-2 mb-lg-0"> |  | ||||||
|                 <a class="nav-link" href="/kubernetes-operator/docs"><span>Documentation</span></a> |  | ||||||
|             </li> |  | ||||||
| 			 |  | ||||||
| 		</ul> |  | ||||||
| 	</div> |  | ||||||
| 	<div class="navbar-nav d-none d-lg-block"> |  | ||||||
|  <input type="search" class="form-control td-search-input" placeholder=" Search this site…" aria-label="Search this site…" autocomplete="off"> |  | ||||||
| </div> |  | ||||||
| </nav> |  | ||||||
| 
 |  | ||||||
|     </header> |  | ||||||
|     <div class="container-fluid td-outer"> |  | ||||||
|       <div class="td-main"> |  | ||||||
|         <div class="row flex-xl-nowrap"> |  | ||||||
|           <div class="col-12 col-md-3 col-xl-2 td-sidebar d-print-none"> |  | ||||||
|              |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <div id="td-sidebar-menu" class="td-sidebar__inner"> |  | ||||||
|    |  | ||||||
|   <form class="td-sidebar__search d-flex align-items-center"> |  | ||||||
|      |  | ||||||
|  <input type="search" class="form-control td-search-input" placeholder=" Search this site…" aria-label="Search this site…" autocomplete="off"> |  | ||||||
| 
 |  | ||||||
|     <button class="btn btn-link td-sidebar__toggle d-md-none p-0 ml-3 fas fa-bars" type="button" data-toggle="collapse" data-target="#td-section-nav" aria-controls="td-docs-nav" aria-expanded="false" aria-label="Toggle section navigation"> |  | ||||||
|     </button> |  | ||||||
|   </form> |  | ||||||
|    |  | ||||||
|   <nav class="collapse td-sidebar-nav pt-2 pl-4" id="td-section-nav"> |  | ||||||
|      |  | ||||||
|      |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/" class="align-left pl-0 pr-2 td-sidebar-link td-sidebar-link__section">Documentation</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse show" id="kubernetes-operator-docs"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/installation/" class="align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section">Installation</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse " id="kubernetes-operator-docs-installation"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/how-it-works/" class="align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section">How it works</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse " id="kubernetes-operator-docs-how-it-works"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-how-it-works-architecture-and-design" href="/kubernetes-operator/docs/how-it-works/architecture-and-design/">Architecture and design</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-how-it-works-jenkins-docker-images" href="/kubernetes-operator/docs/how-it-works/jenkins-docker-images/">Jenkins Docker Images</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/getting-started/" class="align-left pl-0 pr-2 td-sidebar-link td-sidebar-link__section">Getting Started</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse show" id="kubernetes-operator-docs-getting-started"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/getting-started/future/" class="align-left pl-0 pr-2 active td-sidebar-link td-sidebar-link__section">Future (v0.3.x)</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse show" id="kubernetes-operator-docs-getting-started-future"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-deploy-jenkins" href="/kubernetes-operator/docs/getting-started/future/deploy-jenkins/">Deploy Jenkins</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-configuration" href="/kubernetes-operator/docs/getting-started/future/configuration/">Configuration</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page  active" id="m-kubernetes-operator-docs-getting-started-future-customization" href="/kubernetes-operator/docs/getting-started/future/customization/">Customization</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-aks" href="/kubernetes-operator/docs/getting-started/future/aks/">AKS</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-configure-backup-and-restore" href="/kubernetes-operator/docs/getting-started/future/configure-backup-and-restore/">Configure backup and restore</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-custom-backup-and-restore" href="/kubernetes-operator/docs/getting-started/future/custom-backup-and-restore/">Custom Backup and Restore Providers</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-diagnostics" href="/kubernetes-operator/docs/getting-started/future/diagnostics/">Diagnostics</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-schema" href="/kubernetes-operator/docs/getting-started/future/schema/">Schema</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-developer-guide" href="/kubernetes-operator/docs/getting-started/future/developer-guide/">Developer Guide</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/getting-started/latest/" class="align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section">Latest (v0.2.x)</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse " id="kubernetes-operator-docs-getting-started-latest"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-deploy-jenkins" href="/kubernetes-operator/docs/getting-started/latest/deploy-jenkins/">Deploy Jenkins</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-configuration" href="/kubernetes-operator/docs/getting-started/latest/configuration/">Configuration</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-customization" href="/kubernetes-operator/docs/getting-started/latest/customization/">Customization</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-aks" href="/kubernetes-operator/docs/getting-started/latest/aks/">AKS</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-configure-backup-and-restore" href="/kubernetes-operator/docs/getting-started/latest/configure-backup-and-restore/">Configure backup and restore</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-custom-backup-and-restore" href="/kubernetes-operator/docs/getting-started/latest/custom-backup-and-restore/">Custom Backup and Restore Providers</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-migration" href="/kubernetes-operator/docs/getting-started/latest/migration/">Migration from v0.1.x</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-diagnostics" href="/kubernetes-operator/docs/getting-started/latest/diagnostics/">Diagnostics</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-schema" href="/kubernetes-operator/docs/getting-started/latest/schema/">Schema</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-developer-guide" href="/kubernetes-operator/docs/getting-started/latest/developer-guide/">Developer Guide</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/getting-started/v0.1.x/" class="align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section">v0.1.x</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse " id="kubernetes-operator-docs-getting-started-v0-1-x"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-deploy-jenkins" href="/kubernetes-operator/docs/getting-started/v0.1.x/deploy-jenkins/">Deploy Jenkins</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-configuration" href="/kubernetes-operator/docs/getting-started/v0.1.x/configuration/">Configuration</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-customization" href="/kubernetes-operator/docs/getting-started/v0.1.x/customization/">Customization</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-aks" href="/kubernetes-operator/docs/getting-started/v0.1.x/aks/">AKS</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-configure-backup-and-restore" href="/kubernetes-operator/docs/getting-started/v0.1.x/configure-backup-and-restore/">Configure backup and restore</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-diagnostics" href="/kubernetes-operator/docs/getting-started/v0.1.x/diagnostics/">Diagnostics</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-scheme" href="/kubernetes-operator/docs/getting-started/v0.1.x/scheme/">Scheme</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-migration-guide-v1alpha1-to-v1alpha2" href="/kubernetes-operator/docs/getting-started/v0.1.x/migration-guide-v1alpha1-to-v1alpha2/">Migration guide from v1alpha1 to v1alpha2</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-developer-guide" href="/kubernetes-operator/docs/getting-started/v0.1.x/developer-guide/">Developer Guide</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/security/" class="align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section">Security</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse " id="kubernetes-operator-docs-security"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|   </nav> |  | ||||||
| </div> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|           </div> |  | ||||||
|           <div class="d-none d-xl-block col-xl-2 td-toc d-print-none"> |  | ||||||
|              |  | ||||||
|      |  | ||||||
|      |  | ||||||
|      |  | ||||||
|       <div class="td-page-meta ml-2 pb-1 pt-2 mb-0"> |  | ||||||
|            |  | ||||||
|            |  | ||||||
|            |  | ||||||
|         <a href="https://github.com/jenkinsci/kubernetes-operator/edit/master/website/content/en/docs/Getting%20Started/future/customization.md" target="_blank"><i class="fa fa-edit fa-fw"></i> Edit this page</a> |  | ||||||
|         <a href="https://github.com/jenkinsci/kubernetes-operator/issues/new?title=Customization" target="_blank"><i class="fab fa-github fa-fw"></i> Create documentation issue</a> |  | ||||||
|            |  | ||||||
|                |  | ||||||
|               <a href="https://github.com/jenkinsci/kubernetes-operator/issues/new" target="_blank"><i class="fas fa-tasks fa-fw"></i> Create project issue</a> |  | ||||||
|            |  | ||||||
|       </div> |  | ||||||
|      |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <nav id="TableOfContents"> |  | ||||||
| <ul> |  | ||||||
| <li> |  | ||||||
| <ul> |  | ||||||
| <li> |  | ||||||
| <ul> |  | ||||||
| <li><a href="#using-secrets-from-a-groovy-script">Using secrets from a Groovy script</a></li> |  | ||||||
| </ul></li> |  | ||||||
| <li><a href="#install-plugins">Install Plugins</a></li> |  | ||||||
| </ul></li> |  | ||||||
| </ul> |  | ||||||
| </nav> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|           </div> |  | ||||||
|           <main class="col-12 col-md-9 col-xl-8 pl-md-5" role="main"> |  | ||||||
|             <nav aria-label="breadcrumb" class="d-none d-md-block d-print-none"> |  | ||||||
| 	<ol class="breadcrumb spb-1"> |  | ||||||
| 		 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <li class="breadcrumb-item" > |  | ||||||
| 	<a href="https://jenkinsci.github.io/kubernetes-operator/docs/">Documentation</a> |  | ||||||
| </li> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <li class="breadcrumb-item" > |  | ||||||
| 	<a href="https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/">Getting Started</a> |  | ||||||
| </li> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <li class="breadcrumb-item" > |  | ||||||
| 	<a href="https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/future/">Future (v0.3.x)</a> |  | ||||||
| </li> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <li class="breadcrumb-item active" aria-current="page"> |  | ||||||
| 	<a href="https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/future/customization/">Customization</a> |  | ||||||
| </li> |  | ||||||
| 
 |  | ||||||
| 	</ol> |  | ||||||
| </nav	> |  | ||||||
| 
 |  | ||||||
|              |  | ||||||
| <div class="td-content"> |  | ||||||
| 	<h1>Customization</h1> |  | ||||||
| 	<div class="lead">How to customize Jenkins</div> |  | ||||||
| 	 |  | ||||||
| 
 |  | ||||||
| <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<ThemeElement><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<>();<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">"DEFAULT"</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">"https://cdn.rawgit.com/afonsof/jenkins-material-theme/gh-pages/dist/material-light-green.css"</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">"Configuration as Code integration works!!!"</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">"SYSTEM_MESSAGE"</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</span>.<span style="color:#0000cf;font-weight:bold">3</span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>workflow-job<span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">      </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"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>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">"2.6"</span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>git<span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">      </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">3.12</span>.<span style="color:#0000cf;font-weight:bold">0</span><span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>job-dsl<span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">      </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">"1.76"</span><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">"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>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">"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>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>kubernetes-credentials-provider<span style="color:#f8f8f8;text-decoration:underline"> |  | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">      </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">0.12</span>.<span style="color:#0000cf;font-weight:bold">1</span></code></pre></div> |  | ||||||
| <p>You can change their versions.</p> |  | ||||||
| 
 |  | ||||||
| <p>The <strong>Jenkins Operator</strong> will then automatically install plugins after the Jenkins master pod restarts.</p> |  | ||||||
| 
 |  | ||||||
| 	 |  | ||||||
| 	 |  | ||||||
| 	<div class="text-muted mt-5 pt-3 border-top">Last modified August 5, 2019 |  | ||||||
| </div> |  | ||||||
| </div> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|           </main> |  | ||||||
|         </div> |  | ||||||
|       </div> |  | ||||||
|        |  | ||||||
| <footer class="bg-dark py-5 row d-print-none"> |  | ||||||
|   <div class="container-fluid mx-sm-5"> |  | ||||||
|     <div class="row"> |  | ||||||
|       <div class="col-6 col-sm-4 text-xs-center order-sm-2"> |  | ||||||
|          |  | ||||||
|       </div> |  | ||||||
|       <div class="col-6 col-sm-4 text-right text-xs-center order-sm-3"> |  | ||||||
|          |  | ||||||
|       </div> |  | ||||||
|       <div class="col-12 col-sm-4 text-center py-2 order-sm-2"> |  | ||||||
|         <small class="text-white">© 2019 VirtusLab All Rights Reserved</small> |  | ||||||
|          |  | ||||||
| 	 |  | ||||||
| 		<p class="mt-2"><a href="/kubernetes-operator/about/">What's the Jenkins Operator?</a></p> |  | ||||||
| 	 |  | ||||||
|       </div> |  | ||||||
|     </div> |  | ||||||
|   </div> |  | ||||||
| </footer> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|     </div> |  | ||||||
|      |  | ||||||
| <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script> |  | ||||||
| <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <script src="/kubernetes-operator/js/main.min.15ba3b50c3bd013e1b26793d1a59390ea2e0f21481eafe4022de05a44eba88fc.js" integrity="sha256-Fbo7UMO9AT4bJnk9Glk5DqLg8hSB6v5AIt4FpE66iPw="></script> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|   </body> |  | ||||||
| </html> |  | ||||||
|  | @ -1,653 +0,0 @@ | ||||||
| <!doctype html> |  | ||||||
| <html lang="en" class="no-js"> |  | ||||||
|   <head> |  | ||||||
|     <meta charset="utf-8"> |  | ||||||
| <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> |  | ||||||
| <meta name="generator" content="Hugo 0.55.6" /> |  | ||||||
| 
 |  | ||||||
| <META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW"> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <link rel="shortcut icon" href="/favicons/favicon.ico" > |  | ||||||
| <link rel="apple-touch-icon" href="/kubernetes-operator/favicons/apple-touch-icon-180x180.png" sizes="180x180"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/favicon-16x16.png" sizes="16x16"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/favicon-32x32.png" sizes="32x32"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/android-36x36.png" sizes="36x36"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/android-48x48.png" sizes="48x48"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/android-72x72.png" sizes="72x72"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/android-96x196.png" sizes="96x196"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/android-144x144.png" sizes="144x144"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/android-192x192.png"sizes="192x192"> |  | ||||||
| 
 |  | ||||||
| <title>Deploy Jenkins | Jenkins Operator</title><meta property="og:title" content="Deploy Jenkins" /> |  | ||||||
| <meta property="og:description" content="Deploy production ready Jenkins Operator manifest |  | ||||||
| " /> |  | ||||||
| <meta property="og:type" content="article" /> |  | ||||||
| <meta property="og:url" content="https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/future/deploy-jenkins/" /> |  | ||||||
| <meta property="article:published_time" content="2019-08-05T00:00:00+00:00"/> |  | ||||||
| <meta property="article:modified_time" content="2019-08-05T00:00:00+00:00"/><meta property="og:site_name" content="Jenkins Operator" /> |  | ||||||
| 
 |  | ||||||
| <meta itemprop="name" content="Deploy Jenkins"> |  | ||||||
| <meta itemprop="description" content="Deploy production ready Jenkins Operator manifest |  | ||||||
| "> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <meta itemprop="datePublished" content="2019-08-05T00:00:00+00:00" /> |  | ||||||
| <meta itemprop="dateModified" content="2019-08-05T00:00:00+00:00" /> |  | ||||||
| <meta itemprop="wordCount" content="171"> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <meta itemprop="keywords" content="" /> |  | ||||||
| <meta name="twitter:card" content="summary"/> |  | ||||||
| <meta name="twitter:title" content="Deploy Jenkins"/> |  | ||||||
| <meta name="twitter:description" content="Deploy production ready Jenkins Operator manifest |  | ||||||
| "/> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <link rel="preload" href="/kubernetes-operator/scss/main.min.76f9ae686f932b9aa67346ef8543e8a6b0302cb67aa119d21b053c31bc3f2448.css" as="style"> |  | ||||||
| <link href="/kubernetes-operator/scss/main.min.76f9ae686f932b9aa67346ef8543e8a6b0302cb67aa119d21b053c31bc3f2448.css" rel="stylesheet" integrity=""> |  | ||||||
| 
 |  | ||||||
| <script |  | ||||||
|   src="https://code.jquery.com/jquery-3.3.1.min.js" |  | ||||||
|   integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" |  | ||||||
|   crossorigin="anonymous"></script> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|     <title>Deploy Jenkins | Jenkins Operator</title> |  | ||||||
|   </head> |  | ||||||
|   <body class="td-page"> |  | ||||||
|     <header> |  | ||||||
|        |  | ||||||
| <nav class="js-navbar-scroll navbar navbar-expand navbar-dark flex-column flex-md-row td-navbar"> |  | ||||||
| 	<a class="navbar-brand" href="/kubernetes-operator/"> |  | ||||||
| 		<img style="width: 32px; height: 32px; margin-right: 7.5px;" src="/kubernetes-operator/img/logo.svg"></img><span class="text-uppercase font-weight-bold">Jenkins Operator</span> |  | ||||||
| 	</a> |  | ||||||
| 	<div class="td-navbar-nav-scroll ml-md-auto" id="main_navbar"> |  | ||||||
| 		<ul class="navbar-nav mt-2 mt-lg-0"> |  | ||||||
| 			<li class="nav-item mr-4 mb-2 mb-lg-0"> |  | ||||||
| 				<a class="nav-link" href="/kubernetes-operator/about"><span>What's the Jenkins Operator?</span></a> |  | ||||||
|             </li> |  | ||||||
|             <li class="nav-item mr-4 mb-2 mb-lg-0"> |  | ||||||
|                 <a class="nav-link" href="/kubernetes-operator/docs"><span>Documentation</span></a> |  | ||||||
|             </li> |  | ||||||
| 			 |  | ||||||
| 		</ul> |  | ||||||
| 	</div> |  | ||||||
| 	<div class="navbar-nav d-none d-lg-block"> |  | ||||||
|  <input type="search" class="form-control td-search-input" placeholder=" Search this site…" aria-label="Search this site…" autocomplete="off"> |  | ||||||
| </div> |  | ||||||
| </nav> |  | ||||||
| 
 |  | ||||||
|     </header> |  | ||||||
|     <div class="container-fluid td-outer"> |  | ||||||
|       <div class="td-main"> |  | ||||||
|         <div class="row flex-xl-nowrap"> |  | ||||||
|           <div class="col-12 col-md-3 col-xl-2 td-sidebar d-print-none"> |  | ||||||
|              |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <div id="td-sidebar-menu" class="td-sidebar__inner"> |  | ||||||
|    |  | ||||||
|   <form class="td-sidebar__search d-flex align-items-center"> |  | ||||||
|      |  | ||||||
|  <input type="search" class="form-control td-search-input" placeholder=" Search this site…" aria-label="Search this site…" autocomplete="off"> |  | ||||||
| 
 |  | ||||||
|     <button class="btn btn-link td-sidebar__toggle d-md-none p-0 ml-3 fas fa-bars" type="button" data-toggle="collapse" data-target="#td-section-nav" aria-controls="td-docs-nav" aria-expanded="false" aria-label="Toggle section navigation"> |  | ||||||
|     </button> |  | ||||||
|   </form> |  | ||||||
|    |  | ||||||
|   <nav class="collapse td-sidebar-nav pt-2 pl-4" id="td-section-nav"> |  | ||||||
|      |  | ||||||
|      |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/" class="align-left pl-0 pr-2 td-sidebar-link td-sidebar-link__section">Documentation</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse show" id="kubernetes-operator-docs"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/installation/" class="align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section">Installation</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse " id="kubernetes-operator-docs-installation"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/how-it-works/" class="align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section">How it works</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse " id="kubernetes-operator-docs-how-it-works"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-how-it-works-architecture-and-design" href="/kubernetes-operator/docs/how-it-works/architecture-and-design/">Architecture and design</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-how-it-works-jenkins-docker-images" href="/kubernetes-operator/docs/how-it-works/jenkins-docker-images/">Jenkins Docker Images</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/getting-started/" class="align-left pl-0 pr-2 td-sidebar-link td-sidebar-link__section">Getting Started</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse show" id="kubernetes-operator-docs-getting-started"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/getting-started/future/" class="align-left pl-0 pr-2 active td-sidebar-link td-sidebar-link__section">Future (v0.3.x)</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse show" id="kubernetes-operator-docs-getting-started-future"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page  active" id="m-kubernetes-operator-docs-getting-started-future-deploy-jenkins" href="/kubernetes-operator/docs/getting-started/future/deploy-jenkins/">Deploy Jenkins</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-configuration" href="/kubernetes-operator/docs/getting-started/future/configuration/">Configuration</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-customization" href="/kubernetes-operator/docs/getting-started/future/customization/">Customization</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-aks" href="/kubernetes-operator/docs/getting-started/future/aks/">AKS</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-configure-backup-and-restore" href="/kubernetes-operator/docs/getting-started/future/configure-backup-and-restore/">Configure backup and restore</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-custom-backup-and-restore" href="/kubernetes-operator/docs/getting-started/future/custom-backup-and-restore/">Custom Backup and Restore Providers</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-diagnostics" href="/kubernetes-operator/docs/getting-started/future/diagnostics/">Diagnostics</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-schema" href="/kubernetes-operator/docs/getting-started/future/schema/">Schema</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-developer-guide" href="/kubernetes-operator/docs/getting-started/future/developer-guide/">Developer Guide</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/getting-started/latest/" class="align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section">Latest (v0.2.x)</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse " id="kubernetes-operator-docs-getting-started-latest"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-deploy-jenkins" href="/kubernetes-operator/docs/getting-started/latest/deploy-jenkins/">Deploy Jenkins</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-configuration" href="/kubernetes-operator/docs/getting-started/latest/configuration/">Configuration</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-customization" href="/kubernetes-operator/docs/getting-started/latest/customization/">Customization</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-aks" href="/kubernetes-operator/docs/getting-started/latest/aks/">AKS</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-configure-backup-and-restore" href="/kubernetes-operator/docs/getting-started/latest/configure-backup-and-restore/">Configure backup and restore</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-custom-backup-and-restore" href="/kubernetes-operator/docs/getting-started/latest/custom-backup-and-restore/">Custom Backup and Restore Providers</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-migration" href="/kubernetes-operator/docs/getting-started/latest/migration/">Migration from v0.1.x</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-diagnostics" href="/kubernetes-operator/docs/getting-started/latest/diagnostics/">Diagnostics</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-schema" href="/kubernetes-operator/docs/getting-started/latest/schema/">Schema</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-developer-guide" href="/kubernetes-operator/docs/getting-started/latest/developer-guide/">Developer Guide</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/getting-started/v0.1.x/" class="align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section">v0.1.x</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse " id="kubernetes-operator-docs-getting-started-v0-1-x"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-deploy-jenkins" href="/kubernetes-operator/docs/getting-started/v0.1.x/deploy-jenkins/">Deploy Jenkins</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-configuration" href="/kubernetes-operator/docs/getting-started/v0.1.x/configuration/">Configuration</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-customization" href="/kubernetes-operator/docs/getting-started/v0.1.x/customization/">Customization</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-aks" href="/kubernetes-operator/docs/getting-started/v0.1.x/aks/">AKS</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-configure-backup-and-restore" href="/kubernetes-operator/docs/getting-started/v0.1.x/configure-backup-and-restore/">Configure backup and restore</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-diagnostics" href="/kubernetes-operator/docs/getting-started/v0.1.x/diagnostics/">Diagnostics</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-scheme" href="/kubernetes-operator/docs/getting-started/v0.1.x/scheme/">Scheme</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-migration-guide-v1alpha1-to-v1alpha2" href="/kubernetes-operator/docs/getting-started/v0.1.x/migration-guide-v1alpha1-to-v1alpha2/">Migration guide from v1alpha1 to v1alpha2</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-developer-guide" href="/kubernetes-operator/docs/getting-started/v0.1.x/developer-guide/">Developer Guide</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/security/" class="align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section">Security</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse " id="kubernetes-operator-docs-security"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|   </nav> |  | ||||||
| </div> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|           </div> |  | ||||||
|           <div class="d-none d-xl-block col-xl-2 td-toc d-print-none"> |  | ||||||
|              |  | ||||||
|      |  | ||||||
|      |  | ||||||
|      |  | ||||||
|       <div class="td-page-meta ml-2 pb-1 pt-2 mb-0"> |  | ||||||
|            |  | ||||||
|            |  | ||||||
|            |  | ||||||
|         <a href="https://github.com/jenkinsci/kubernetes-operator/edit/master/website/content/en/docs/Getting%20Started/future/deploy-jenkins.md" target="_blank"><i class="fa fa-edit fa-fw"></i> Edit this page</a> |  | ||||||
|         <a href="https://github.com/jenkinsci/kubernetes-operator/issues/new?title=Deploy%20Jenkins" target="_blank"><i class="fab fa-github fa-fw"></i> Create documentation issue</a> |  | ||||||
|            |  | ||||||
|                |  | ||||||
|               <a href="https://github.com/jenkinsci/kubernetes-operator/issues/new" target="_blank"><i class="fas fa-tasks fa-fw"></i> Create project issue</a> |  | ||||||
|            |  | ||||||
|       </div> |  | ||||||
|      |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|           </div> |  | ||||||
|           <main class="col-12 col-md-9 col-xl-8 pl-md-5" role="main"> |  | ||||||
|             <nav aria-label="breadcrumb" class="d-none d-md-block d-print-none"> |  | ||||||
| 	<ol class="breadcrumb spb-1"> |  | ||||||
| 		 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <li class="breadcrumb-item" > |  | ||||||
| 	<a href="https://jenkinsci.github.io/kubernetes-operator/docs/">Documentation</a> |  | ||||||
| </li> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <li class="breadcrumb-item" > |  | ||||||
| 	<a href="https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/">Getting Started</a> |  | ||||||
| </li> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <li class="breadcrumb-item" > |  | ||||||
| 	<a href="https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/future/">Future (v0.3.x)</a> |  | ||||||
| </li> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <li class="breadcrumb-item active" aria-current="page"> |  | ||||||
| 	<a href="https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/future/deploy-jenkins/">Deploy Jenkins</a> |  | ||||||
| </li> |  | ||||||
| 
 |  | ||||||
| 	</ol> |  | ||||||
| </nav	> |  | ||||||
| 
 |  | ||||||
|              |  | ||||||
| <div class="td-content"> |  | ||||||
| 	<h1>Deploy Jenkins</h1> |  | ||||||
| 	<div class="lead">Deploy production ready Jenkins Operator manifest</div> |  | ||||||
| 	<p>Once Jenkins Operator is up and running let’s deploy actual Jenkins instance. |  | ||||||
| Create manifest e.g. <strong><code>jenkins_instance.yaml</code></strong> with following data and save it on drive.</p> |  | ||||||
| <div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-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">"1"</span> |  | ||||||
|           memory: 500Mi |  | ||||||
|   seedJobs: |  | ||||||
|   - id: jenkins-operator |  | ||||||
|     targets: <span style="color:#4e9a06">"cicd/jobs/*.jenkins"</span> |  | ||||||
|     description: <span style="color:#4e9a06">"Jenkins Operator repository"</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-<cr_name> -o <span style="color:#4e9a06">'jsonpath={.data.user}'</span> <span style="color:#000;font-weight:bold">|</span> base64 -d |  | ||||||
| kubectl get secret jenkins-operator-credentials-<cr_name> -o <span style="color:#4e9a06">'jsonpath={.data.password}'</span> <span style="color:#000;font-weight:bold">|</span> base64 -d</code></pre></div> |  | ||||||
| <p>Connect to the Jenkins instance (minikube):</p> |  | ||||||
| <div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">minikube service jenkins-operator-http-<cr_name> --url</code></pre></div> |  | ||||||
| <p>Connect to the Jenkins instance (actual Kubernetes cluster):</p> |  | ||||||
| <div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">kubectl port-forward jenkins-<cr_name> <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="/img/jenkins.png" alt="jenkins" /></p> |  | ||||||
| 
 |  | ||||||
| 	 |  | ||||||
| 	 |  | ||||||
| 	<div class="text-muted mt-5 pt-3 border-top">Last modified August 5, 2019 |  | ||||||
| </div> |  | ||||||
| </div> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|           </main> |  | ||||||
|         </div> |  | ||||||
|       </div> |  | ||||||
|        |  | ||||||
| <footer class="bg-dark py-5 row d-print-none"> |  | ||||||
|   <div class="container-fluid mx-sm-5"> |  | ||||||
|     <div class="row"> |  | ||||||
|       <div class="col-6 col-sm-4 text-xs-center order-sm-2"> |  | ||||||
|          |  | ||||||
|       </div> |  | ||||||
|       <div class="col-6 col-sm-4 text-right text-xs-center order-sm-3"> |  | ||||||
|          |  | ||||||
|       </div> |  | ||||||
|       <div class="col-12 col-sm-4 text-center py-2 order-sm-2"> |  | ||||||
|         <small class="text-white">© 2019 VirtusLab All Rights Reserved</small> |  | ||||||
|          |  | ||||||
| 	 |  | ||||||
| 		<p class="mt-2"><a href="/kubernetes-operator/about/">What's the Jenkins Operator?</a></p> |  | ||||||
| 	 |  | ||||||
|       </div> |  | ||||||
|     </div> |  | ||||||
|   </div> |  | ||||||
| </footer> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|     </div> |  | ||||||
|      |  | ||||||
| <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script> |  | ||||||
| <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <script src="/kubernetes-operator/js/main.min.15ba3b50c3bd013e1b26793d1a59390ea2e0f21481eafe4022de05a44eba88fc.js" integrity="sha256-Fbo7UMO9AT4bJnk9Glk5DqLg8hSB6v5AIt4FpE66iPw="></script> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|   </body> |  | ||||||
| </html> |  | ||||||
|  | @ -1,771 +0,0 @@ | ||||||
| <!doctype html> |  | ||||||
| <html lang="en" class="no-js"> |  | ||||||
|   <head> |  | ||||||
|     <meta charset="utf-8"> |  | ||||||
| <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> |  | ||||||
| <meta name="generator" content="Hugo 0.55.6" /> |  | ||||||
| 
 |  | ||||||
| <META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW"> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <link rel="shortcut icon" href="/favicons/favicon.ico" > |  | ||||||
| <link rel="apple-touch-icon" href="/kubernetes-operator/favicons/apple-touch-icon-180x180.png" sizes="180x180"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/favicon-16x16.png" sizes="16x16"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/favicon-32x32.png" sizes="32x32"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/android-36x36.png" sizes="36x36"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/android-48x48.png" sizes="48x48"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/android-72x72.png" sizes="72x72"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/android-96x196.png" sizes="96x196"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/android-144x144.png" sizes="144x144"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/android-192x192.png"sizes="192x192"> |  | ||||||
| 
 |  | ||||||
| <title>Developer Guide | Jenkins Operator</title><meta property="og:title" content="Developer Guide" /> |  | ||||||
| <meta property="og:description" content="Jenkins Operator for developers |  | ||||||
| " /> |  | ||||||
| <meta property="og:type" content="article" /> |  | ||||||
| <meta property="og:url" content="https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/future/developer-guide/" /> |  | ||||||
| <meta property="article:published_time" content="2019-08-05T00:00:00+00:00"/> |  | ||||||
| <meta property="article:modified_time" content="2019-08-05T00:00:00+00:00"/><meta property="og:site_name" content="Jenkins Operator" /> |  | ||||||
| 
 |  | ||||||
| <meta itemprop="name" content="Developer Guide"> |  | ||||||
| <meta itemprop="description" content="Jenkins Operator for developers |  | ||||||
| "> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <meta itemprop="datePublished" content="2019-08-05T00:00:00+00:00" /> |  | ||||||
| <meta itemprop="dateModified" content="2019-08-05T00:00:00+00:00" /> |  | ||||||
| <meta itemprop="wordCount" content="544"> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <meta itemprop="keywords" content="" /> |  | ||||||
| <meta name="twitter:card" content="summary"/> |  | ||||||
| <meta name="twitter:title" content="Developer Guide"/> |  | ||||||
| <meta name="twitter:description" content="Jenkins Operator for developers |  | ||||||
| "/> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <link rel="preload" href="/kubernetes-operator/scss/main.min.76f9ae686f932b9aa67346ef8543e8a6b0302cb67aa119d21b053c31bc3f2448.css" as="style"> |  | ||||||
| <link href="/kubernetes-operator/scss/main.min.76f9ae686f932b9aa67346ef8543e8a6b0302cb67aa119d21b053c31bc3f2448.css" rel="stylesheet" integrity=""> |  | ||||||
| 
 |  | ||||||
| <script |  | ||||||
|   src="https://code.jquery.com/jquery-3.3.1.min.js" |  | ||||||
|   integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" |  | ||||||
|   crossorigin="anonymous"></script> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|     <title>Developer Guide | Jenkins Operator</title> |  | ||||||
|   </head> |  | ||||||
|   <body class="td-page"> |  | ||||||
|     <header> |  | ||||||
|        |  | ||||||
| <nav class="js-navbar-scroll navbar navbar-expand navbar-dark flex-column flex-md-row td-navbar"> |  | ||||||
| 	<a class="navbar-brand" href="/kubernetes-operator/"> |  | ||||||
| 		<img style="width: 32px; height: 32px; margin-right: 7.5px;" src="/kubernetes-operator/img/logo.svg"></img><span class="text-uppercase font-weight-bold">Jenkins Operator</span> |  | ||||||
| 	</a> |  | ||||||
| 	<div class="td-navbar-nav-scroll ml-md-auto" id="main_navbar"> |  | ||||||
| 		<ul class="navbar-nav mt-2 mt-lg-0"> |  | ||||||
| 			<li class="nav-item mr-4 mb-2 mb-lg-0"> |  | ||||||
| 				<a class="nav-link" href="/kubernetes-operator/about"><span>What's the Jenkins Operator?</span></a> |  | ||||||
|             </li> |  | ||||||
|             <li class="nav-item mr-4 mb-2 mb-lg-0"> |  | ||||||
|                 <a class="nav-link" href="/kubernetes-operator/docs"><span>Documentation</span></a> |  | ||||||
|             </li> |  | ||||||
| 			 |  | ||||||
| 		</ul> |  | ||||||
| 	</div> |  | ||||||
| 	<div class="navbar-nav d-none d-lg-block"> |  | ||||||
|  <input type="search" class="form-control td-search-input" placeholder=" Search this site…" aria-label="Search this site…" autocomplete="off"> |  | ||||||
| </div> |  | ||||||
| </nav> |  | ||||||
| 
 |  | ||||||
|     </header> |  | ||||||
|     <div class="container-fluid td-outer"> |  | ||||||
|       <div class="td-main"> |  | ||||||
|         <div class="row flex-xl-nowrap"> |  | ||||||
|           <div class="col-12 col-md-3 col-xl-2 td-sidebar d-print-none"> |  | ||||||
|              |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <div id="td-sidebar-menu" class="td-sidebar__inner"> |  | ||||||
|    |  | ||||||
|   <form class="td-sidebar__search d-flex align-items-center"> |  | ||||||
|      |  | ||||||
|  <input type="search" class="form-control td-search-input" placeholder=" Search this site…" aria-label="Search this site…" autocomplete="off"> |  | ||||||
| 
 |  | ||||||
|     <button class="btn btn-link td-sidebar__toggle d-md-none p-0 ml-3 fas fa-bars" type="button" data-toggle="collapse" data-target="#td-section-nav" aria-controls="td-docs-nav" aria-expanded="false" aria-label="Toggle section navigation"> |  | ||||||
|     </button> |  | ||||||
|   </form> |  | ||||||
|    |  | ||||||
|   <nav class="collapse td-sidebar-nav pt-2 pl-4" id="td-section-nav"> |  | ||||||
|      |  | ||||||
|      |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/" class="align-left pl-0 pr-2 td-sidebar-link td-sidebar-link__section">Documentation</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse show" id="kubernetes-operator-docs"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/installation/" class="align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section">Installation</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse " id="kubernetes-operator-docs-installation"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/how-it-works/" class="align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section">How it works</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse " id="kubernetes-operator-docs-how-it-works"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-how-it-works-architecture-and-design" href="/kubernetes-operator/docs/how-it-works/architecture-and-design/">Architecture and design</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-how-it-works-jenkins-docker-images" href="/kubernetes-operator/docs/how-it-works/jenkins-docker-images/">Jenkins Docker Images</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/getting-started/" class="align-left pl-0 pr-2 td-sidebar-link td-sidebar-link__section">Getting Started</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse show" id="kubernetes-operator-docs-getting-started"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/getting-started/future/" class="align-left pl-0 pr-2 active td-sidebar-link td-sidebar-link__section">Future (v0.3.x)</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse show" id="kubernetes-operator-docs-getting-started-future"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-deploy-jenkins" href="/kubernetes-operator/docs/getting-started/future/deploy-jenkins/">Deploy Jenkins</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-configuration" href="/kubernetes-operator/docs/getting-started/future/configuration/">Configuration</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-customization" href="/kubernetes-operator/docs/getting-started/future/customization/">Customization</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-aks" href="/kubernetes-operator/docs/getting-started/future/aks/">AKS</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-configure-backup-and-restore" href="/kubernetes-operator/docs/getting-started/future/configure-backup-and-restore/">Configure backup and restore</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-custom-backup-and-restore" href="/kubernetes-operator/docs/getting-started/future/custom-backup-and-restore/">Custom Backup and Restore Providers</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-diagnostics" href="/kubernetes-operator/docs/getting-started/future/diagnostics/">Diagnostics</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-schema" href="/kubernetes-operator/docs/getting-started/future/schema/">Schema</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page  active" id="m-kubernetes-operator-docs-getting-started-future-developer-guide" href="/kubernetes-operator/docs/getting-started/future/developer-guide/">Developer Guide</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/getting-started/latest/" class="align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section">Latest (v0.2.x)</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse " id="kubernetes-operator-docs-getting-started-latest"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-deploy-jenkins" href="/kubernetes-operator/docs/getting-started/latest/deploy-jenkins/">Deploy Jenkins</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-configuration" href="/kubernetes-operator/docs/getting-started/latest/configuration/">Configuration</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-customization" href="/kubernetes-operator/docs/getting-started/latest/customization/">Customization</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-aks" href="/kubernetes-operator/docs/getting-started/latest/aks/">AKS</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-configure-backup-and-restore" href="/kubernetes-operator/docs/getting-started/latest/configure-backup-and-restore/">Configure backup and restore</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-custom-backup-and-restore" href="/kubernetes-operator/docs/getting-started/latest/custom-backup-and-restore/">Custom Backup and Restore Providers</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-migration" href="/kubernetes-operator/docs/getting-started/latest/migration/">Migration from v0.1.x</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-diagnostics" href="/kubernetes-operator/docs/getting-started/latest/diagnostics/">Diagnostics</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-schema" href="/kubernetes-operator/docs/getting-started/latest/schema/">Schema</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-developer-guide" href="/kubernetes-operator/docs/getting-started/latest/developer-guide/">Developer Guide</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/getting-started/v0.1.x/" class="align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section">v0.1.x</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse " id="kubernetes-operator-docs-getting-started-v0-1-x"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-deploy-jenkins" href="/kubernetes-operator/docs/getting-started/v0.1.x/deploy-jenkins/">Deploy Jenkins</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-configuration" href="/kubernetes-operator/docs/getting-started/v0.1.x/configuration/">Configuration</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-customization" href="/kubernetes-operator/docs/getting-started/v0.1.x/customization/">Customization</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-aks" href="/kubernetes-operator/docs/getting-started/v0.1.x/aks/">AKS</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-configure-backup-and-restore" href="/kubernetes-operator/docs/getting-started/v0.1.x/configure-backup-and-restore/">Configure backup and restore</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-diagnostics" href="/kubernetes-operator/docs/getting-started/v0.1.x/diagnostics/">Diagnostics</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-scheme" href="/kubernetes-operator/docs/getting-started/v0.1.x/scheme/">Scheme</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-migration-guide-v1alpha1-to-v1alpha2" href="/kubernetes-operator/docs/getting-started/v0.1.x/migration-guide-v1alpha1-to-v1alpha2/">Migration guide from v1alpha1 to v1alpha2</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-developer-guide" href="/kubernetes-operator/docs/getting-started/v0.1.x/developer-guide/">Developer Guide</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/security/" class="align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section">Security</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse " id="kubernetes-operator-docs-security"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|   </nav> |  | ||||||
| </div> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|           </div> |  | ||||||
|           <div class="d-none d-xl-block col-xl-2 td-toc d-print-none"> |  | ||||||
|              |  | ||||||
|      |  | ||||||
|      |  | ||||||
|      |  | ||||||
|       <div class="td-page-meta ml-2 pb-1 pt-2 mb-0"> |  | ||||||
|            |  | ||||||
|            |  | ||||||
|            |  | ||||||
|         <a href="https://github.com/jenkinsci/kubernetes-operator/edit/master/website/content/en/docs/Getting%20Started/future/developer-guide.md" target="_blank"><i class="fa fa-edit fa-fw"></i> Edit this page</a> |  | ||||||
|         <a href="https://github.com/jenkinsci/kubernetes-operator/issues/new?title=Developer%20Guide" target="_blank"><i class="fab fa-github fa-fw"></i> Create documentation issue</a> |  | ||||||
|            |  | ||||||
|                |  | ||||||
|               <a href="https://github.com/jenkinsci/kubernetes-operator/issues/new" target="_blank"><i class="fas fa-tasks fa-fw"></i> Create project issue</a> |  | ||||||
|            |  | ||||||
|       </div> |  | ||||||
|      |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <nav id="TableOfContents"> |  | ||||||
| <ul> |  | ||||||
| <li> |  | ||||||
| <ul> |  | ||||||
| <li><a href="#prerequisites">Prerequisites</a></li> |  | ||||||
| <li><a href="#clone-repository-and-download-dependencies">Clone repository and download dependencies</a></li> |  | ||||||
| <li><a href="#build-and-run-with-a-minikube">Build and run with a minikube</a></li> |  | ||||||
| <li><a href="#build-and-run-with-a-remote-kubernetes-cluster">Build and run with a remote Kubernetes cluster</a></li> |  | ||||||
| <li><a href="#testing">Testing</a> |  | ||||||
| <ul> |  | ||||||
| <li><a href="#running-e2e-tests-on-linux">Running E2E tests on Linux</a></li> |  | ||||||
| <li><a href="#running-e2e-tests-on-macos">Running E2E tests on macOS</a></li> |  | ||||||
| <li><a href="#using-docker-instead-of-podman">Using Docker instead of podman</a></li> |  | ||||||
| </ul></li> |  | ||||||
| <li><a href="#tips-tricks">Tips & Tricks</a> |  | ||||||
| <ul> |  | ||||||
| <li><a href="#building-docker-image-on-minikube-for-e2e-tests">Building docker image on minikube (for e2e tests)</a></li> |  | ||||||
| <li><a href="#when-pkg-apis-jenkinsio-jenkins-types-go-has-changed">When <code>pkg/apis/jenkinsio/*/jenkins_types.go</code> has changed</a></li> |  | ||||||
| <li><a href="#getting-the-jenkins-url-and-basic-credentials">Getting the Jenkins URL and basic credentials</a></li> |  | ||||||
| </ul></li> |  | ||||||
| </ul></li> |  | ||||||
| <li><a href="#tools">Tools</a> |  | ||||||
| <ul> |  | ||||||
| <li><a href="#configure-environment-variables">Configure environment variables</a></li> |  | ||||||
| <li><a href="#goimports">goimports</a></li> |  | ||||||
| <li><a href="#golint">golint</a></li> |  | ||||||
| <li><a href="#checkmake">checkmake</a></li> |  | ||||||
| <li><a href="#staticcheck">staticcheck</a></li> |  | ||||||
| </ul></li> |  | ||||||
| </ul> |  | ||||||
| </nav> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|           </div> |  | ||||||
|           <main class="col-12 col-md-9 col-xl-8 pl-md-5" role="main"> |  | ||||||
|             <nav aria-label="breadcrumb" class="d-none d-md-block d-print-none"> |  | ||||||
| 	<ol class="breadcrumb spb-1"> |  | ||||||
| 		 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <li class="breadcrumb-item" > |  | ||||||
| 	<a href="https://jenkinsci.github.io/kubernetes-operator/docs/">Documentation</a> |  | ||||||
| </li> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <li class="breadcrumb-item" > |  | ||||||
| 	<a href="https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/">Getting Started</a> |  | ||||||
| </li> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <li class="breadcrumb-item" > |  | ||||||
| 	<a href="https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/future/">Future (v0.3.x)</a> |  | ||||||
| </li> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <li class="breadcrumb-item active" aria-current="page"> |  | ||||||
| 	<a href="https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/future/developer-guide/">Developer Guide</a> |  | ||||||
| </li> |  | ||||||
| 
 |  | ||||||
| 	</ol> |  | ||||||
| </nav	> |  | ||||||
| 
 |  | ||||||
|              |  | ||||||
| <div class="td-content"> |  | ||||||
| 	<h1>Developer Guide</h1> |  | ||||||
| 	<div class="lead">Jenkins Operator for developers</div> |  | ||||||
| 	 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <div class="pageinfo pageinfo-primary"> |  | ||||||
| <p>This document explains how to setup your development environment.</p> |  | ||||||
| 
 |  | ||||||
| </div> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <h2 id="prerequisites">Prerequisites</h2> |  | ||||||
| 
 |  | ||||||
| <ul> |  | ||||||
| <li><a href="https://github.com/operator-framework/operator-sdk" target="_blank">operator_sdk</a> version v0.8.1</li> |  | ||||||
| <li><a href="https://git-scm.com/downloads" target="_blank">git</a></li> |  | ||||||
| <li><a href="https://golang.org/dl/" target="_blank">go</a> version v1.12+</li> |  | ||||||
| <li><a href="install_dev_tools.md" target="_blank">goimports, golint, checkmake and staticcheck</a></li> |  | ||||||
| <li><a href="https://kubernetes.io/docs/tasks/tools/install-minikube/" target="_blank">minikube</a> version v1.1.0+ (preferred Hypervisor - <a href="https://www.virtualbox.org/wiki/Downloads" target="_blank">virtualbox</a>)</li> |  | ||||||
| <li><a href="https://docs.docker.com/install/" target="_blank">docker</a> version 17.03+</li> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
| <h2 id="clone-repository-and-download-dependencies">Clone repository and download dependencies</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">mkdir -p <span style="color:#000">$GOPATH</span>/src/github.com/jenkinsci |  | ||||||
| <span style="color:#204a87">cd</span> <span style="color:#000">$GOPATH</span>/src/github.com/jenkinsci/ |  | ||||||
| git clone git@github.com:jenkinsci/kubernetes-operator.git |  | ||||||
| <span style="color:#204a87">cd</span> kubernetes-operator |  | ||||||
| make go-dependencies</code></pre></div> |  | ||||||
| <h2 id="build-and-run-with-a-minikube">Build and run with a minikube</h2> |  | ||||||
| 
 |  | ||||||
| <p>Build and run <strong>Jenkins Operator</strong> locally:</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">make build minikube-run <span style="color:#000">OPERATOR_EXTRA_ARGS</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#4e9a06">'--jenkins-api-hostname=$(eval minikube ip) --jenkins-api-use-nodeport=true'</span></code></pre></div> |  | ||||||
| <p>Once minikube and <strong>Jenkins Operator</strong> are up and running, apply Jenkins custom resource:</p> |  | ||||||
| <div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">kubectl apply -f deploy/crds/jenkins_v1alpha2_jenkins_cr.yaml |  | ||||||
| kubectl get jenkins -o yaml |  | ||||||
| kubectl get po</code></pre></div> |  | ||||||
| <h2 id="build-and-run-with-a-remote-kubernetes-cluster">Build and run with a remote Kubernetes cluster</h2> |  | ||||||
| 
 |  | ||||||
| <p>You can also run the controller locally and make it listen to a remote Kubernetes server.</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">make run <span style="color:#000">NAMESPACE</span><span style="color:#ce5c00;font-weight:bold">=</span>default <span style="color:#000">KUBECTL_CONTEXT</span><span style="color:#ce5c00;font-weight:bold">=</span>remote-k8s <span style="color:#000">OPERATOR_EXTRA_ARGS</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#4e9a06">'--kubeconfig ~/.kube/config'</span></code></pre></div> |  | ||||||
| <p>Once minikube and <strong>Jenkins Operator</strong> are up and running, apply Jenkins custom resource:</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 --context remote-k8s --namespace default apply -f deploy/crds/jenkins_v1alpha2_jenkins_cr.yaml |  | ||||||
| kubectl --context remote-k8s --namespace default get jenkins -o yaml |  | ||||||
| kubectl --context remote-k8s --namespace default get po</code></pre></div> |  | ||||||
| <h2 id="testing">Testing</h2> |  | ||||||
| 
 |  | ||||||
| <p>Run unit tests:</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">make test</code></pre></div> |  | ||||||
| <h3 id="running-e2e-tests-on-linux">Running E2E tests on Linux</h3> |  | ||||||
| 
 |  | ||||||
| <p>Run e2e tests with 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">make minikube-start |  | ||||||
| <span style="color:#204a87">eval</span> <span style="color:#204a87;font-weight:bold">$(</span>minikube docker-env<span style="color:#204a87;font-weight:bold">)</span> |  | ||||||
| make build e2e <span style="color:#000">config</span><span style="color:#ce5c00;font-weight:bold">=</span>config.minikube.env <span style="color:#000">CONTAINER_RUNTIME</span><span style="color:#ce5c00;font-weight:bold">=</span>podman</code></pre></div> |  | ||||||
| <p><code>config.minikube.env</code> is the E2E test profile which provides all connection info to operator to run on minikube.</p> |  | ||||||
| 
 |  | ||||||
| <p>Run the specific e2e test:</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">make build e2e <span style="color:#000">E2E_TEST_SELECTOR</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#4e9a06">'^TestConfiguration$'</span> <span style="color:#000">config</span><span style="color:#ce5c00;font-weight:bold">=</span>config.minikube.env <span style="color:#000">CONTAINER_RUNTIME</span><span style="color:#ce5c00;font-weight:bold">=</span>podman</code></pre></div> |  | ||||||
| <p>If you want to run E2E tests on CRC (Code Ready Containers by OpenShift), you should use <code>config.crc.env</code> profile instead of <code>config.minikube.env</code>. |  | ||||||
| If you have some trouble with <code>podman</code> (for example building) then check <a href="#using-docker-instead-of-podman">how to use docker instead of podman</a>.</p> |  | ||||||
| 
 |  | ||||||
| <h3 id="running-e2e-tests-on-macos">Running E2E tests on macOS</h3> |  | ||||||
| 
 |  | ||||||
| <p>At first, you need to start 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">$ make minikube-start |  | ||||||
| $ <span style="color:#204a87">eval</span> <span style="color:#204a87;font-weight:bold">$(</span>minikube docker-env<span style="color:#204a87;font-weight:bold">)</span> </code></pre></div> |  | ||||||
| <p>Build a Docker image inside the provided Linux container by:</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">$ make indocker</code></pre></div> |  | ||||||
| <p>Build <strong>Jenkins Operator</strong> inside a container using:</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">$ make build</code></pre></div> |  | ||||||
| <p>Then exit the container and run:</p> |  | ||||||
| 
 |  | ||||||
| <pre><code>make e2e config=config.minikube.env |  | ||||||
| </code></pre> |  | ||||||
| 
 |  | ||||||
| <p>or using <code>crc</code> as cluster software:</p> |  | ||||||
| 
 |  | ||||||
| <pre><code>make e2e config=config.crc.env |  | ||||||
| </code></pre> |  | ||||||
| 
 |  | ||||||
| <h3 id="using-docker-instead-of-podman">Using Docker instead of podman</h3> |  | ||||||
| 
 |  | ||||||
| <p>If you have trouble with building image using the <code>podman</code>, you can set additional flag <code>IMAGE_PULL_MODE</code> to pull image from the organization.</p> |  | ||||||
| 
 |  | ||||||
| <p>At first, you need to edit <code>config.base.env</code> and change the <code>DOCKER_ORGANIZATION</code> to your <a href="https://hub.docker.com/" target="_blank">Docker Hub</a> account/organization. |  | ||||||
| After this change the <code>IMAGE_PULL_MODE</code> to <code>remote</code>. It will setup the <code>Makefile</code> goal to pull Docker image from registry. |  | ||||||
| Then you need to pull image from your repository:</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">$ make container-runtime-build container-runtime-snapshot-push</code></pre></div> |  | ||||||
| <p>When image will be uploaded to repository, you can now write this command to run E2E tests:</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">$ make e2e <span style="color:#000">E2E_TEST_SELECTOR</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#4e9a06">'^TestConfiguration$'</span> <span style="color:#000">config</span><span style="color:#ce5c00;font-weight:bold">=</span>config.crc.env</code></pre></div> |  | ||||||
| <h2 id="tips-tricks">Tips & Tricks</h2> |  | ||||||
| 
 |  | ||||||
| <h3 id="building-docker-image-on-minikube-for-e2e-tests">Building docker image on minikube (for e2e tests)</h3> |  | ||||||
| 
 |  | ||||||
| <p>To be able to work with the docker daemon on <code>minikube</code> machine run the following command before building an image:</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"><span style="color:#204a87">eval</span> <span style="color:#204a87;font-weight:bold">$(</span>minikube docker-env<span style="color:#204a87;font-weight:bold">)</span></code></pre></div> |  | ||||||
| <h3 id="when-pkg-apis-jenkinsio-jenkins-types-go-has-changed">When <code>pkg/apis/jenkinsio/*/jenkins_types.go</code> has changed</h3> |  | ||||||
| 
 |  | ||||||
| <p>Run:</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">make deepcopy-gen</code></pre></div> |  | ||||||
| <h3 id="getting-the-jenkins-url-and-basic-credentials">Getting the Jenkins URL and basic credentials</h3> |  | ||||||
| <div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">minikube service jenkins-operator-http-<cr_name> --url |  | ||||||
| kubectl get secret jenkins-operator-credentials-<cr_name> -o <span style="color:#4e9a06">'jsonpath={.data.user}'</span> <span style="color:#000;font-weight:bold">|</span> base64 -d |  | ||||||
| kubectl get secret jenkins-operator-credentials-<cr_name> -o <span style="color:#4e9a06">'jsonpath={.data.password}'</span> <span style="color:#000;font-weight:bold">|</span> base64 -d</code></pre></div> |  | ||||||
| <h1 id="tools">Tools</h1> |  | ||||||
| 
 |  | ||||||
| <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> |  | ||||||
| 
 |  | ||||||
| 	 |  | ||||||
| 	 |  | ||||||
| 	<div class="text-muted mt-5 pt-3 border-top">Last modified August 5, 2019 |  | ||||||
| </div> |  | ||||||
| </div> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|           </main> |  | ||||||
|         </div> |  | ||||||
|       </div> |  | ||||||
|        |  | ||||||
| <footer class="bg-dark py-5 row d-print-none"> |  | ||||||
|   <div class="container-fluid mx-sm-5"> |  | ||||||
|     <div class="row"> |  | ||||||
|       <div class="col-6 col-sm-4 text-xs-center order-sm-2"> |  | ||||||
|          |  | ||||||
|       </div> |  | ||||||
|       <div class="col-6 col-sm-4 text-right text-xs-center order-sm-3"> |  | ||||||
|          |  | ||||||
|       </div> |  | ||||||
|       <div class="col-12 col-sm-4 text-center py-2 order-sm-2"> |  | ||||||
|         <small class="text-white">© 2019 VirtusLab All Rights Reserved</small> |  | ||||||
|          |  | ||||||
| 	 |  | ||||||
| 		<p class="mt-2"><a href="/kubernetes-operator/about/">What's the Jenkins Operator?</a></p> |  | ||||||
| 	 |  | ||||||
|       </div> |  | ||||||
|     </div> |  | ||||||
|   </div> |  | ||||||
| </footer> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|     </div> |  | ||||||
|      |  | ||||||
| <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script> |  | ||||||
| <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <script src="/kubernetes-operator/js/main.min.15ba3b50c3bd013e1b26793d1a59390ea2e0f21481eafe4022de05a44eba88fc.js" integrity="sha256-Fbo7UMO9AT4bJnk9Glk5DqLg8hSB6v5AIt4FpE66iPw="></script> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|   </body> |  | ||||||
| </html> |  | ||||||
|  | @ -1,752 +0,0 @@ | ||||||
| <!doctype html> |  | ||||||
| <html lang="en" class="no-js"> |  | ||||||
|   <head> |  | ||||||
|     <meta charset="utf-8"> |  | ||||||
| <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> |  | ||||||
| <meta name="generator" content="Hugo 0.55.6" /> |  | ||||||
| 
 |  | ||||||
| <META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW"> |  | ||||||
| 
 |  | ||||||
| <link rel="alternate" type="application/rss+xml" href="https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/future/index.xml"> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <link rel="shortcut icon" href="/favicons/favicon.ico" > |  | ||||||
| <link rel="apple-touch-icon" href="/kubernetes-operator/favicons/apple-touch-icon-180x180.png" sizes="180x180"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/favicon-16x16.png" sizes="16x16"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/favicon-32x32.png" sizes="32x32"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/android-36x36.png" sizes="36x36"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/android-48x48.png" sizes="48x48"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/android-72x72.png" sizes="72x72"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/android-96x196.png" sizes="96x196"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/android-144x144.png" sizes="144x144"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/android-192x192.png"sizes="192x192"> |  | ||||||
| 
 |  | ||||||
| <title>Future (v0.3.x) | Jenkins Operator</title><meta property="og:title" content="Future (v0.3.x)" /> |  | ||||||
| <meta property="og:description" content="How to work with jenkins-operator latest version |  | ||||||
| " /> |  | ||||||
| <meta property="og:type" content="website" /> |  | ||||||
| <meta property="og:url" content="https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/future/" /> |  | ||||||
| 
 |  | ||||||
| <meta property="og:updated_time" content="2019-08-05T00:00:00+00:00"/><meta property="og:site_name" content="Jenkins Operator" /> |  | ||||||
| 
 |  | ||||||
| <meta itemprop="name" content="Future (v0.3.x)"> |  | ||||||
| <meta itemprop="description" content="How to work with jenkins-operator latest version |  | ||||||
| "> |  | ||||||
| 
 |  | ||||||
| <meta name="twitter:card" content="summary"/> |  | ||||||
| <meta name="twitter:title" content="Future (v0.3.x)"/> |  | ||||||
| <meta name="twitter:description" content="How to work with jenkins-operator latest version |  | ||||||
| "/> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <link rel="preload" href="/kubernetes-operator/scss/main.min.76f9ae686f932b9aa67346ef8543e8a6b0302cb67aa119d21b053c31bc3f2448.css" as="style"> |  | ||||||
| <link href="/kubernetes-operator/scss/main.min.76f9ae686f932b9aa67346ef8543e8a6b0302cb67aa119d21b053c31bc3f2448.css" rel="stylesheet" integrity=""> |  | ||||||
| 
 |  | ||||||
| <script |  | ||||||
|   src="https://code.jquery.com/jquery-3.3.1.min.js" |  | ||||||
|   integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" |  | ||||||
|   crossorigin="anonymous"></script> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|     <title>Future (v0.3.x) | Jenkins Operator</title> |  | ||||||
|   </head> |  | ||||||
|   <body class="td-section"> |  | ||||||
|     <header> |  | ||||||
|        |  | ||||||
| <nav class="js-navbar-scroll navbar navbar-expand navbar-dark flex-column flex-md-row td-navbar"> |  | ||||||
| 	<a class="navbar-brand" href="/kubernetes-operator/"> |  | ||||||
| 		<img style="width: 32px; height: 32px; margin-right: 7.5px;" src="/kubernetes-operator/img/logo.svg"></img><span class="text-uppercase font-weight-bold">Jenkins Operator</span> |  | ||||||
| 	</a> |  | ||||||
| 	<div class="td-navbar-nav-scroll ml-md-auto" id="main_navbar"> |  | ||||||
| 		<ul class="navbar-nav mt-2 mt-lg-0"> |  | ||||||
| 			<li class="nav-item mr-4 mb-2 mb-lg-0"> |  | ||||||
| 				<a class="nav-link" href="/kubernetes-operator/about"><span>What's the Jenkins Operator?</span></a> |  | ||||||
|             </li> |  | ||||||
|             <li class="nav-item mr-4 mb-2 mb-lg-0"> |  | ||||||
|                 <a class="nav-link" href="/kubernetes-operator/docs"><span>Documentation</span></a> |  | ||||||
|             </li> |  | ||||||
| 			 |  | ||||||
| 		</ul> |  | ||||||
| 	</div> |  | ||||||
| 	<div class="navbar-nav d-none d-lg-block"> |  | ||||||
|  <input type="search" class="form-control td-search-input" placeholder=" Search this site…" aria-label="Search this site…" autocomplete="off"> |  | ||||||
| </div> |  | ||||||
| </nav> |  | ||||||
| 
 |  | ||||||
|     </header> |  | ||||||
|     <div class="container-fluid td-outer"> |  | ||||||
|       <div class="td-main"> |  | ||||||
|         <div class="row flex-xl-nowrap"> |  | ||||||
|           <div class="col-12 col-md-3 col-xl-2 td-sidebar d-print-none"> |  | ||||||
|              |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <div id="td-sidebar-menu" class="td-sidebar__inner"> |  | ||||||
|    |  | ||||||
|   <form class="td-sidebar__search d-flex align-items-center"> |  | ||||||
|      |  | ||||||
|  <input type="search" class="form-control td-search-input" placeholder=" Search this site…" aria-label="Search this site…" autocomplete="off"> |  | ||||||
| 
 |  | ||||||
|     <button class="btn btn-link td-sidebar__toggle d-md-none p-0 ml-3 fas fa-bars" type="button" data-toggle="collapse" data-target="#td-section-nav" aria-controls="td-docs-nav" aria-expanded="false" aria-label="Toggle section navigation"> |  | ||||||
|     </button> |  | ||||||
|   </form> |  | ||||||
|    |  | ||||||
|   <nav class="collapse td-sidebar-nav pt-2 pl-4" id="td-section-nav"> |  | ||||||
|      |  | ||||||
|      |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/" class="align-left pl-0 pr-2 td-sidebar-link td-sidebar-link__section">Documentation</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse show" id="kubernetes-operator-docs"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/installation/" class="align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section">Installation</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse " id="kubernetes-operator-docs-installation"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/how-it-works/" class="align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section">How it works</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse " id="kubernetes-operator-docs-how-it-works"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-how-it-works-architecture-and-design" href="/kubernetes-operator/docs/how-it-works/architecture-and-design/">Architecture and design</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-how-it-works-jenkins-docker-images" href="/kubernetes-operator/docs/how-it-works/jenkins-docker-images/">Jenkins Docker Images</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/getting-started/" class="align-left pl-0 pr-2 td-sidebar-link td-sidebar-link__section">Getting Started</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse show" id="kubernetes-operator-docs-getting-started"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/getting-started/future/" class="align-left pl-0 pr-2 active td-sidebar-link td-sidebar-link__section">Future (v0.3.x)</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse show" id="kubernetes-operator-docs-getting-started-future"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-deploy-jenkins" href="/kubernetes-operator/docs/getting-started/future/deploy-jenkins/">Deploy Jenkins</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-configuration" href="/kubernetes-operator/docs/getting-started/future/configuration/">Configuration</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-customization" href="/kubernetes-operator/docs/getting-started/future/customization/">Customization</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-aks" href="/kubernetes-operator/docs/getting-started/future/aks/">AKS</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-configure-backup-and-restore" href="/kubernetes-operator/docs/getting-started/future/configure-backup-and-restore/">Configure backup and restore</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-custom-backup-and-restore" href="/kubernetes-operator/docs/getting-started/future/custom-backup-and-restore/">Custom Backup and Restore Providers</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-diagnostics" href="/kubernetes-operator/docs/getting-started/future/diagnostics/">Diagnostics</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-schema" href="/kubernetes-operator/docs/getting-started/future/schema/">Schema</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-developer-guide" href="/kubernetes-operator/docs/getting-started/future/developer-guide/">Developer Guide</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/getting-started/latest/" class="align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section">Latest (v0.2.x)</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse " id="kubernetes-operator-docs-getting-started-latest"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-deploy-jenkins" href="/kubernetes-operator/docs/getting-started/latest/deploy-jenkins/">Deploy Jenkins</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-configuration" href="/kubernetes-operator/docs/getting-started/latest/configuration/">Configuration</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-customization" href="/kubernetes-operator/docs/getting-started/latest/customization/">Customization</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-aks" href="/kubernetes-operator/docs/getting-started/latest/aks/">AKS</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-configure-backup-and-restore" href="/kubernetes-operator/docs/getting-started/latest/configure-backup-and-restore/">Configure backup and restore</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-custom-backup-and-restore" href="/kubernetes-operator/docs/getting-started/latest/custom-backup-and-restore/">Custom Backup and Restore Providers</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-migration" href="/kubernetes-operator/docs/getting-started/latest/migration/">Migration from v0.1.x</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-diagnostics" href="/kubernetes-operator/docs/getting-started/latest/diagnostics/">Diagnostics</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-schema" href="/kubernetes-operator/docs/getting-started/latest/schema/">Schema</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-developer-guide" href="/kubernetes-operator/docs/getting-started/latest/developer-guide/">Developer Guide</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/getting-started/v0.1.x/" class="align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section">v0.1.x</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse " id="kubernetes-operator-docs-getting-started-v0-1-x"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-deploy-jenkins" href="/kubernetes-operator/docs/getting-started/v0.1.x/deploy-jenkins/">Deploy Jenkins</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-configuration" href="/kubernetes-operator/docs/getting-started/v0.1.x/configuration/">Configuration</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-customization" href="/kubernetes-operator/docs/getting-started/v0.1.x/customization/">Customization</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-aks" href="/kubernetes-operator/docs/getting-started/v0.1.x/aks/">AKS</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-configure-backup-and-restore" href="/kubernetes-operator/docs/getting-started/v0.1.x/configure-backup-and-restore/">Configure backup and restore</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-diagnostics" href="/kubernetes-operator/docs/getting-started/v0.1.x/diagnostics/">Diagnostics</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-scheme" href="/kubernetes-operator/docs/getting-started/v0.1.x/scheme/">Scheme</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-migration-guide-v1alpha1-to-v1alpha2" href="/kubernetes-operator/docs/getting-started/v0.1.x/migration-guide-v1alpha1-to-v1alpha2/">Migration guide from v1alpha1 to v1alpha2</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-developer-guide" href="/kubernetes-operator/docs/getting-started/v0.1.x/developer-guide/">Developer Guide</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/security/" class="align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section">Security</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse " id="kubernetes-operator-docs-security"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|   </nav> |  | ||||||
| </div> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|           </div> |  | ||||||
|           <div class="d-none d-xl-block col-xl-2 td-toc d-print-none"> |  | ||||||
|              |  | ||||||
|      |  | ||||||
|      |  | ||||||
|      |  | ||||||
|       <div class="td-page-meta ml-2 pb-1 pt-2 mb-0"> |  | ||||||
|            |  | ||||||
|            |  | ||||||
|            |  | ||||||
|         <a href="https://github.com/jenkinsci/kubernetes-operator/edit/master/website/content/en/docs/Getting%20Started/future/_index.md" target="_blank"><i class="fa fa-edit fa-fw"></i> Edit this page</a> |  | ||||||
|         <a href="https://github.com/jenkinsci/kubernetes-operator/issues/new?title=Future%20%28v0.3.x%29" target="_blank"><i class="fab fa-github fa-fw"></i> Create documentation issue</a> |  | ||||||
|            |  | ||||||
|                |  | ||||||
|               <a href="https://github.com/jenkinsci/kubernetes-operator/issues/new" target="_blank"><i class="fas fa-tasks fa-fw"></i> Create project issue</a> |  | ||||||
|            |  | ||||||
|       </div> |  | ||||||
|      |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|           </div> |  | ||||||
|           <main class="col-12 col-md-9 col-xl-8 pl-md-5" role="main"> |  | ||||||
|             <nav aria-label="breadcrumb" class="d-none d-md-block d-print-none"> |  | ||||||
| 	<ol class="breadcrumb spb-1"> |  | ||||||
| 		 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <li class="breadcrumb-item" > |  | ||||||
| 	<a href="https://jenkinsci.github.io/kubernetes-operator/docs/">Documentation</a> |  | ||||||
| </li> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <li class="breadcrumb-item" > |  | ||||||
| 	<a href="https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/">Getting Started</a> |  | ||||||
| </li> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <li class="breadcrumb-item active" aria-current="page"> |  | ||||||
| 	<a href="https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/future/">Future (v0.3.x)</a> |  | ||||||
| </li> |  | ||||||
| 
 |  | ||||||
| 	</ol> |  | ||||||
| </nav	> |  | ||||||
| 
 |  | ||||||
|              |  | ||||||
| <div class="td-content"> |  | ||||||
| 	<h1>Future (v0.3.x)</h1> |  | ||||||
| 	<div class="lead">How to work with jenkins-operator latest version</div> |  | ||||||
| 	 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <div class="pageinfo pageinfo-primary"> |  | ||||||
| <p>This document describes a getting started guide for <strong>Jenkins Operator</strong> <code>v0.3.x</code> and an additional configuration.</p> |  | ||||||
| 
 |  | ||||||
| </div> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <h2 id="first-steps">First Steps</h2> |  | ||||||
| 
 |  | ||||||
| <p>Prepare your Kubernetes cluster and set up your <code>kubectl</code> access.</p> |  | ||||||
| 
 |  | ||||||
| <p>Once you have running Kubernetes cluster you can focus on installing <strong>Jenkins Operator</strong> according to the <a href="/docs/installation/">Installation</a> guide.</p> |  | ||||||
| 
 |  | ||||||
|         <div class="section-index"> |  | ||||||
|      |  | ||||||
|      |  | ||||||
|      |  | ||||||
|      |  | ||||||
|     <hr class="panel-line"> |  | ||||||
|          |  | ||||||
|              |  | ||||||
|          |  | ||||||
|              |  | ||||||
|                 <div class="entry"> |  | ||||||
|                     <h5> |  | ||||||
|                         <a href="https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/future/deploy-jenkins/">Deploy Jenkins</a> |  | ||||||
|                     </h5> |  | ||||||
|                     <p>Deploy production ready Jenkins Operator manifest |  | ||||||
| </p> |  | ||||||
|                 </div> |  | ||||||
|              |  | ||||||
|          |  | ||||||
|              |  | ||||||
|          |  | ||||||
|              |  | ||||||
|          |  | ||||||
|              |  | ||||||
|          |  | ||||||
|              |  | ||||||
|                 <div class="entry"> |  | ||||||
|                     <h5> |  | ||||||
|                         <a href="https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/future/configuration/">Configuration</a> |  | ||||||
|                     </h5> |  | ||||||
|                     <p>How to configure Jenkins with Operator |  | ||||||
| </p> |  | ||||||
|                 </div> |  | ||||||
|              |  | ||||||
|          |  | ||||||
|              |  | ||||||
|          |  | ||||||
|              |  | ||||||
|          |  | ||||||
|              |  | ||||||
|                 <div class="entry"> |  | ||||||
|                     <h5> |  | ||||||
|                         <a href="https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/future/customization/">Customization</a> |  | ||||||
|                     </h5> |  | ||||||
|                     <p>How to customize Jenkins |  | ||||||
| </p> |  | ||||||
|                 </div> |  | ||||||
|              |  | ||||||
|          |  | ||||||
|              |  | ||||||
|          |  | ||||||
|              |  | ||||||
|          |  | ||||||
|              |  | ||||||
|          |  | ||||||
|              |  | ||||||
|                 <div class="entry"> |  | ||||||
|                     <h5> |  | ||||||
|                         <a href="https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/future/aks/">AKS</a> |  | ||||||
|                     </h5> |  | ||||||
|                     <p>Additional configuration for Azure Kubernetes Service |  | ||||||
| </p> |  | ||||||
|                 </div> |  | ||||||
|              |  | ||||||
|          |  | ||||||
|              |  | ||||||
|          |  | ||||||
|              |  | ||||||
|          |  | ||||||
|              |  | ||||||
|                 <div class="entry"> |  | ||||||
|                     <h5> |  | ||||||
|                         <a href="https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/future/configure-backup-and-restore/">Configure backup and restore</a> |  | ||||||
|                     </h5> |  | ||||||
|                     <p>Prevent loss of job history |  | ||||||
| </p> |  | ||||||
|                 </div> |  | ||||||
|              |  | ||||||
|          |  | ||||||
|              |  | ||||||
|          |  | ||||||
|              |  | ||||||
|          |  | ||||||
|              |  | ||||||
|                 <div class="entry"> |  | ||||||
|                     <h5> |  | ||||||
|                         <a href="https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/future/custom-backup-and-restore/">Custom Backup and Restore Providers</a> |  | ||||||
|                     </h5> |  | ||||||
|                     <p>Custom backup and restore provider |  | ||||||
| </p> |  | ||||||
|                 </div> |  | ||||||
|              |  | ||||||
|          |  | ||||||
|              |  | ||||||
|          |  | ||||||
|              |  | ||||||
|          |  | ||||||
|              |  | ||||||
|          |  | ||||||
|              |  | ||||||
|          |  | ||||||
|              |  | ||||||
|          |  | ||||||
|              |  | ||||||
|          |  | ||||||
|              |  | ||||||
|          |  | ||||||
|              |  | ||||||
|          |  | ||||||
|              |  | ||||||
|                 <div class="entry"> |  | ||||||
|                     <h5> |  | ||||||
|                         <a href="https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/future/diagnostics/">Diagnostics</a> |  | ||||||
|                     </h5> |  | ||||||
|                     <p>How to deal with Jenkins Operator problems |  | ||||||
| </p> |  | ||||||
|                 </div> |  | ||||||
|              |  | ||||||
|          |  | ||||||
|              |  | ||||||
|          |  | ||||||
|              |  | ||||||
|          |  | ||||||
|              |  | ||||||
|                 <div class="entry"> |  | ||||||
|                     <h5> |  | ||||||
|                         <a href="https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/future/schema/">Schema</a> |  | ||||||
|                     </h5> |  | ||||||
|                     <p>API Schema definitions for Jenkins CRD |  | ||||||
| </p> |  | ||||||
|                 </div> |  | ||||||
|              |  | ||||||
|          |  | ||||||
|              |  | ||||||
|          |  | ||||||
|              |  | ||||||
|          |  | ||||||
|              |  | ||||||
|          |  | ||||||
|              |  | ||||||
|          |  | ||||||
|              |  | ||||||
|                 <div class="entry"> |  | ||||||
|                     <h5> |  | ||||||
|                         <a href="https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/future/developer-guide/">Developer Guide</a> |  | ||||||
|                     </h5> |  | ||||||
|                     <p>Jenkins Operator for developers |  | ||||||
| </p> |  | ||||||
|                 </div> |  | ||||||
|              |  | ||||||
|          |  | ||||||
|              |  | ||||||
|          |  | ||||||
|              |  | ||||||
|          |  | ||||||
|      |  | ||||||
| </div> |  | ||||||
| 
 |  | ||||||
| 	 |  | ||||||
| 	 |  | ||||||
| 	<div class="text-muted mt-5 pt-3 border-top">Last modified August 5, 2019 |  | ||||||
| </div> |  | ||||||
| </div> |  | ||||||
| 
 |  | ||||||
|           </main> |  | ||||||
|         </div> |  | ||||||
|       </div> |  | ||||||
|        |  | ||||||
| <footer class="bg-dark py-5 row d-print-none"> |  | ||||||
|   <div class="container-fluid mx-sm-5"> |  | ||||||
|     <div class="row"> |  | ||||||
|       <div class="col-6 col-sm-4 text-xs-center order-sm-2"> |  | ||||||
|          |  | ||||||
|       </div> |  | ||||||
|       <div class="col-6 col-sm-4 text-right text-xs-center order-sm-3"> |  | ||||||
|          |  | ||||||
|       </div> |  | ||||||
|       <div class="col-12 col-sm-4 text-center py-2 order-sm-2"> |  | ||||||
|         <small class="text-white">© 2019 VirtusLab All Rights Reserved</small> |  | ||||||
|          |  | ||||||
| 	 |  | ||||||
| 		<p class="mt-2"><a href="/kubernetes-operator/about/">What's the Jenkins Operator?</a></p> |  | ||||||
| 	 |  | ||||||
|       </div> |  | ||||||
|     </div> |  | ||||||
|   </div> |  | ||||||
| </footer> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|     </div> |  | ||||||
|      |  | ||||||
| <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script> |  | ||||||
| <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <script src="/kubernetes-operator/js/main.min.15ba3b50c3bd013e1b26793d1a59390ea2e0f21481eafe4022de05a44eba88fc.js" integrity="sha256-Fbo7UMO9AT4bJnk9Glk5DqLg8hSB6v5AIt4FpE66iPw="></script> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|   </body> |  | ||||||
| </html> |  | ||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							|  | @ -1,750 +0,0 @@ | ||||||
| <!doctype html> |  | ||||||
| <html lang="en" class="no-js"> |  | ||||||
|   <head> |  | ||||||
|     <meta charset="utf-8"> |  | ||||||
| <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> |  | ||||||
| <meta name="generator" content="Hugo 0.55.6" /> |  | ||||||
| 
 |  | ||||||
| <META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW"> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <link rel="shortcut icon" href="/favicons/favicon.ico" > |  | ||||||
| <link rel="apple-touch-icon" href="/kubernetes-operator/favicons/apple-touch-icon-180x180.png" sizes="180x180"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/favicon-16x16.png" sizes="16x16"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/favicon-32x32.png" sizes="32x32"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/android-36x36.png" sizes="36x36"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/android-48x48.png" sizes="48x48"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/android-72x72.png" sizes="72x72"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/android-96x196.png" sizes="96x196"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/android-144x144.png" sizes="144x144"> |  | ||||||
| <link rel="icon" type="image/png" href="/kubernetes-operator/favicons/android-192x192.png"sizes="192x192"> |  | ||||||
| 
 |  | ||||||
| <title>Developer Guide | Jenkins Operator</title><meta property="og:title" content="Developer Guide" /> |  | ||||||
| <meta property="og:description" content="Jenkins Operator for developers |  | ||||||
| " /> |  | ||||||
| <meta property="og:type" content="article" /> |  | ||||||
| <meta property="og:url" content="https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/developer-guide/" /> |  | ||||||
| <meta property="article:published_time" content="2019-08-05T00:00:00+00:00"/> |  | ||||||
| <meta property="article:modified_time" content="2019-08-05T00:00:00+00:00"/><meta property="og:site_name" content="Jenkins Operator" /> |  | ||||||
| 
 |  | ||||||
| <meta itemprop="name" content="Developer Guide"> |  | ||||||
| <meta itemprop="description" content="Jenkins Operator for developers |  | ||||||
| "> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <meta itemprop="datePublished" content="2019-08-05T00:00:00+00:00" /> |  | ||||||
| <meta itemprop="dateModified" content="2019-08-05T00:00:00+00:00" /> |  | ||||||
| <meta itemprop="wordCount" content="373"> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <meta itemprop="keywords" content="" /> |  | ||||||
| <meta name="twitter:card" content="summary"/> |  | ||||||
| <meta name="twitter:title" content="Developer Guide"/> |  | ||||||
| <meta name="twitter:description" content="Jenkins Operator for developers |  | ||||||
| "/> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <link rel="preload" href="/kubernetes-operator/scss/main.min.76f9ae686f932b9aa67346ef8543e8a6b0302cb67aa119d21b053c31bc3f2448.css" as="style"> |  | ||||||
| <link href="/kubernetes-operator/scss/main.min.76f9ae686f932b9aa67346ef8543e8a6b0302cb67aa119d21b053c31bc3f2448.css" rel="stylesheet" integrity=""> |  | ||||||
| 
 |  | ||||||
| <script |  | ||||||
|   src="https://code.jquery.com/jquery-3.3.1.min.js" |  | ||||||
|   integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" |  | ||||||
|   crossorigin="anonymous"></script> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|     <title>Developer Guide | Jenkins Operator</title> |  | ||||||
|   </head> |  | ||||||
|   <body class="td-page"> |  | ||||||
|     <header> |  | ||||||
|        |  | ||||||
| <nav class="js-navbar-scroll navbar navbar-expand navbar-dark flex-column flex-md-row td-navbar"> |  | ||||||
| 	<a class="navbar-brand" href="/kubernetes-operator/"> |  | ||||||
| 		<img style="width: 32px; height: 32px; margin-right: 7.5px;" src="/kubernetes-operator/img/logo.svg"></img><span class="text-uppercase font-weight-bold">Jenkins Operator</span> |  | ||||||
| 	</a> |  | ||||||
| 	<div class="td-navbar-nav-scroll ml-md-auto" id="main_navbar"> |  | ||||||
| 		<ul class="navbar-nav mt-2 mt-lg-0"> |  | ||||||
| 			<li class="nav-item mr-4 mb-2 mb-lg-0"> |  | ||||||
| 				<a class="nav-link" href="/kubernetes-operator/about"><span>What's the Jenkins Operator?</span></a> |  | ||||||
|             </li> |  | ||||||
|             <li class="nav-item mr-4 mb-2 mb-lg-0"> |  | ||||||
|                 <a class="nav-link" href="/kubernetes-operator/docs"><span>Documentation</span></a> |  | ||||||
|             </li> |  | ||||||
| 			 |  | ||||||
| 		</ul> |  | ||||||
| 	</div> |  | ||||||
| 	<div class="navbar-nav d-none d-lg-block"> |  | ||||||
|  <input type="search" class="form-control td-search-input" placeholder=" Search this site…" aria-label="Search this site…" autocomplete="off"> |  | ||||||
| </div> |  | ||||||
| </nav> |  | ||||||
| 
 |  | ||||||
|     </header> |  | ||||||
|     <div class="container-fluid td-outer"> |  | ||||||
|       <div class="td-main"> |  | ||||||
|         <div class="row flex-xl-nowrap"> |  | ||||||
|           <div class="col-12 col-md-3 col-xl-2 td-sidebar d-print-none"> |  | ||||||
|              |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <div id="td-sidebar-menu" class="td-sidebar__inner"> |  | ||||||
|    |  | ||||||
|   <form class="td-sidebar__search d-flex align-items-center"> |  | ||||||
|      |  | ||||||
|  <input type="search" class="form-control td-search-input" placeholder=" Search this site…" aria-label="Search this site…" autocomplete="off"> |  | ||||||
| 
 |  | ||||||
|     <button class="btn btn-link td-sidebar__toggle d-md-none p-0 ml-3 fas fa-bars" type="button" data-toggle="collapse" data-target="#td-section-nav" aria-controls="td-docs-nav" aria-expanded="false" aria-label="Toggle section navigation"> |  | ||||||
|     </button> |  | ||||||
|   </form> |  | ||||||
|    |  | ||||||
|   <nav class="collapse td-sidebar-nav pt-2 pl-4" id="td-section-nav"> |  | ||||||
|      |  | ||||||
|      |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/" class="align-left pl-0 pr-2 td-sidebar-link td-sidebar-link__section">Documentation</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse show" id="kubernetes-operator-docs"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/installation/" class="align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section">Installation</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse " id="kubernetes-operator-docs-installation"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/how-it-works/" class="align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section">How it works</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse " id="kubernetes-operator-docs-how-it-works"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-how-it-works-architecture-and-design" href="/kubernetes-operator/docs/how-it-works/architecture-and-design/">Architecture and design</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-how-it-works-jenkins-docker-images" href="/kubernetes-operator/docs/how-it-works/jenkins-docker-images/">Jenkins Docker Images</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/getting-started/" class="align-left pl-0 pr-2 td-sidebar-link td-sidebar-link__section">Getting Started</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse show" id="kubernetes-operator-docs-getting-started"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/getting-started/future/" class="align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section">Future (v0.3.x)</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse " id="kubernetes-operator-docs-getting-started-future"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-deploy-jenkins" href="/kubernetes-operator/docs/getting-started/future/deploy-jenkins/">Deploy Jenkins</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-configuration" href="/kubernetes-operator/docs/getting-started/future/configuration/">Configuration</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-customization" href="/kubernetes-operator/docs/getting-started/future/customization/">Customization</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-aks" href="/kubernetes-operator/docs/getting-started/future/aks/">AKS</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-configure-backup-and-restore" href="/kubernetes-operator/docs/getting-started/future/configure-backup-and-restore/">Configure backup and restore</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-custom-backup-and-restore" href="/kubernetes-operator/docs/getting-started/future/custom-backup-and-restore/">Custom Backup and Restore Providers</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-diagnostics" href="/kubernetes-operator/docs/getting-started/future/diagnostics/">Diagnostics</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-schema" href="/kubernetes-operator/docs/getting-started/future/schema/">Schema</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-future-developer-guide" href="/kubernetes-operator/docs/getting-started/future/developer-guide/">Developer Guide</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/getting-started/latest/" class="align-left pl-0 pr-2 active td-sidebar-link td-sidebar-link__section">Latest (v0.2.x)</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse show" id="kubernetes-operator-docs-getting-started-latest"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-deploy-jenkins" href="/kubernetes-operator/docs/getting-started/latest/deploy-jenkins/">Deploy Jenkins</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-configuration" href="/kubernetes-operator/docs/getting-started/latest/configuration/">Configuration</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-customization" href="/kubernetes-operator/docs/getting-started/latest/customization/">Customization</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-aks" href="/kubernetes-operator/docs/getting-started/latest/aks/">AKS</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-configure-backup-and-restore" href="/kubernetes-operator/docs/getting-started/latest/configure-backup-and-restore/">Configure backup and restore</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-custom-backup-and-restore" href="/kubernetes-operator/docs/getting-started/latest/custom-backup-and-restore/">Custom Backup and Restore Providers</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-migration" href="/kubernetes-operator/docs/getting-started/latest/migration/">Migration from v0.1.x</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-diagnostics" href="/kubernetes-operator/docs/getting-started/latest/diagnostics/">Diagnostics</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-latest-schema" href="/kubernetes-operator/docs/getting-started/latest/schema/">Schema</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page  active" id="m-kubernetes-operator-docs-getting-started-latest-developer-guide" href="/kubernetes-operator/docs/getting-started/latest/developer-guide/">Developer Guide</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/getting-started/v0.1.x/" class="align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section">v0.1.x</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse " id="kubernetes-operator-docs-getting-started-v0-1-x"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-deploy-jenkins" href="/kubernetes-operator/docs/getting-started/v0.1.x/deploy-jenkins/">Deploy Jenkins</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-configuration" href="/kubernetes-operator/docs/getting-started/v0.1.x/configuration/">Configuration</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-customization" href="/kubernetes-operator/docs/getting-started/v0.1.x/customization/">Customization</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-aks" href="/kubernetes-operator/docs/getting-started/v0.1.x/aks/">AKS</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-configure-backup-and-restore" href="/kubernetes-operator/docs/getting-started/v0.1.x/configure-backup-and-restore/">Configure backup and restore</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-diagnostics" href="/kubernetes-operator/docs/getting-started/v0.1.x/diagnostics/">Diagnostics</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-scheme" href="/kubernetes-operator/docs/getting-started/v0.1.x/scheme/">Scheme</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-migration-guide-v1alpha1-to-v1alpha2" href="/kubernetes-operator/docs/getting-started/v0.1.x/migration-guide-v1alpha1-to-v1alpha2/">Migration guide from v1alpha1 to v1alpha2</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|       <a class="td-sidebar-link td-sidebar-link__page " id="m-kubernetes-operator-docs-getting-started-v0-1-x-developer-guide" href="/kubernetes-operator/docs/getting-started/v0.1.x/developer-guide/">Developer Guide</a> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <ul class="td-sidebar-nav__section pr-md-3"> |  | ||||||
|   <li class="td-sidebar-nav__section-title"> |  | ||||||
|     <a  href="/kubernetes-operator/docs/security/" class="align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section">Security</a> |  | ||||||
|   </li> |  | ||||||
|   <ul> |  | ||||||
|     <li class="collapse " id="kubernetes-operator-docs-security"> |  | ||||||
|        |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|        |  | ||||||
|        |  | ||||||
|     </li> |  | ||||||
|   </ul> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|   </nav> |  | ||||||
| </div> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|           </div> |  | ||||||
|           <div class="d-none d-xl-block col-xl-2 td-toc d-print-none"> |  | ||||||
|              |  | ||||||
|      |  | ||||||
|      |  | ||||||
|      |  | ||||||
|       <div class="td-page-meta ml-2 pb-1 pt-2 mb-0"> |  | ||||||
|            |  | ||||||
|            |  | ||||||
|            |  | ||||||
|         <a href="https://github.com/jenkinsci/kubernetes-operator/edit/master/website/content/en/docs/Getting%20Started/latest/developer-guide.md" target="_blank"><i class="fa fa-edit fa-fw"></i> Edit this page</a> |  | ||||||
|         <a href="https://github.com/jenkinsci/kubernetes-operator/issues/new?title=Developer%20Guide" target="_blank"><i class="fab fa-github fa-fw"></i> Create documentation issue</a> |  | ||||||
|            |  | ||||||
|                |  | ||||||
|               <a href="https://github.com/jenkinsci/kubernetes-operator/issues/new" target="_blank"><i class="fas fa-tasks fa-fw"></i> Create project issue</a> |  | ||||||
|            |  | ||||||
|       </div> |  | ||||||
|      |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <nav id="TableOfContents"> |  | ||||||
| <ul> |  | ||||||
| <li> |  | ||||||
| <ul> |  | ||||||
| <li><a href="#prerequisites">Prerequisites</a></li> |  | ||||||
| <li><a href="#clone-repository-and-download-dependencies">Clone repository and download dependencies</a></li> |  | ||||||
| <li><a href="#build-and-run-with-a-minikube">Build and run with a minikube</a></li> |  | ||||||
| <li><a href="#build-and-run-with-a-remote-kubernetes-cluster">Build and run with a remote Kubernetes cluster</a></li> |  | ||||||
| <li><a href="#testing">Testing</a> |  | ||||||
| <ul> |  | ||||||
| <li><a href="#running-e2e-tests-on-linux">Running E2E tests on Linux</a></li> |  | ||||||
| <li><a href="#running-e2e-tests-on-macos">Running E2E tests on macOS</a></li> |  | ||||||
| </ul></li> |  | ||||||
| <li><a href="#tips-tricks">Tips & Tricks</a> |  | ||||||
| <ul> |  | ||||||
| <li><a href="#building-docker-image-on-minikube-for-e2e-tests">Building docker image on minikube (for e2e tests)</a></li> |  | ||||||
| <li><a href="#when-pkg-apis-jenkinsio-jenkins-types-go-has-changed">When <code>pkg/apis/jenkinsio/*/jenkins_types.go</code> has changed</a></li> |  | ||||||
| <li><a href="#getting-the-jenkins-url-and-basic-credentials">Getting the Jenkins URL and basic credentials</a></li> |  | ||||||
| </ul></li> |  | ||||||
| </ul></li> |  | ||||||
| <li><a href="#tools">Tools</a> |  | ||||||
| <ul> |  | ||||||
| <li><a href="#configure-environment-variables">Configure environment variables</a></li> |  | ||||||
| <li><a href="#goimports">goimports</a></li> |  | ||||||
| <li><a href="#golint">golint</a></li> |  | ||||||
| <li><a href="#checkmake">checkmake</a></li> |  | ||||||
| <li><a href="#staticcheck">staticcheck</a></li> |  | ||||||
| </ul></li> |  | ||||||
| </ul> |  | ||||||
| </nav> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|           </div> |  | ||||||
|           <main class="col-12 col-md-9 col-xl-8 pl-md-5" role="main"> |  | ||||||
|             <nav aria-label="breadcrumb" class="d-none d-md-block d-print-none"> |  | ||||||
| 	<ol class="breadcrumb spb-1"> |  | ||||||
| 		 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <li class="breadcrumb-item" > |  | ||||||
| 	<a href="https://jenkinsci.github.io/kubernetes-operator/docs/">Documentation</a> |  | ||||||
| </li> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <li class="breadcrumb-item" > |  | ||||||
| 	<a href="https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/">Getting Started</a> |  | ||||||
| </li> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <li class="breadcrumb-item" > |  | ||||||
| 	<a href="https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/">Latest (v0.2.x)</a> |  | ||||||
| </li> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <li class="breadcrumb-item active" aria-current="page"> |  | ||||||
| 	<a href="https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/developer-guide/">Developer Guide</a> |  | ||||||
| </li> |  | ||||||
| 
 |  | ||||||
| 	</ol> |  | ||||||
| </nav	> |  | ||||||
| 
 |  | ||||||
|              |  | ||||||
| <div class="td-content"> |  | ||||||
| 	<h1>Developer Guide</h1> |  | ||||||
| 	<div class="lead">Jenkins Operator for developers</div> |  | ||||||
| 	 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <div class="pageinfo pageinfo-primary"> |  | ||||||
| <p>This document explains how to setup your development environment.</p> |  | ||||||
| 
 |  | ||||||
| </div> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <h2 id="prerequisites">Prerequisites</h2> |  | ||||||
| 
 |  | ||||||
| <ul> |  | ||||||
| <li><a href="https://github.com/operator-framework/operator-sdk" target="_blank">operator_sdk</a> version v0.8.1</li> |  | ||||||
| <li><a href="https://git-scm.com/downloads" target="_blank">git</a></li> |  | ||||||
| <li><a href="https://golang.org/dl/" target="_blank">go</a> version v1.12+</li> |  | ||||||
| <li><a href="install_dev_tools.md" target="_blank">goimports, golint, checkmake and staticcheck</a></li> |  | ||||||
| <li><a href="https://kubernetes.io/docs/tasks/tools/install-minikube/" target="_blank">minikube</a> version v1.1.0+ (preferred Hypervisor - <a href="https://www.virtualbox.org/wiki/Downloads" target="_blank">virtualbox</a>)</li> |  | ||||||
| <li><a href="https://docs.docker.com/install/" target="_blank">docker</a> version 17.03+</li> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
| <h2 id="clone-repository-and-download-dependencies">Clone repository and download dependencies</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">mkdir -p <span style="color:#000">$GOPATH</span>/src/github.com/jenkinsci |  | ||||||
| <span style="color:#204a87">cd</span> <span style="color:#000">$GOPATH</span>/src/github.com/jenkinsci/ |  | ||||||
| git clone git@github.com:jenkinsci/kubernetes-operator.git |  | ||||||
| <span style="color:#204a87">cd</span> kubernetes-operator |  | ||||||
| make go-dependencies</code></pre></div> |  | ||||||
| <h2 id="build-and-run-with-a-minikube">Build and run with a minikube</h2> |  | ||||||
| 
 |  | ||||||
| <p>Build and run <strong>Jenkins Operator</strong> locally:</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">make build minikube-run <span style="color:#000">EXTRA_ARGS</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#4e9a06">'--minikube --local'</span></code></pre></div> |  | ||||||
| <p>Once minikube and <strong>Jenkins Operator</strong> are up and running, apply Jenkins custom resource:</p> |  | ||||||
| <div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">kubectl apply -f deploy/crds/jenkins_v1alpha2_jenkins_cr.yaml |  | ||||||
| kubectl get jenkins -o yaml |  | ||||||
| kubectl get po</code></pre></div> |  | ||||||
| <h2 id="build-and-run-with-a-remote-kubernetes-cluster">Build and run with a remote Kubernetes cluster</h2> |  | ||||||
| 
 |  | ||||||
| <p>You can also run the controller locally and make it listen to a remote Kubernetes server.</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">make run <span style="color:#000">NAMESPACE</span><span style="color:#ce5c00;font-weight:bold">=</span>default <span style="color:#000">KUBECTL_CONTEXT</span><span style="color:#ce5c00;font-weight:bold">=</span>remote-k8s <span style="color:#000">EXTRA_ARGS</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#4e9a06">'--kubeconfig ~/.kube/config'</span></code></pre></div> |  | ||||||
| <p>Once minikube and <strong>Jenkins Operator</strong> are up and running, apply Jenkins custom resource:</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 --context remote-k8s --namespace default apply -f deploy/crds/jenkins_v1alpha2_jenkins_cr.yaml |  | ||||||
| kubectl --context remote-k8s --namespace default get jenkins -o yaml |  | ||||||
| kubectl --context remote-k8s --namespace default get po</code></pre></div> |  | ||||||
| <h2 id="testing">Testing</h2> |  | ||||||
| 
 |  | ||||||
| <p>Run unit tests:</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">make test</code></pre></div> |  | ||||||
| <h3 id="running-e2e-tests-on-linux">Running E2E tests on Linux</h3> |  | ||||||
| 
 |  | ||||||
| <p>Run e2e tests with 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">make minikube-start |  | ||||||
| <span style="color:#204a87">eval</span> <span style="color:#204a87;font-weight:bold">$(</span>minikube docker-env<span style="color:#204a87;font-weight:bold">)</span> |  | ||||||
| make build e2e</code></pre></div> |  | ||||||
| <p>Run the specific e2e test:</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">make build e2e <span style="color:#000">E2E_TEST_SELECTOR</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#4e9a06">'^TestConfiguration$'</span></code></pre></div> |  | ||||||
| <h3 id="running-e2e-tests-on-macos">Running E2E tests on macOS</h3> |  | ||||||
| 
 |  | ||||||
| <p>At first, you need to start 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">$ make minikube-start |  | ||||||
| $ <span style="color:#204a87">eval</span> <span style="color:#204a87;font-weight:bold">$(</span>minikube docker-env<span style="color:#204a87;font-weight:bold">)</span> </code></pre></div> |  | ||||||
| <p>Build a Docker image inside the provided Linux container by:</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">$ make indocker</code></pre></div> |  | ||||||
| <p>Build <strong>Jenkins Operator</strong> inside a container using:</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">$ make build</code></pre></div> |  | ||||||
| <p>Then exit the container and run:</p> |  | ||||||
| 
 |  | ||||||
| <pre><code>make e2e |  | ||||||
| </code></pre> |  | ||||||
| 
 |  | ||||||
| <h2 id="tips-tricks">Tips & Tricks</h2> |  | ||||||
| 
 |  | ||||||
| <h3 id="building-docker-image-on-minikube-for-e2e-tests">Building docker image on minikube (for e2e tests)</h3> |  | ||||||
| 
 |  | ||||||
| <p>To be able to work with the docker daemon on <code>minikube</code> machine run the following command before building an image:</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"><span style="color:#204a87">eval</span> <span style="color:#204a87;font-weight:bold">$(</span>minikube docker-env<span style="color:#204a87;font-weight:bold">)</span></code></pre></div> |  | ||||||
| <h3 id="when-pkg-apis-jenkinsio-jenkins-types-go-has-changed">When <code>pkg/apis/jenkinsio/*/jenkins_types.go</code> has changed</h3> |  | ||||||
| 
 |  | ||||||
| <p>Run:</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">make deepcopy-gen</code></pre></div> |  | ||||||
| <h3 id="getting-the-jenkins-url-and-basic-credentials">Getting the Jenkins URL and basic credentials</h3> |  | ||||||
| <div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">minikube service jenkins-operator-http-<cr_name> --url |  | ||||||
| kubectl get secret jenkins-operator-credentials-<cr_name> -o <span style="color:#4e9a06">'jsonpath={.data.user}'</span> <span style="color:#000;font-weight:bold">|</span> base64 -d |  | ||||||
| kubectl get secret jenkins-operator-credentials-<cr_name> -o <span style="color:#4e9a06">'jsonpath={.data.password}'</span> <span style="color:#000;font-weight:bold">|</span> base64 -d</code></pre></div> |  | ||||||
| <h1 id="tools">Tools</h1> |  | ||||||
| 
 |  | ||||||
| <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> |  | ||||||
| 
 |  | ||||||
| 	 |  | ||||||
| 	 |  | ||||||
| 	<div class="text-muted mt-5 pt-3 border-top">Last modified August 5, 2019 |  | ||||||
| </div> |  | ||||||
| </div> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|           </main> |  | ||||||
|         </div> |  | ||||||
|       </div> |  | ||||||
|        |  | ||||||
| <footer class="bg-dark py-5 row d-print-none"> |  | ||||||
|   <div class="container-fluid mx-sm-5"> |  | ||||||
|     <div class="row"> |  | ||||||
|       <div class="col-6 col-sm-4 text-xs-center order-sm-2"> |  | ||||||
|          |  | ||||||
|       </div> |  | ||||||
|       <div class="col-6 col-sm-4 text-right text-xs-center order-sm-3"> |  | ||||||
|          |  | ||||||
|       </div> |  | ||||||
|       <div class="col-12 col-sm-4 text-center py-2 order-sm-2"> |  | ||||||
|         <small class="text-white">© 2019 VirtusLab All Rights Reserved</small> |  | ||||||
|          |  | ||||||
| 	 |  | ||||||
| 		<p class="mt-2"><a href="/kubernetes-operator/about/">What's the Jenkins Operator?</a></p> |  | ||||||
| 	 |  | ||||||
|       </div> |  | ||||||
|     </div> |  | ||||||
|   </div> |  | ||||||
| </footer> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|     </div> |  | ||||||
|      |  | ||||||
| <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script> |  | ||||||
| <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <script src="/kubernetes-operator/js/main.min.15ba3b50c3bd013e1b26793d1a59390ea2e0f21481eafe4022de05a44eba88fc.js" integrity="sha256-Fbo7UMO9AT4bJnk9Glk5DqLg8hSB6v5AIt4FpE66iPw="></script> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|   </body> |  | ||||||
| </html> |  | ||||||
|  | @ -1,10 +1,10 @@ | ||||||
| <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> | <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> | ||||||
|   <channel> |   <channel> | ||||||
|     <title>Jenkins Operator – Latest (v0.2.x)</title> |     <title>Jenkins Operator – Latest (v0.3.x)</title> | ||||||
|     <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/</link> |     <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/</link> | ||||||
|     <description>Recent Hugo news from gohugo.io</description> |     <description>Recent Hugo news from gohugo.io</description> | ||||||
|     <generator>Hugo -- gohugo.io</generator> |     <generator>Hugo -- gohugo.io</generator> | ||||||
|     <lastBuildDate>Mon, 05 Aug 2019 00:00:00 +0000</lastBuildDate> |     <lastBuildDate>Fri, 20 Dec 2019 00:00:00 +0000</lastBuildDate> | ||||||
|     <image> |     <image> | ||||||
|       <url>https://jenkinsci.github.io/kubernetes-operator/img/hugo.png</url> |       <url>https://jenkinsci.github.io/kubernetes-operator/img/hugo.png</url> | ||||||
|       <title>GoHugo.io</title> |       <title>GoHugo.io</title> | ||||||
|  | @ -22,7 +22,7 @@ | ||||||
|     <item> |     <item> | ||||||
|       <title>Docs: Deploy Jenkins</title> |       <title>Docs: Deploy Jenkins</title> | ||||||
|       <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/deploy-jenkins/</link> |       <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/deploy-jenkins/</link> | ||||||
|       <pubDate>Mon, 05 Aug 2019 00:00:00 +0000</pubDate> |       <pubDate>Fri, 20 Dec 2019 00:00:00 +0000</pubDate> | ||||||
|        |        | ||||||
|       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/deploy-jenkins/</guid> |       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/deploy-jenkins/</guid> | ||||||
|       <description> |       <description> | ||||||
|  | @ -93,7 +93,7 @@ kubectl get secret jenkins-operator-credentials-&lt;cr_name&gt; -o <s | ||||||
|     <item> |     <item> | ||||||
|       <title>Docs: Configuration</title> |       <title>Docs: Configuration</title> | ||||||
|       <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/configuration/</link> |       <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/configuration/</link> | ||||||
|       <pubDate>Mon, 05 Aug 2019 00:00:00 +0000</pubDate> |       <pubDate>Fri, 20 Dec 2019 00:00:00 +0000</pubDate> | ||||||
|        |        | ||||||
|       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/configuration/</guid> |       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/configuration/</guid> | ||||||
|       <description> |       <description> | ||||||
|  | @ -395,7 +395,7 @@ stringData: | ||||||
|     <item> |     <item> | ||||||
|       <title>Docs: Customization</title> |       <title>Docs: Customization</title> | ||||||
|       <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/customization/</link> |       <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/customization/</link> | ||||||
|       <pubDate>Mon, 05 Aug 2019 00:00:00 +0000</pubDate> |       <pubDate>Fri, 20 Dec 2019 00:00:00 +0000</pubDate> | ||||||
|        |        | ||||||
|       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/customization/</guid> |       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/customization/</guid> | ||||||
|       <description> |       <description> | ||||||
|  | @ -536,13 +536,13 @@ spec: | ||||||
| </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>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>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>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>kubernetes<span style="color:#f8f8f8;text-decoration:underline"> | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">      </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1.18</span>.<span style="color:#0000cf;font-weight:bold">3</span><span style="color:#f8f8f8;text-decoration:underline"> | </span><span style="color:#f8f8f8;text-decoration:underline">      </span>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>-<span 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>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>-<span 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>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>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>git<span style="color:#f8f8f8;text-decoration:underline"> | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">      </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">3.12</span>.<span style="color:#0000cf;font-weight:bold">0</span><span style="color:#f8f8f8;text-decoration:underline"> | </span><span style="color:#f8f8f8;text-decoration:underline">      </span>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>-<span 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>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>-<span 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"> | ||||||
|  | @ -550,7 +550,7 @@ spec: | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">    </span>-<span 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>-<span 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>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>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>kubernetes-credentials-provider<span style="color:#f8f8f8;text-decoration:underline"> | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">      </span>version<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">0.12</span>.<span style="color:#0000cf;font-weight:bold">1</span></code></pre></div> | </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>You can change their versions.</p> | ||||||
| 
 | 
 | ||||||
| <p>The <strong>Jenkins Operator</strong> will then automatically install plugins after the Jenkins master pod restarts.</p> | <p>The <strong>Jenkins Operator</strong> will then automatically install plugins after the Jenkins master pod restarts.</p> | ||||||
|  | @ -561,7 +561,7 @@ spec: | ||||||
|     <item> |     <item> | ||||||
|       <title>Docs: AKS</title> |       <title>Docs: AKS</title> | ||||||
|       <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/aks/</link> |       <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/aks/</link> | ||||||
|       <pubDate>Mon, 05 Aug 2019 00:00:00 +0000</pubDate> |       <pubDate>Fri, 20 Dec 2019 00:00:00 +0000</pubDate> | ||||||
|        |        | ||||||
|       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/aks/</guid> |       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/aks/</guid> | ||||||
|       <description> |       <description> | ||||||
|  | @ -585,7 +585,7 @@ restart of a Jenkins pod over and over again.</p> | ||||||
|     <item> |     <item> | ||||||
|       <title>Docs: Configure backup and restore</title> |       <title>Docs: Configure backup and restore</title> | ||||||
|       <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/configure-backup-and-restore/</link> |       <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/configure-backup-and-restore/</link> | ||||||
|       <pubDate>Mon, 05 Aug 2019 00:00:00 +0000</pubDate> |       <pubDate>Fri, 20 Dec 2019 00:00:00 +0000</pubDate> | ||||||
|        |        | ||||||
|       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/configure-backup-and-restore/</guid> |       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/configure-backup-and-restore/</guid> | ||||||
|       <description> |       <description> | ||||||
|  | @ -635,7 +635,7 @@ restart of a Jenkins pod over and over again.</p> | ||||||
| </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>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>-<span 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>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>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>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>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>-<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"> | ||||||
|  | @ -667,7 +667,7 @@ restart of a Jenkins pod over and over again.</p> | ||||||
|     <item> |     <item> | ||||||
|       <title>Docs: Custom Backup and Restore Providers</title> |       <title>Docs: Custom Backup and Restore Providers</title> | ||||||
|       <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/custom-backup-and-restore/</link> |       <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/custom-backup-and-restore/</link> | ||||||
|       <pubDate>Mon, 05 Aug 2019 00:00:00 +0000</pubDate> |       <pubDate>Fri, 20 Dec 2019 00:00:00 +0000</pubDate> | ||||||
|        |        | ||||||
|       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/custom-backup-and-restore/</guid> |       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/custom-backup-and-restore/</guid> | ||||||
|       <description> |       <description> | ||||||
|  | @ -736,7 +736,7 @@ for backup and restore are required, e.g.:</p> | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">      </span>-<span 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>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><span style="color:#f8f8f8;text-decoration:underline">      </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>backup<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># container responsible for backup and restore</span><span style="color:#f8f8f8;text-decoration:underline"> | </span><span style="color:#f8f8f8;text-decoration:underline">      </span>-<span style="color:#f8f8f8;text-decoration:underline"> </span>name<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>backup<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># container responsible for backup and restore</span><span style="color:#f8f8f8;text-decoration:underline"> | ||||||
| </span><span style="color:#f8f8f8;text-decoration:underline">        </span>image<span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>quay.io/virtuslab/aws-cli<span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1.16</span>.<span style="color:#0000cf;font-weight:bold">263</span>-<span style="color:#0000cf;font-weight:bold">2</span><span style="color:#f8f8f8;text-decoration:underline"> | </span><span style="color:#f8f8f8;text-decoration:underline">        </span>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>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>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>sleep<span style="color:#f8f8f8;text-decoration:underline"> | ||||||
|  | @ -848,72 +848,123 @@ the number of backups under control, e.g. Cloud Formation fragment:</p> | ||||||
|     </item> |     </item> | ||||||
|      |      | ||||||
|     <item> |     <item> | ||||||
|       <title>Docs: Migration from v0.1.x</title> |       <title>Docs: Notifications</title> | ||||||
|       <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/migration/</link> |       <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/notifications/</link> | ||||||
|       <pubDate>Mon, 05 Aug 2019 00:00:00 +0000</pubDate> |       <pubDate>Fri, 20 Dec 2019 00:00:00 +0000</pubDate> | ||||||
|        |        | ||||||
|       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/migration/</guid> |       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/notifications/</guid> | ||||||
|       <description> |       <description> | ||||||
|          |          | ||||||
|          |          | ||||||
|          |          | ||||||
| 
 | 
 | ||||||
| <h3 id="major-changes">Major Changes</h3> | <h2 id="slack">Slack</h2> | ||||||
| 
 | 
 | ||||||
| <h4 id="adding-the-seed-job-agent">Adding the seed job agent</h4> | <p>Please follow <a href="https://api.slack.com/incoming-webhooks" target="_blank">this</a> instructions to get web hook URL.</p> | ||||||
| 
 | 
 | ||||||
| <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>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> | ||||||
| 
 | 
 | ||||||
| <p>We&rsquo;ve had disabled master executors for security reasons.</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> | ||||||
| 
 | 
 | ||||||
| <h4 id="replacing-configuration-jobs-with-groovy-scripts">Replacing configuration jobs with Groovy scripts</h4> | <h2 id="microsoft-teams">Microsoft Teams</h2> | ||||||
| 
 | 
 | ||||||
| <p>In <code>v0.1.x</code> <strong>Jenkins Operator</strong> user configuration application was implemented using <strong>Jenkins</strong> jobs | <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> | ||||||
| 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>Example configuration for Microsoft Teams:</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). | <pre><code>kind: Jenkins | ||||||
| Instead, you can make sure the operator is running correctly by inspecting its logs, e.g.:</p> | spec: | ||||||
| <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> |   master: | ||||||
| <h4 id="making-user-configuration-sources-configurable">Making User Configuration sources configurable</h4> |     notifications: | ||||||
|  |     - loggingLevel: info | ||||||
|  |       verbose: true | ||||||
|  |       name: &lt;name&gt; | ||||||
|  |       teams: | ||||||
|  |         webHookURLSecretKeySelector: | ||||||
|  |           secret: | ||||||
|  |             name: &lt;secret_name&gt; | ||||||
|  |           key: &lt;key&gt; | ||||||
|  | </code></pre> | ||||||
| 
 | 
 | ||||||
| <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> | <h2 id="mailgun">Mailgun</h2> | ||||||
| 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 | <p>Example configuration for Mailgun:</p> | ||||||
| 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> | <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> | ||||||
| 
 | 
 | ||||||
| <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> |       </description> | ||||||
|     </item> |     </item> | ||||||
|      |      | ||||||
|     <item> |     <item> | ||||||
|       <title>Docs: Diagnostics</title> |       <title>Docs: Diagnostics</title> | ||||||
|       <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/diagnostics/</link> |       <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/diagnostics/</link> | ||||||
|       <pubDate>Mon, 05 Aug 2019 00:00:00 +0000</pubDate> |       <pubDate>Fri, 20 Dec 2019 00:00:00 +0000</pubDate> | ||||||
|        |        | ||||||
|       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/diagnostics/</guid> |       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/diagnostics/</guid> | ||||||
|       <description> |       <description> | ||||||
|  | @ -940,7 +991,7 @@ kubectl apply -f deploy/operator.yaml</code></pre></div> | ||||||
|     <item> |     <item> | ||||||
|       <title>Docs: Schema</title> |       <title>Docs: Schema</title> | ||||||
|       <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/schema/</link> |       <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/schema/</link> | ||||||
|       <pubDate>Mon, 05 Aug 2019 00:00:00 +0000</pubDate> |       <pubDate>Fri, 20 Dec 2019 00:00:00 +0000</pubDate> | ||||||
|        |        | ||||||
|       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/schema/</guid> |       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/schema/</guid> | ||||||
|       <description> |       <description> | ||||||
|  | @ -962,7 +1013,7 @@ kubectl apply -f deploy/operator.yaml</code></pre></div> | ||||||
| </ul> | </ul> | ||||||
| <h2 id="jenkins.io">jenkins.io</h2> | <h2 id="jenkins.io">jenkins.io</h2> | ||||||
| <p> | <p> | ||||||
| <p>Package v1alpha2 contains the API Schema definitions for the jenkins.io v1alpha2 API group</p> | <p>Package v1alpha2 contains API Schema definitions for the jenkins.io v1alpha2 API group</p> | ||||||
| </p> | </p> | ||||||
| Resource Types: | Resource Types: | ||||||
| <ul><li> | <ul><li> | ||||||
|  | @ -1051,12 +1102,26 @@ Every single change here requires a pod restart.</p> | ||||||
| </td> | </td> | ||||||
| <td> | <td> | ||||||
| <em>(Optional)</em> | <em>(Optional)</em> | ||||||
| <p>SeedJobs defines a list of Jenkins Seed Job configurations | <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> | 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> | </td> | ||||||
| </tr> | </tr> | ||||||
| <tr> | <tr> | ||||||
| <td> | <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> | <code>service</code></br> | ||||||
| <em> | <em> | ||||||
| <a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Service"> | <a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Service"> | ||||||
|  | @ -1066,7 +1131,7 @@ Service | ||||||
| </td> | </td> | ||||||
| <td> | <td> | ||||||
| <em>(Optional)</em> | <em>(Optional)</em> | ||||||
| <p>Service is the Kubernetes service of the Jenkins master HTTP pod | <p>Service is Kubernetes service of Jenkins master HTTP pod | ||||||
| Defaults to : | Defaults to : | ||||||
| port: 8080 | port: 8080 | ||||||
| type: ClusterIP</p> | type: ClusterIP</p> | ||||||
|  | @ -1083,7 +1148,7 @@ Service | ||||||
| </td> | </td> | ||||||
| <td> | <td> | ||||||
| <em>(Optional)</em> | <em>(Optional)</em> | ||||||
| <p>Service is the Kubernetes service of the Jenkins slave pods | <p>Service is Kubernetes service of Jenkins slave pods | ||||||
| Defaults to : | Defaults to : | ||||||
| port: 50000 | port: 50000 | ||||||
| type: ClusterIP</p> | type: ClusterIP</p> | ||||||
|  | @ -1100,7 +1165,7 @@ Backup | ||||||
| </td> | </td> | ||||||
| <td> | <td> | ||||||
| <em>(Optional)</em> | <em>(Optional)</em> | ||||||
| <p>Backup defines the configuration of a Jenkins backup | <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> | 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> | </td> | ||||||
| </tr> | </tr> | ||||||
|  | @ -1115,7 +1180,7 @@ Restore | ||||||
| </td> | </td> | ||||||
| <td> | <td> | ||||||
| <em>(Optional)</em> | <em>(Optional)</em> | ||||||
| <p>Backup defines the configuration of a Jenkins backup restore | <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> | 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> | </td> | ||||||
| </tr> | </tr> | ||||||
|  | @ -1130,7 +1195,7 @@ GroovyScripts | ||||||
| </td> | </td> | ||||||
| <td> | <td> | ||||||
| <em>(Optional)</em> | <em>(Optional)</em> | ||||||
| <p>GroovyScripts defines the configuration of Jenkins customization via groovy scripts</p> | <p>GroovyScripts defines configuration of Jenkins customization via groovy scripts</p> | ||||||
| </td> | </td> | ||||||
| </tr> | </tr> | ||||||
| <tr> | <tr> | ||||||
|  | @ -1144,7 +1209,7 @@ ConfigurationAsCode | ||||||
| </td> | </td> | ||||||
| <td> | <td> | ||||||
| <em>(Optional)</em> | <em>(Optional)</em> | ||||||
| <p>ConfigurationAsCode defines the configuration of Jenkins customization via the Configuration as Code Jenkins plugin</p> | <p>ConfigurationAsCode defines configuration of Jenkins customization via Configuration as Code Jenkins plugin</p> | ||||||
| </td> | </td> | ||||||
| </tr> | </tr> | ||||||
| </table> | </table> | ||||||
|  | @ -1235,7 +1300,7 @@ string | ||||||
| <a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.JenkinsSpec">JenkinsSpec</a>) | <a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.JenkinsSpec">JenkinsSpec</a>) | ||||||
| </p> | </p> | ||||||
| <p> | <p> | ||||||
| <p>Backup defines the configuration of a Jenkins backup</p> | <p>Backup defines configuration of Jenkins backup</p> | ||||||
| </p> | </p> | ||||||
| <table> | <table> | ||||||
| <thead> | <thead> | ||||||
|  | @ -1266,7 +1331,7 @@ Handler | ||||||
| </em> | </em> | ||||||
| </td> | </td> | ||||||
| <td> | <td> | ||||||
| <p>Action defines the action which performs the backup in the backup container sidecar</p> | <p>Action defines action which performs backup in backup container sidecar</p> | ||||||
| </td> | </td> | ||||||
| </tr> | </tr> | ||||||
| <tr> | <tr> | ||||||
|  | @ -1277,7 +1342,7 @@ uint64 | ||||||
| </em> | </em> | ||||||
| </td> | </td> | ||||||
| <td> | <td> | ||||||
| <p>Interval tells you how often the backup is made in seconds | <p>Interval tells how often make backup in seconds | ||||||
| Defaults to 30.</p> | Defaults to 30.</p> | ||||||
| </td> | </td> | ||||||
| </tr> | </tr> | ||||||
|  | @ -1289,7 +1354,7 @@ bool | ||||||
| </em> | </em> | ||||||
| </td> | </td> | ||||||
| <td> | <td> | ||||||
| <p>MakeBackupBeforePodDeletion tells the operator to make a backup before Jenkins master pod deletion</p> | <p>MakeBackupBeforePodDeletion tells operator to make backup before Jenkins master pod deletion</p> | ||||||
| </td> | </td> | ||||||
| </tr> | </tr> | ||||||
| </tbody> | </tbody> | ||||||
|  | @ -1301,7 +1366,7 @@ bool | ||||||
| <a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.Customization">Customization</a>) | <a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.Customization">Customization</a>) | ||||||
| </p> | </p> | ||||||
| <p> | <p> | ||||||
| <p>ConfigMapRef is the reference to Kubernetes ConfigMap</p> | <p>ConfigMapRef is reference to Kubernetes ConfigMap</p> | ||||||
| </p> | </p> | ||||||
| <table> | <table> | ||||||
| <thead> | <thead> | ||||||
|  | @ -1330,7 +1395,7 @@ string | ||||||
| <a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.JenkinsSpec">JenkinsSpec</a>) | <a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.JenkinsSpec">JenkinsSpec</a>) | ||||||
| </p> | </p> | ||||||
| <p> | <p> | ||||||
| <p>ConfigurationAsCode defines configuration of Jenkins customization via the Configuration as Code Jenkins plugin</p> | <p>ConfigurationAsCode defines configuration of Jenkins customization via Configuration as Code Jenkins plugin</p> | ||||||
| </p> | </p> | ||||||
| <table> | <table> | ||||||
| <thead> | <thead> | ||||||
|  | @ -1361,7 +1426,7 @@ Customization | ||||||
| <a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.JenkinsMaster">JenkinsMaster</a>) | <a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.JenkinsMaster">JenkinsMaster</a>) | ||||||
| </p> | </p> | ||||||
| <p> | <p> | ||||||
| <p>Container defines the Kubernetes container attributes</p> | <p>Container defines Kubernetes container attributes</p> | ||||||
| </p> | </p> | ||||||
| <table> | <table> | ||||||
| <thead> | <thead> | ||||||
|  | @ -1716,7 +1781,7 @@ Kubernetes core/v1.ExecAction | ||||||
| <a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.SeedJob">SeedJob</a>) | <a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.SeedJob">SeedJob</a>) | ||||||
| </p> | </p> | ||||||
| <p> | <p> | ||||||
| <p>JenkinsCredentialType defines the type of Jenkins credential used in the seed job mechanism</p> | <p>JenkinsCredentialType defines type of Jenkins credential used to seed job mechanism</p> | ||||||
| </p> | </p> | ||||||
| <h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.JenkinsMaster">JenkinsMaster | <h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.JenkinsMaster">JenkinsMaster | ||||||
| </h3> | </h3> | ||||||
|  | @ -1738,7 +1803,7 @@ every single change requires a Jenkins master pod restart</p> | ||||||
| <tbody> | <tbody> | ||||||
| <tr> | <tr> | ||||||
| <td> | <td> | ||||||
| <code>masterAnnotations</code></br> | <code>annotations</code></br> | ||||||
| <em> | <em> | ||||||
| map[string]string | map[string]string | ||||||
| </em> | </em> | ||||||
|  | @ -1753,6 +1818,22 @@ More info: <a href="http://kubernetes.io/docs/user-guide/annotations" | ||||||
| </tr> | </tr> | ||||||
| <tr> | <tr> | ||||||
| <td> | <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>nodeSelector</code></br> | <code>nodeSelector</code></br> | ||||||
| <em> | <em> | ||||||
| map[string]string | map[string]string | ||||||
|  | @ -1906,6 +1987,17 @@ version: 0.12.1</p> | ||||||
| <p>Plugins contains plugins required by user</p> | <p>Plugins contains plugins required by user</p> | ||||||
| </td> | </td> | ||||||
| </tr> | </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> | </tbody> | ||||||
| </table> | </table> | ||||||
| <h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.JenkinsSpec">JenkinsSpec | <h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.JenkinsSpec">JenkinsSpec | ||||||
|  | @ -1956,6 +2048,20 @@ More info: <a href="https://github.com/jenkinsci/kubernetes-operator/blob | ||||||
| </tr> | </tr> | ||||||
| <tr> | <tr> | ||||||
| <td> | <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> | <code>service</code></br> | ||||||
| <em> | <em> | ||||||
| <a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Service"> | <a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Service"> | ||||||
|  | @ -2176,7 +2282,7 @@ string | ||||||
| </td> | </td> | ||||||
| <td> | <td> | ||||||
| <em>(Optional)</em> | <em>(Optional)</em> | ||||||
| <p>UserAndPasswordHash is a SHA256 hash made from the username and password</p> | <p>UserAndPasswordHash is a SHA256 hash made from user and password</p> | ||||||
| </td> | </td> | ||||||
| </tr> | </tr> | ||||||
| <tr> | <tr> | ||||||
|  | @ -2188,7 +2294,7 @@ string | ||||||
| </td> | </td> | ||||||
| <td> | <td> | ||||||
| <em>(Optional)</em> | <em>(Optional)</em> | ||||||
| <p>CreatedSeedJobs contains list of seed job ids already created in Jenkins</p> | <p>CreatedSeedJobs contains list of seed job id already created in Jenkins</p> | ||||||
| </td> | </td> | ||||||
| </tr> | </tr> | ||||||
| <tr> | <tr> | ||||||
|  | @ -2303,6 +2409,10 @@ SecretKeySelector | ||||||
| <h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Notification">Notification | <h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Notification">Notification | ||||||
| </h3> | </h3> | ||||||
| <p> | <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>Notification is a service configuration used to send notifications about Jenkins status</p> | ||||||
| </p> | </p> | ||||||
| <table> | <table> | ||||||
|  | @ -2315,10 +2425,10 @@ SecretKeySelector | ||||||
| <tbody> | <tbody> | ||||||
| <tr> | <tr> | ||||||
| <td> | <td> | ||||||
| <code>loggingLevel</code></br> | <code>level</code></br> | ||||||
| <em> | <em> | ||||||
| <a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.NotificationLogLevel"> | <a href="#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.NotificationLevel"> | ||||||
| NotificationLogLevel | NotificationLevel | ||||||
| </a> | </a> | ||||||
| </em> | </em> | ||||||
| </td> | </td> | ||||||
|  | @ -2381,16 +2491,28 @@ github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Mailgun | ||||||
| <td> | <td> | ||||||
| </td> | </td> | ||||||
| </tr> | </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> | </tbody> | ||||||
| </table> | </table> | ||||||
| <h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.NotificationLogLevel">NotificationLogLevel | <h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.NotificationLevel">NotificationLevel | ||||||
| (<code>string</code> alias)</p></h3> | (<code>string</code> alias)</p></h3> | ||||||
| <p> | <p> | ||||||
| (<em>Appears on:</em> | (<em>Appears on:</em> | ||||||
| <a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.Notification">Notification</a>) | <a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.Notification">Notification</a>) | ||||||
| </p> | </p> | ||||||
| <p> | <p> | ||||||
| <p>NotificationLogLevel defines logging level of Notification</p> | <p>NotificationLevel defines the level of a Notification</p> | ||||||
| </p> | </p> | ||||||
| <h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Plugin">Plugin | <h3 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Plugin">Plugin | ||||||
| </h3> | </h3> | ||||||
|  | @ -2488,12 +2610,106 @@ uint64 | ||||||
| </tr> | </tr> | ||||||
| </tbody> | </tbody> | ||||||
| </table> | </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 id="github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.SecretKeySelector">SecretKeySelector | ||||||
| </h3> | </h3> | ||||||
| <p> | <p> | ||||||
| (<em>Appears on:</em> | (<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.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.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>) | <a href="#github.com%2fjenkinsci%2fkubernetes-operator%2fpkg%2fapis%2fjenkins%2fv1alpha2.Slack">Slack</a>) | ||||||
| </p> | </p> | ||||||
| <p> | <p> | ||||||
|  | @ -2622,7 +2838,7 @@ string | ||||||
| </em> | </em> | ||||||
| </td> | </td> | ||||||
| <td> | <td> | ||||||
| <p>Targets is the repository path where the seed job definitions are</p> | <p>Targets is the repository path where are seed job definitions</p> | ||||||
| </td> | </td> | ||||||
| </tr> | </tr> | ||||||
| <tr> | <tr> | ||||||
|  | @ -2633,7 +2849,7 @@ string | ||||||
| </em> | </em> | ||||||
| </td> | </td> | ||||||
| <td> | <td> | ||||||
| <p>RepositoryBranch is the repository branch where the seed job definitions are</p> | <p>RepositoryBranch is the repository branch where are seed job definitions</p> | ||||||
| </td> | </td> | ||||||
| </tr> | </tr> | ||||||
| <tr> | <tr> | ||||||
|  | @ -2830,7 +3046,7 @@ int32 | ||||||
| </em> | </em> | ||||||
| </td> | </td> | ||||||
| <td> | <td> | ||||||
| <p>The port that is exposed by this service. | <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> | 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> | </td> | ||||||
| </tr> | </tr> | ||||||
|  | @ -2845,7 +3061,7 @@ int32 | ||||||
| <em>(Optional)</em> | <em>(Optional)</em> | ||||||
| <p>The port on each node on which this service is exposed when type=NodePort or LoadBalancer. | <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 | Usually assigned by the system. If specified, it will be allocated to the service | ||||||
| if unused, or else creation of the service will fail. | if unused or else creation of the service will fail. | ||||||
| Default is to auto-allocate a port if the ServiceType of this Service requires one. | 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> | 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> | </td> | ||||||
|  | @ -2860,7 +3076,7 @@ More info: <a href="https://kubernetes.io/docs/concepts/services-networki | ||||||
| <td> | <td> | ||||||
| <em>(Optional)</em> | <em>(Optional)</em> | ||||||
| <p>If specified and supported by the platform, this will restrict traffic through the cloud-provider | <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 | 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; | 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> | 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> | </td> | ||||||
|  | @ -2918,146 +3134,11 @@ SecretKeySelector | ||||||
| <hr/> | <hr/> | ||||||
| <p><em> | <p><em> | ||||||
| Generated with <code>gen-crd-api-reference-docs</code> | Generated with <code>gen-crd-api-reference-docs</code> | ||||||
| on git commit <code>f4c4235</code>. | on git commit <code>b6e1057</code>. | ||||||
| </em></p> | </em></p> | ||||||
| 
 | 
 | ||||||
|       </description> |       </description> | ||||||
|     </item> |     </item> | ||||||
| 
 | 
 | ||||||
|     <item> |  | ||||||
|       <title>Docs: Developer Guide</title> |  | ||||||
|       <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/developer-guide/</link> |  | ||||||
|       <pubDate>Mon, 05 Aug 2019 00:00:00 +0000</pubDate> |  | ||||||
|        |  | ||||||
|       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/developer-guide/</guid> |  | ||||||
|       <description> |  | ||||||
|          |  | ||||||
|          |  | ||||||
|          |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <div class="pageinfo pageinfo-primary"> |  | ||||||
| <p>This document explains how to setup your development environment.</p> |  | ||||||
| 
 |  | ||||||
| </div> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <h2 id="prerequisites">Prerequisites</h2> |  | ||||||
| 
 |  | ||||||
| <ul> |  | ||||||
| <li><a href="https://github.com/operator-framework/operator-sdk" target="_blank">operator_sdk</a> version v0.8.1</li> |  | ||||||
| <li><a href="https://git-scm.com/downloads" target="_blank">git</a></li> |  | ||||||
| <li><a href="https://golang.org/dl/" target="_blank">go</a> version v1.12+</li> |  | ||||||
| <li><a href="install_dev_tools.md" target="_blank">goimports, golint, checkmake and staticcheck</a></li> |  | ||||||
| <li><a href="https://kubernetes.io/docs/tasks/tools/install-minikube/" target="_blank">minikube</a> version v1.1.0+ (preferred Hypervisor - <a href="https://www.virtualbox.org/wiki/Downloads" target="_blank">virtualbox</a>)</li> |  | ||||||
| <li><a href="https://docs.docker.com/install/" target="_blank">docker</a> version 17.03+</li> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
| <h2 id="clone-repository-and-download-dependencies">Clone repository and download dependencies</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">mkdir -p <span style="color:#000">$GOPATH</span>/src/github.com/jenkinsci |  | ||||||
| <span style="color:#204a87">cd</span> <span style="color:#000">$GOPATH</span>/src/github.com/jenkinsci/ |  | ||||||
| git clone git@github.com:jenkinsci/kubernetes-operator.git |  | ||||||
| <span style="color:#204a87">cd</span> kubernetes-operator |  | ||||||
| make go-dependencies</code></pre></div> |  | ||||||
| <h2 id="build-and-run-with-a-minikube">Build and run with a minikube</h2> |  | ||||||
| 
 |  | ||||||
| <p>Build and run <strong>Jenkins Operator</strong> locally:</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">make build minikube-run <span style="color:#000">EXTRA_ARGS</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#4e9a06">&#39;--minikube --local&#39;</span></code></pre></div> |  | ||||||
| <p>Once minikube and <strong>Jenkins Operator</strong> are up and running, apply Jenkins custom resource:</p> |  | ||||||
| <div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">kubectl apply -f deploy/crds/jenkins_v1alpha2_jenkins_cr.yaml |  | ||||||
| kubectl get jenkins -o yaml |  | ||||||
| kubectl get po</code></pre></div> |  | ||||||
| <h2 id="build-and-run-with-a-remote-kubernetes-cluster">Build and run with a remote Kubernetes cluster</h2> |  | ||||||
| 
 |  | ||||||
| <p>You can also run the controller locally and make it listen to a remote Kubernetes server.</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">make run <span style="color:#000">NAMESPACE</span><span style="color:#ce5c00;font-weight:bold">=</span>default <span style="color:#000">KUBECTL_CONTEXT</span><span style="color:#ce5c00;font-weight:bold">=</span>remote-k8s <span style="color:#000">EXTRA_ARGS</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#4e9a06">&#39;--kubeconfig ~/.kube/config&#39;</span></code></pre></div> |  | ||||||
| <p>Once minikube and <strong>Jenkins Operator</strong> are up and running, apply Jenkins custom resource:</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 --context remote-k8s --namespace default apply -f deploy/crds/jenkins_v1alpha2_jenkins_cr.yaml |  | ||||||
| kubectl --context remote-k8s --namespace default get jenkins -o yaml |  | ||||||
| kubectl --context remote-k8s --namespace default get po</code></pre></div> |  | ||||||
| <h2 id="testing">Testing</h2> |  | ||||||
| 
 |  | ||||||
| <p>Run unit tests:</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">make test</code></pre></div> |  | ||||||
| <h3 id="running-e2e-tests-on-linux">Running E2E tests on Linux</h3> |  | ||||||
| 
 |  | ||||||
| <p>Run e2e tests with 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">make minikube-start |  | ||||||
| <span style="color:#204a87">eval</span> <span style="color:#204a87;font-weight:bold">$(</span>minikube docker-env<span style="color:#204a87;font-weight:bold">)</span> |  | ||||||
| make build e2e</code></pre></div> |  | ||||||
| <p>Run the specific e2e test:</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">make build e2e <span style="color:#000">E2E_TEST_SELECTOR</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#4e9a06">&#39;^TestConfiguration$&#39;</span></code></pre></div> |  | ||||||
| <h3 id="running-e2e-tests-on-macos">Running E2E tests on macOS</h3> |  | ||||||
| 
 |  | ||||||
| <p>At first, you need to start 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">$ make minikube-start |  | ||||||
| $ <span style="color:#204a87">eval</span> <span style="color:#204a87;font-weight:bold">$(</span>minikube docker-env<span style="color:#204a87;font-weight:bold">)</span> </code></pre></div> |  | ||||||
| <p>Build a Docker image inside the provided Linux container by:</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">$ make indocker</code></pre></div> |  | ||||||
| <p>Build <strong>Jenkins Operator</strong> inside a container using:</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">$ make build</code></pre></div> |  | ||||||
| <p>Then exit the container and run:</p> |  | ||||||
| 
 |  | ||||||
| <pre><code>make e2e |  | ||||||
| </code></pre> |  | ||||||
| 
 |  | ||||||
| <h2 id="tips-tricks">Tips &amp; Tricks</h2> |  | ||||||
| 
 |  | ||||||
| <h3 id="building-docker-image-on-minikube-for-e2e-tests">Building docker image on minikube (for e2e tests)</h3> |  | ||||||
| 
 |  | ||||||
| <p>To be able to work with the docker daemon on <code>minikube</code> machine run the following command before building an image:</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"><span style="color:#204a87">eval</span> <span style="color:#204a87;font-weight:bold">$(</span>minikube docker-env<span style="color:#204a87;font-weight:bold">)</span></code></pre></div> |  | ||||||
| <h3 id="when-pkg-apis-jenkinsio-jenkins-types-go-has-changed">When <code>pkg/apis/jenkinsio/*/jenkins_types.go</code> has changed</h3> |  | ||||||
| 
 |  | ||||||
| <p>Run:</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">make deepcopy-gen</code></pre></div> |  | ||||||
| <h3 id="getting-the-jenkins-url-and-basic-credentials">Getting the Jenkins URL and basic credentials</h3> |  | ||||||
| <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 |  | ||||||
| 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> |  | ||||||
| <h1 id="tools">Tools</h1> |  | ||||||
| 
 |  | ||||||
| <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> |  | ||||||
|      |  | ||||||
|   </channel> |   </channel> | ||||||
| </rss> | </rss> | ||||||
|  | @ -2368,141 +2368,6 @@ Code that defines the data structures can be found <a href="v0.1.1/jenkin | ||||||
| or use the default deployment manifest:</p> | 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 | <pre><code>$ kubectl -n &lt;namespace&gt; apply -f https://raw.githubusercontent.com/jenkinsci/kubernetes-operator/master/deploy/operator.yaml | ||||||
| </code></pre> |  | ||||||
| 
 |  | ||||||
|       </description> |  | ||||||
|     </item> |  | ||||||
|      |  | ||||||
|     <item> |  | ||||||
|       <title>Docs: Developer Guide</title> |  | ||||||
|       <link>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.1.x/developer-guide/</link> |  | ||||||
|       <pubDate>Mon, 05 Aug 2019 00:00:00 +0000</pubDate> |  | ||||||
|        |  | ||||||
|       <guid>https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/v0.1.x/developer-guide/</guid> |  | ||||||
|       <description> |  | ||||||
|          |  | ||||||
|          |  | ||||||
|          |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <div class="pageinfo pageinfo-primary"> |  | ||||||
| <p>This document explains how to setup your development environment.</p> |  | ||||||
| 
 |  | ||||||
| </div> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| <h2 id="prerequisites">Prerequisites</h2> |  | ||||||
| 
 |  | ||||||
| <ul> |  | ||||||
| <li><a href="https://github.com/operator-framework/operator-sdk" target="_blank">operator_sdk</a> version v0.8.1</li> |  | ||||||
| <li><a href="https://git-scm.com/downloads" target="_blank">git</a></li> |  | ||||||
| <li><a href="https://golang.org/dl/" target="_blank">go</a> version v1.12+</li> |  | ||||||
| <li><a href="install_dev_tools.md" target="_blank">goimports, golint, checkmake and staticcheck</a></li> |  | ||||||
| <li><a href="https://kubernetes.io/docs/tasks/tools/install-minikube/" target="_blank">minikube</a> version v1.1.0+ (preferred Hypervisor - <a href="https://www.virtualbox.org/wiki/Downloads" target="_blank">virtualbox</a>)</li> |  | ||||||
| <li><a href="https://docs.docker.com/install/" target="_blank">docker</a> version 17.03+</li> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
| <h2 id="clone-repository-and-download-dependencies">Clone repository and download dependencies</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">mkdir -p <span style="color:#000">$GOPATH</span>/src/github.com/jenkinsci |  | ||||||
| <span style="color:#204a87">cd</span> <span style="color:#000">$GOPATH</span>/src/github.com/jenkinsci/ |  | ||||||
| git clone git@github.com:jenkinsci/kubernetes-operator.git |  | ||||||
| <span style="color:#204a87">cd</span> kubernetes-operator |  | ||||||
| make go-dependencies</code></pre></div> |  | ||||||
| <h2 id="build-and-run-with-a-minikube">Build and run with a minikube</h2> |  | ||||||
| 
 |  | ||||||
| <p>Build and run <strong>Jenkins Operator</strong> locally:</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">make build minikube-run <span style="color:#000">EXTRA_ARGS</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#4e9a06">&#39;--minikube --local&#39;</span></code></pre></div> |  | ||||||
| <p>Once minikube and <strong>Jenkins Operator</strong> are up and running, apply Jenkins custom resource:</p> |  | ||||||
| <div class="highlight"><pre style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">kubectl apply -f deploy/crds/jenkins_v1alpha2_jenkins_cr.yaml |  | ||||||
| kubectl get jenkins -o yaml |  | ||||||
| kubectl get po</code></pre></div> |  | ||||||
| <h2 id="build-and-run-with-a-remote-kubernetes-cluster">Build and run with a remote Kubernetes cluster</h2> |  | ||||||
| 
 |  | ||||||
| <p>You can also run the controller locally and make it listen to a remote Kubernetes server.</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">make run <span style="color:#000">NAMESPACE</span><span style="color:#ce5c00;font-weight:bold">=</span>default <span style="color:#000">KUBECTL_CONTEXT</span><span style="color:#ce5c00;font-weight:bold">=</span>remote-k8s <span style="color:#000">EXTRA_ARGS</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#4e9a06">&#39;--kubeconfig ~/.kube/config&#39;</span></code></pre></div> |  | ||||||
| <p>Once minikube and <strong>Jenkins Operator</strong> are up and running, apply Jenkins custom resource:</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 --context remote-k8s --namespace default apply -f deploy/crds/jenkins_v1alpha2_jenkins_cr.yaml |  | ||||||
| kubectl --context remote-k8s --namespace default get jenkins -o yaml |  | ||||||
| kubectl --context remote-k8s --namespace default get po</code></pre></div> |  | ||||||
| <h2 id="testing">Testing</h2> |  | ||||||
| 
 |  | ||||||
| <p>Run unit tests:</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">make test</code></pre></div> |  | ||||||
| <h3 id="running-e2e-tests-on-linux">Running E2E tests on Linux</h3> |  | ||||||
| 
 |  | ||||||
| <p>Run e2e tests with 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">make minikube-start |  | ||||||
| <span style="color:#204a87">eval</span> <span style="color:#204a87;font-weight:bold">$(</span>minikube docker-env<span style="color:#204a87;font-weight:bold">)</span> |  | ||||||
| make build e2e</code></pre></div> |  | ||||||
| <p>Run the specific e2e test:</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">make build e2e <span style="color:#000">E2E_TEST_SELECTOR</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#4e9a06">&#39;^TestConfiguration$&#39;</span></code></pre></div> |  | ||||||
| <h3 id="running-e2e-tests-on-macos">Running E2E tests on macOS</h3> |  | ||||||
| 
 |  | ||||||
| <p>At first, you need to start 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">$ make minikube-start |  | ||||||
| $ <span style="color:#204a87">eval</span> <span style="color:#204a87;font-weight:bold">$(</span>minikube docker-env<span style="color:#204a87;font-weight:bold">)</span> </code></pre></div> |  | ||||||
| <p>Build a Docker image inside the provided Linux container by:</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">$ make indocker</code></pre></div> |  | ||||||
| <p>Build <strong>Jenkins Operator</strong> inside a container using:</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">$ make build</code></pre></div> |  | ||||||
| <p>Then exit the container and run:</p> |  | ||||||
| 
 |  | ||||||
| <pre><code>make e2e |  | ||||||
| </code></pre> |  | ||||||
| 
 |  | ||||||
| <h2 id="tips-tricks">Tips &amp; Tricks</h2> |  | ||||||
| 
 |  | ||||||
| <h3 id="building-docker-image-on-minikube-for-e2e-tests">Building docker image on minikube (for e2e tests)</h3> |  | ||||||
| 
 |  | ||||||
| <p>To be able to work with the docker daemon on <code>minikube</code> machine run the following command before building an image:</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"><span style="color:#204a87">eval</span> <span style="color:#204a87;font-weight:bold">$(</span>minikube docker-env<span style="color:#204a87;font-weight:bold">)</span></code></pre></div> |  | ||||||
| <h3 id="when-pkg-apis-jenkinsio-jenkins-types-go-has-changed">When <code>pkg/apis/jenkinsio/*/jenkins_types.go</code> has changed</h3> |  | ||||||
| 
 |  | ||||||
| <p>Run:</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">make deepcopy-gen</code></pre></div> |  | ||||||
| <h3 id="getting-the-jenkins-url-and-basic-credentials">Getting the Jenkins URL and basic credentials</h3> |  | ||||||
| <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 |  | ||||||
| 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> |  | ||||||
| <h1 id="tools">Tools</h1> |  | ||||||
| 
 |  | ||||||
| <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> | </code></pre> | ||||||
| 
 | 
 | ||||||
|       </description> |       </description> | ||||||
|  |  | ||||||
|  | @ -137,54 +137,6 @@ kubectl get secret jenkins-operator-credentials-<cr_name> -o 'jsonpath={.data.us | ||||||
| kubectl get secret jenkins-operator-credentials-<cr_name> -o 'jsonpath={.data.password}' | base64 -d | kubectl get secret jenkins-operator-credentials-<cr_name> -o 'jsonpath={.data.password}' | base64 -d | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| # Tools |  | ||||||
| 
 |  | ||||||
| ## Configure environment variables |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| export GOPATH=/home/go # example value |  | ||||||
| export GOROOT=/usr/lib/go-1.12 # example value |  | ||||||
| export PATH=$GOPATH/bin:$PATH |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| ## goimports |  | ||||||
| 
 |  | ||||||
| ``` |  | ||||||
| go get golang.org/x/tools/cmd/goimports |  | ||||||
| cd $GOPATH/src/golang.org/x/tools/cmd/goimports |  | ||||||
| go build |  | ||||||
| go install |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| ## golint |  | ||||||
| 
 |  | ||||||
| ``` |  | ||||||
| go get -u golang.org/x/lint/golint |  | ||||||
| cd  $GOPATH/src/golang.org/x/lint/golint |  | ||||||
| go build |  | ||||||
| go install |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| ## checkmake |  | ||||||
| ``` |  | ||||||
| go get github.com/mrtazz/checkmake |  | ||||||
| cd $GOPATH/src/github.com/mrtazz/checkmake |  | ||||||
| go build |  | ||||||
| go install |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| ## staticcheck |  | ||||||
| 
 |  | ||||||
| ``` |  | ||||||
| mkdir -p $GOPATH/src/github.com/dominikh/ |  | ||||||
| cd $GOPATH/src/github.com/dominikh/ |  | ||||||
| git clone https://github.com/dominikh/go-tools.git |  | ||||||
| cd  $GOPATH/src/github.com/dominikh/go-tools/staticcheck |  | ||||||
| go build |  | ||||||
| go install |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| [dep_tool]:https://golang.github.io/dep/docs/installation.html | [dep_tool]:https://golang.github.io/dep/docs/installation.html | ||||||
| [git_tool]:https://git-scm.com/downloads | [git_tool]:https://git-scm.com/downloads | ||||||
| [go_tool]:https://golang.org/dl/ | [go_tool]:https://golang.org/dl/ | ||||||
|  | @ -0,0 +1,57 @@ | ||||||
|  | --- | ||||||
|  | title: "Tools" | ||||||
|  | linkTitle: "Tools" | ||||||
|  | weight: 30 | ||||||
|  | date: 2019-08-05 | ||||||
|  | description: > | ||||||
|  |   Required tools for building and running Jenkins Operator | ||||||
|  | --- | ||||||
|  | 
 | ||||||
|  | {{% pageinfo %}} | ||||||
|  | This document explains how to install the Go tools used by the development process. | ||||||
|  | {{% /pageinfo %}} | ||||||
|  | 
 | ||||||
|  | ## Configure environment variables | ||||||
|  | 
 | ||||||
|  | ```bash | ||||||
|  | export GOPATH=/home/go # example value | ||||||
|  | export GOROOT=/usr/lib/go-1.12 # example value | ||||||
|  | export PATH=$GOPATH/bin:$PATH | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ## goimports | ||||||
|  | 
 | ||||||
|  | ``` | ||||||
|  | go get golang.org/x/tools/cmd/goimports | ||||||
|  | cd $GOPATH/src/golang.org/x/tools/cmd/goimports | ||||||
|  | go build | ||||||
|  | go install | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ## golint | ||||||
|  | 
 | ||||||
|  | ``` | ||||||
|  | go get -u golang.org/x/lint/golint | ||||||
|  | cd  $GOPATH/src/golang.org/x/lint/golint | ||||||
|  | go build | ||||||
|  | go install | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ## checkmake | ||||||
|  | ``` | ||||||
|  | go get github.com/mrtazz/checkmake | ||||||
|  | cd $GOPATH/src/github.com/mrtazz/checkmake | ||||||
|  | go build | ||||||
|  | go install | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ## staticcheck | ||||||
|  | 
 | ||||||
|  | ``` | ||||||
|  | mkdir -p $GOPATH/src/github.com/dominikh/ | ||||||
|  | cd $GOPATH/src/github.com/dominikh/ | ||||||
|  | git clone https://github.com/dominikh/go-tools.git | ||||||
|  | cd  $GOPATH/src/github.com/dominikh/go-tools/staticcheck | ||||||
|  | go build | ||||||
|  | go install | ||||||
|  | ``` | ||||||
|  | @ -1,18 +0,0 @@ | ||||||
| --- |  | ||||||
| title: "Future (v0.3.x)" |  | ||||||
| linkTitle: "Future (v0.3.x)" |  | ||||||
| weight: 10 |  | ||||||
| date: 2019-08-05 |  | ||||||
| description: > |  | ||||||
|   How to work with jenkins-operator latest version |  | ||||||
| --- |  | ||||||
| 
 |  | ||||||
| {{% pageinfo %}} |  | ||||||
| This document describes a getting started guide for **Jenkins Operator** `v0.3.x` and an additional configuration. |  | ||||||
| {{% /pageinfo %}} |  | ||||||
| 
 |  | ||||||
| ## First Steps |  | ||||||
| 
 |  | ||||||
| Prepare your Kubernetes cluster and set up your `kubectl` access. |  | ||||||
| 
 |  | ||||||
| Once you have running Kubernetes cluster you can focus on installing **Jenkins Operator** according to the [Installation](/docs/installation/) guide. |  | ||||||
|  | @ -1,24 +0,0 @@ | ||||||
| --- |  | ||||||
| title: "AKS" |  | ||||||
| linkTitle: "AKS" |  | ||||||
| weight: 10 |  | ||||||
| date: 2019-08-05 |  | ||||||
| description: > |  | ||||||
|     Additional configuration for Azure Kubernetes Service |  | ||||||
| --- |  | ||||||
| 
 |  | ||||||
| Azure AKS managed Kubernetes service adds to every pod the following environment variables: |  | ||||||
| 
 |  | ||||||
| ```yaml |  | ||||||
| - name: KUBERNETES_PORT_443_TCP_ADDR |  | ||||||
|   value: |  | ||||||
| - name: KUBERNETES_PORT |  | ||||||
|   value: tcp:// |  | ||||||
| - name: KUBERNETES_PORT_443_TCP |  | ||||||
|   value: tcp:// |  | ||||||
| - name: KUBERNETES_SERVICE_HOST |  | ||||||
|   value: |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| The operator is aware of it and omits these environment variables when checking if a Jenkins pod environment has been changed. It prevents the  |  | ||||||
| restart of a Jenkins pod over and over again. |  | ||||||
|  | @ -1,325 +0,0 @@ | ||||||
| --- |  | ||||||
| title: "Configuration" |  | ||||||
| linkTitle: "Configuration" |  | ||||||
| weight: 2 |  | ||||||
| date: 2019-08-05 |  | ||||||
| description: > |  | ||||||
|   How to configure Jenkins with Operator |  | ||||||
| --- |  | ||||||
| 
 |  | ||||||
| ## Configure Seed Jobs and Pipelines |  | ||||||
| 
 |  | ||||||
| Jenkins operator uses [job-dsl][job-dsl] and [kubernetes-credentials-provider][kubernetes-credentials-provider] plugins for configuring jobs |  | ||||||
| and deploy keys. |  | ||||||
| 
 |  | ||||||
| ## Prepare job definitions and pipelines |  | ||||||
| 
 |  | ||||||
| First you have to prepare pipelines and job definition in your GitHub repository using the following structure: |  | ||||||
| 
 |  | ||||||
| ``` |  | ||||||
| cicd/ |  | ||||||
| ├── jobs |  | ||||||
| │   └── build.jenkins |  | ||||||
| └── pipelines |  | ||||||
|     └── build.jenkins |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| **`cicd/jobs/build.jenkins`** is a job definition: |  | ||||||
| 
 |  | ||||||
| ``` |  | ||||||
| #!/usr/bin/env groovy |  | ||||||
| 
 |  | ||||||
| pipelineJob('build-jenkins-operator') { |  | ||||||
|     displayName('Build jenkins-operator') |  | ||||||
| 
 |  | ||||||
|     definition { |  | ||||||
|         cpsScm { |  | ||||||
|             scm { |  | ||||||
|                 git { |  | ||||||
|                     remote { |  | ||||||
|                         url('https://github.com/jenkinsci/kubernetes-operator.git') |  | ||||||
|                         credentials('jenkins-operator') |  | ||||||
|                     } |  | ||||||
|                     branches('*/master') |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
|             scriptPath('cicd/pipelines/build.jenkins') |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| **`cicd/pipelines/build.jenkins`** is an actual Jenkins pipeline: |  | ||||||
| 
 |  | ||||||
| ``` |  | ||||||
| #!/usr/bin/env groovy |  | ||||||
| 
 |  | ||||||
| def label = "build-jenkins-operator-${UUID.randomUUID().toString()}" |  | ||||||
| def home = "/home/jenkins" |  | ||||||
| def workspace = "${home}/workspace/build-jenkins-operator" |  | ||||||
| def workdir = "${workspace}/src/github.com/jenkinsci/kubernetes-operator/" |  | ||||||
| 
 |  | ||||||
| podTemplate(label: label, |  | ||||||
|         containers: [ |  | ||||||
|                 containerTemplate(name: 'jnlp', image: 'jenkins/jnlp-slave:alpine'), |  | ||||||
|                 containerTemplate(name: 'go', image: 'golang:1-alpine', command: 'cat', ttyEnabled: true), |  | ||||||
|         ], |  | ||||||
|         envVars: [ |  | ||||||
|                 envVar(key: 'GOPATH', value: workspace), |  | ||||||
|         ], |  | ||||||
|         ) { |  | ||||||
| 
 |  | ||||||
|     node(label) { |  | ||||||
|         dir(workdir) { |  | ||||||
|             stage('Init') { |  | ||||||
|                 timeout(time: 3, unit: 'MINUTES') { |  | ||||||
|                     checkout scm |  | ||||||
|                 } |  | ||||||
|                 container('go') { |  | ||||||
|                     sh 'apk --no-cache --update add make git gcc libc-dev' |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
| 
 |  | ||||||
|             stage('Dep') { |  | ||||||
|                 container('go') { |  | ||||||
|                     sh 'make dep' |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
| 
 |  | ||||||
|             stage('Test') { |  | ||||||
|                 container('go') { |  | ||||||
|                     sh 'make test' |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
| 
 |  | ||||||
|             stage('Build') { |  | ||||||
|                 container('go') { |  | ||||||
|                     sh 'make build' |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| ## Configure Seed Jobs |  | ||||||
| 
 |  | ||||||
| Jenkins Seed Jobs are configured using `Jenkins.spec.seedJobs` section from your custom resource manifest: |  | ||||||
| 
 |  | ||||||
| ``` |  | ||||||
| apiVersion: jenkins.io/v1alpha2 |  | ||||||
| kind: Jenkins |  | ||||||
| metadata: |  | ||||||
|   name: example |  | ||||||
| spec: |  | ||||||
|   seedJobs: |  | ||||||
|   - id: jenkins-operator |  | ||||||
|     targets: "cicd/jobs/*.jenkins" |  | ||||||
|     description: "Jenkins Operator repository" |  | ||||||
|     repositoryBranch: master |  | ||||||
|     repositoryUrl: https://github.com/jenkinsci/kubernetes-operator.git |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| **Jenkins Operator** will automatically discover and configure all the seed jobs. |  | ||||||
| 
 |  | ||||||
| You can verify if deploy keys were successfully configured in the Jenkins **Credentials** tab. |  | ||||||
| 
 |  | ||||||
|  |  | ||||||
| 
 |  | ||||||
| You can verify if your pipelines were successfully configured in the Jenkins Seed Job console output. |  | ||||||
| 
 |  | ||||||
|  |  | ||||||
| 
 |  | ||||||
| If your GitHub repository is **private** you have to configure SSH or username/password authentication. |  | ||||||
| 
 |  | ||||||
| ### SSH authentication |  | ||||||
| 
 |  | ||||||
| #### Generate SSH Keys |  | ||||||
| 
 |  | ||||||
| There are two methods of SSH private key generation: |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| $ openssl genrsa -out <filename> 2048 |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| or |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| $ ssh-keygen -t rsa -b 2048 |  | ||||||
| $ ssh-keygen -p -f <filename> -m pem |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Then copy content from generated file.  |  | ||||||
| 
 |  | ||||||
| #### Public key |  | ||||||
| 
 |  | ||||||
| If you want to upload your public key to your Git server you need to extract it. |  | ||||||
| 
 |  | ||||||
| If key was generated by `openssl` then you need to type this to extract public key: |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| $ openssl rsa -in <filename> -pubout > <filename>.pub |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| If key was generated by `ssh-keygen` the public key content is located in <filename>.pub and there is no need to extract public key |  | ||||||
| 
 |  | ||||||
| #### Configure SSH authentication |  | ||||||
| 
 |  | ||||||
| Configure a seed job like this: |  | ||||||
| 
 |  | ||||||
| ``` |  | ||||||
| apiVersion: jenkins.io/v1alpha2 |  | ||||||
| kind: Jenkins |  | ||||||
| metadata: |  | ||||||
|   name: example |  | ||||||
| spec: |  | ||||||
|   seedJobs: |  | ||||||
|   - id: jenkins-operator-ssh |  | ||||||
|     credentialType: basicSSHUserPrivateKey |  | ||||||
|     credentialID: k8s-ssh |  | ||||||
|     targets: "cicd/jobs/*.jenkins" |  | ||||||
|     description: "Jenkins Operator repository" |  | ||||||
|     repositoryBranch: master |  | ||||||
|     repositoryUrl: git@github.com:jenkinsci/kubernetes-operator.git |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| and create a Kubernetes Secret (name of secret should be the same from `credentialID` field): |  | ||||||
| 
 |  | ||||||
| ``` |  | ||||||
| apiVersion: v1 |  | ||||||
| kind: Secret |  | ||||||
| metadata: |  | ||||||
|   name: k8s-ssh |  | ||||||
| stringData: |  | ||||||
|   privateKey: | |  | ||||||
|     -----BEGIN RSA PRIVATE KEY----- |  | ||||||
|     MIIJKAIBAAKCAgEAxxDpleJjMCN5nusfW/AtBAZhx8UVVlhhhIKXvQ+dFODQIdzO |  | ||||||
|     oDXybs1zVHWOj31zqbbJnsfsVZ9Uf3p9k6xpJ3WFY9b85WasqTDN1xmSd6swD4N8 |  | ||||||
|     ... |  | ||||||
|   username: github_user_name |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| ### Username & password authentication |  | ||||||
| 
 |  | ||||||
| Configure the seed job like: |  | ||||||
| 
 |  | ||||||
| ``` |  | ||||||
| apiVersion: jenkins.io/v1alpha2 |  | ||||||
| kind: Jenkins |  | ||||||
| metadata: |  | ||||||
|   name: example |  | ||||||
| spec: |  | ||||||
|   seedJobs: |  | ||||||
|   - id: jenkins-operator-user-pass |  | ||||||
|     credentialType: usernamePassword |  | ||||||
|     credentialID: k8s-user-pass |  | ||||||
|     targets: "cicd/jobs/*.jenkins" |  | ||||||
|     description: "Jenkins Operator repository" |  | ||||||
|     repositoryBranch: master |  | ||||||
|     repositoryUrl: https://github.com/jenkinsci/kubernetes-operator.git |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| and create a Kubernetes Secret (name of secret should be the same from `credentialID` field): |  | ||||||
| 
 |  | ||||||
| ``` |  | ||||||
| apiVersion: v1 |  | ||||||
| kind: Secret |  | ||||||
| metadata: |  | ||||||
|   name: k8s-user-pass |  | ||||||
| stringData: |  | ||||||
|   username: github_user_name |  | ||||||
|   password: password_or_token |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| ## HTTP Proxy for downloading plugins |  | ||||||
| 
 |  | ||||||
| To use forwarding proxy with an operator to download plugins you need to add the following environment variable to Jenkins Custom Resource (CR), e.g.: |  | ||||||
| 
 |  | ||||||
| ```yaml |  | ||||||
| spec: |  | ||||||
|   master: |  | ||||||
|     containers: |  | ||||||
|       - name: jenkins-master |  | ||||||
|         env: |  | ||||||
|           - name: CURL_OPTIONS |  | ||||||
|             value: -L -x <proxy_url> |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| In `CURL_OPTIONS` var you can set additional arguments to `curl` command. |  | ||||||
| 
 |  | ||||||
| ## Pulling Docker images from private repositories |  | ||||||
| 
 |  | ||||||
| To pull a Docker Image from private repository you can use `imagePullSecrets`. |  | ||||||
| 
 |  | ||||||
| Please follow the instructions on [creating a secret with a docker config](https://kubernetes.io/docs/concepts/containers/images/?origin_team=T42NTAGHM#creating-a-secret-with-a-docker-config). |  | ||||||
| 
 |  | ||||||
| ### Docker Hub Configuration |  | ||||||
| To use Docker Hub additional steps are required. |  | ||||||
| 
 |  | ||||||
| Edit the previously created secret: |  | ||||||
| ```bash |  | ||||||
| kubectl -n <namespace> edit secret <name> |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| The `.dockerconfigjson` key's value needs to be replaced with a modified version. |  | ||||||
| 
 |  | ||||||
| After modifications, it needs to be encoded as a Base64 value before setting the `.dockerconfigjson` key. |  | ||||||
| 
 |  | ||||||
| Example config file to modify and use: |  | ||||||
| ``` |  | ||||||
| { |  | ||||||
|     "auths":{ |  | ||||||
|         "https://index.docker.io/v1/":{ |  | ||||||
|             "username":"user", |  | ||||||
|             "password":"password", |  | ||||||
|             "email":"yourdockeremail@gmail.com", |  | ||||||
|             "auth":"base64 of string user:password" |  | ||||||
|         }, |  | ||||||
|         "auth.docker.io":{ |  | ||||||
|             "username":"user", |  | ||||||
|             "password":"password", |  | ||||||
|             "email":"yourdockeremail@gmail.com", |  | ||||||
|             "auth":"base64 of string user:password" |  | ||||||
|         }, |  | ||||||
|         "registry.docker.io":{ |  | ||||||
|             "username":"user", |  | ||||||
|             "password":"password", |  | ||||||
|             "email":"yourdockeremail@gmail.com", |  | ||||||
|             "auth":"base64 of string user:password" |  | ||||||
|         }, |  | ||||||
|         "docker.io":{ |  | ||||||
|             "username":"user", |  | ||||||
|             "password":"password", |  | ||||||
|             "email":"yourdockeremail@gmail.com", |  | ||||||
|             "auth":"base64 of string user:password" |  | ||||||
|         }, |  | ||||||
|         "https://registry-1.docker.io/v2/": { |  | ||||||
|             "username":"user", |  | ||||||
|             "password":"password", |  | ||||||
|             "email":"yourdockeremail@gmail.com", |  | ||||||
|             "auth":"base64 of string user:password" |  | ||||||
|         }, |  | ||||||
|         "registry-1.docker.io/v2/": { |  | ||||||
|             "username":"user", |  | ||||||
|             "password":"password", |  | ||||||
|             "email":"yourdockeremail@gmail.com", |  | ||||||
|             "auth":"base64 of string user:password" |  | ||||||
|         }, |  | ||||||
|         "registry-1.docker.io": { |  | ||||||
|             "username":"user", |  | ||||||
|             "password":"password", |  | ||||||
|             "email":"yourdockeremail@gmail.com", |  | ||||||
|             "auth":"base64 of string user:password" |  | ||||||
|         }, |  | ||||||
|         "https://registry-1.docker.io": { |  | ||||||
|             "username":"user", |  | ||||||
|             "password":"password", |  | ||||||
|             "email":"yourdockeremail@gmail.com", |  | ||||||
|             "auth":"base64 of string user:password" |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| [job-dsl]:https://github.com/jenkinsci/job-dsl-plugin |  | ||||||
| [kubernetes-credentials-provider]:https://jenkinsci.github.io/kubernetes-credentials-provider-plugin/ |  | ||||||
|  | @ -1,86 +0,0 @@ | ||||||
| --- |  | ||||||
| title: "Configure backup and restore" |  | ||||||
| linkTitle: "Configure backup and restore" |  | ||||||
| weight: 10 |  | ||||||
| date: 2019-08-05 |  | ||||||
| description: > |  | ||||||
|   Prevent loss of job history |  | ||||||
| --- |  | ||||||
| 
 |  | ||||||
| Backup and restore is done by a container sidecar. |  | ||||||
| 
 |  | ||||||
| ### PVC |  | ||||||
| 
 |  | ||||||
| #### Create PVC |  | ||||||
| 
 |  | ||||||
| Save to the file named pvc.yaml: |  | ||||||
| ```yaml |  | ||||||
| apiVersion: v1 |  | ||||||
| kind: PersistentVolumeClaim |  | ||||||
| metadata: |  | ||||||
|   name: <pvc_name> |  | ||||||
|   namespace: <namespace> |  | ||||||
| spec: |  | ||||||
|   accessModes: |  | ||||||
|   - ReadWriteOnce |  | ||||||
|   resources: |  | ||||||
|     requests: |  | ||||||
|       storage: 500Gi |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Run the following command: |  | ||||||
| ```bash |  | ||||||
| $ kubectl -n <namespace> create -f pvc.yaml |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| #### Configure Jenkins CR |  | ||||||
| 
 |  | ||||||
| ```yaml |  | ||||||
| apiVersion: jenkins.io/v1alpha2 |  | ||||||
| kind: Jenkins |  | ||||||
| metadata: |  | ||||||
|   name: <cr_name> |  | ||||||
|   namespace: <namespace> |  | ||||||
| spec: |  | ||||||
|   master: |  | ||||||
|     securityContext: |  | ||||||
|       runAsUser: 1000 |  | ||||||
|       fsGroup: 1000 |  | ||||||
|     containers: |  | ||||||
|     - name: jenkins-master |  | ||||||
|       image: jenkins/jenkins:lts |  | ||||||
|     - name: backup # container responsible for the backup and restore |  | ||||||
|       env: |  | ||||||
|       - name: BACKUP_DIR |  | ||||||
|         value: /backup |  | ||||||
|       - name: JENKINS_HOME |  | ||||||
|         value: /jenkins-home |  | ||||||
|       - name: BACKUP_COUNT |  | ||||||
|         value: "3" # keep only the 2 most recent backups |  | ||||||
|       image: virtuslab/jenkins-operator-backup-pvc:v0.0.7 # look at backup/pvc directory |  | ||||||
|       imagePullPolicy: IfNotPresent |  | ||||||
|       volumeMounts: |  | ||||||
|       - mountPath: /jenkins-home # Jenkins home volume |  | ||||||
|         name: jenkins-home |  | ||||||
|       - mountPath: /backup # backup volume |  | ||||||
|         name: backup |  | ||||||
|     volumes: |  | ||||||
|     - name: backup # PVC volume where backups will be stored |  | ||||||
|       persistentVolumeClaim: |  | ||||||
|         claimName: <pvc_name> |  | ||||||
|   backup: |  | ||||||
|     containerName: backup # container name is responsible for backup |  | ||||||
|     action: |  | ||||||
|       exec: |  | ||||||
|         command: |  | ||||||
|         - /home/user/bin/backup.sh # this command is invoked on "backup" container to make backup, for example /home/user/bin/backup.sh <backup_number>, <backup_number> is passed by operator |  | ||||||
|     interval: 30 # how often make backup in seconds |  | ||||||
|     makeBackupBeforePodDeletion: true # make a backup before pod deletion |  | ||||||
|   restore: |  | ||||||
|     containerName: backup # container name is responsible for restore backup |  | ||||||
|     action: |  | ||||||
|       exec: |  | ||||||
|         command: |  | ||||||
|         - /home/user/bin/restore.sh # this command is invoked on "backup" container to make restore backup, for example /home/user/bin/restore.sh <backup_number>, <backup_number> is passed by operator |  | ||||||
|     #recoveryOnce: <backup_number> # if want to restore specific backup configure this field and then Jenkins will be restarted and desired backup will be restored |  | ||||||
| ``` |  | ||||||
|  | @ -1,184 +0,0 @@ | ||||||
| --- |  | ||||||
| title: "Custom Backup and Restore Providers" |  | ||||||
| linkTitle: "Custom Backup and Restore Providers" |  | ||||||
| weight: 10 |  | ||||||
| date: 2019-08-05 |  | ||||||
| description: > |  | ||||||
|   Custom backup and restore provider |  | ||||||
| --- |  | ||||||
| 
 |  | ||||||
| With enough effort one can create a custom backup and restore provider  |  | ||||||
| for the Jenkins Operator. |  | ||||||
| 
 |  | ||||||
| ## Requirements |  | ||||||
| 
 |  | ||||||
| Two commands (e.g. scripts) are required: |  | ||||||
| 
 |  | ||||||
| - a backup command, e.g. `backup.sh` that takes one argument, a **backup number** |  | ||||||
| - a restore command, e.g. `backup.sh` that takes one argument, a **backup number** |  | ||||||
| 
 |  | ||||||
| Both scripts need to return an exit code of `0` on success and `1` or greater for failure. |  | ||||||
| 
 |  | ||||||
| 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. |  | ||||||
| 
 |  | ||||||
| ## How it works |  | ||||||
| 
 |  | ||||||
| The mechanism relies on basic Kubernetes and UNIX functionalities. |  | ||||||
| 
 |  | ||||||
| The backup (and restore) container runs as a sidecar in the same  |  | ||||||
| Kubernetes pod as the Jenkins master. |  | ||||||
| 
 |  | ||||||
| Name of the backup and restore containers can be set as necessary using  |  | ||||||
| `spec.backup.containerName` and `spec.restore.containerName`.  |  | ||||||
| In most cases it will be the same container, but we allow for less common use cases. |  | ||||||
| 
 |  | ||||||
| The operator will call a backup or restore commands inside a sidecar container when necessary: |  | ||||||
| 
 |  | ||||||
| - backup command (defined in `spec.backup.action.exec.command`)  |  | ||||||
|   will be called every `N` seconds configurable in: `spec.backup.interval` |  | ||||||
|   and on pod shutdown (if enabled in `spec.backup.makeBackupBeforePodDeletion`) |  | ||||||
|   with an integer representing the current backup number as first and only argument |  | ||||||
| - restore command (defined in `spec.restore.action.exec.command`)  |  | ||||||
|   will be called at Jenkins startup  |  | ||||||
|   with an integer representing the backup number to restore as first and only argument |  | ||||||
|   (can be overridden using `spec.restore.recoveryOnce`) |  | ||||||
| 
 |  | ||||||
| ## Example AWS S3 backup using the CLI |  | ||||||
| 
 |  | ||||||
| This example shows abbreviated version of a simple AWS S3 backup implementation |  | ||||||
| using: `aws-cli`, `bash` and `kube2iam`.  |  | ||||||
| 
 |  | ||||||
| In addition to your normal `Jenkins` `CustomResource` some additional settings  |  | ||||||
| for backup and restore are required, e.g.: |  | ||||||
| 
 |  | ||||||
| ```yaml |  | ||||||
| kind: Jenkins |  | ||||||
| apiVersion: jenkins.io/v1alpha1 |  | ||||||
| metadata: |  | ||||||
|   name: example |  | ||||||
|   namespace: jenkins |  | ||||||
| spec: |  | ||||||
|   master: |  | ||||||
|     masterAnnotations: |  | ||||||
|       iam.amazonaws.com/role: "my-example-backup-role" # tell kube2iam where the AWS IAM role is |  | ||||||
|     containers: |  | ||||||
|       - name: jenkins-master |  | ||||||
|         ... |  | ||||||
|       - name: backup # container responsible for backup and restore |  | ||||||
|         image: quay.io/virtuslab/aws-cli:1.16.263-2 |  | ||||||
|         workingDir: /home/user/bin/ |  | ||||||
|         command: # our container entry point |  | ||||||
|           - sleep |  | ||||||
|           - infinity |  | ||||||
|         env: |  | ||||||
|           - name: BACKUP_BUCKET |  | ||||||
|             value: my-example-bucket # the S3 bucket name to use |  | ||||||
|           - name: BACKUP_PATH |  | ||||||
|             value: my-backup-path # the S3 bucket path prefix to use |  | ||||||
|           - name: JENKINS_HOME |  | ||||||
|             value: /jenkins-home # the path to mount jenkins home dir in the backup container |  | ||||||
|         volumeMounts: |  | ||||||
|           - mountPath: /jenkins-home # Jenkins home volume |  | ||||||
|             name: jenkins-home |  | ||||||
|           - mountPath: /home/user/bin/backup.sh |  | ||||||
|             name: backup-scripts |  | ||||||
|             subPath: backup.sh |  | ||||||
|             readOnly: true |  | ||||||
|           - mountPath: /home/user/bin/restore.sh |  | ||||||
|             name: backup-scripts |  | ||||||
|             subPath: restore.sh |  | ||||||
|             readOnly: true |  | ||||||
|     volumes: |  | ||||||
|       - name: backup-scripts |  | ||||||
|         configMap: |  | ||||||
|           defaultMode: 0754 |  | ||||||
|           name: jenkins-operator-backup-s3 |  | ||||||
|     securityContext: # make sure both containers use the same UID and GUID |  | ||||||
|       runAsUser: 1000 |  | ||||||
|       fsGroup: 1000 |  | ||||||
|   ... |  | ||||||
|   backup: |  | ||||||
|     containerName: backup # container name responsible for backup |  | ||||||
|     interval: 3600 # how often make a backup in seconds |  | ||||||
|     makeBackupBeforePodDeletion: true # trigger backup just before deleting the pod |  | ||||||
|     action: |  | ||||||
|       exec: |  | ||||||
|         command: |  | ||||||
|           # this command is invoked on "backup" container to create a backup, |  | ||||||
|           # <backup_number> is passed by operator, |  | ||||||
|           # for example /home/user/bin/backup.sh <backup_number> |  | ||||||
|           - /home/user/bin/backup.sh |  | ||||||
|   restore: |  | ||||||
|     containerName: backup # container name is responsible for restore backup |  | ||||||
|     action: |  | ||||||
|       exec: |  | ||||||
|         command: |  | ||||||
|           # this command is invoked on "backup" container to restore a backup, |  | ||||||
|           # <backup_number> is passed by operator |  | ||||||
|           # for example /home/user/bin/restore.sh <backup_number> |  | ||||||
|           - /home/user/bin/restore.sh |  | ||||||
| #    recoveryOnce: <backup_number> # if want to restore specific backup configure this field and then Jenkins will be restarted and desired backup will be restored |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| The actual backup and restore scripts will be provided in a `ConfigMap`: |  | ||||||
| 
 |  | ||||||
| ```yaml |  | ||||||
| kind: ConfigMap |  | ||||||
| apiVersion: v1 |  | ||||||
| metadata: |  | ||||||
|   name: jenkins-operator-backup-s3 |  | ||||||
|   namespace: jenkins |  | ||||||
|   labels: |  | ||||||
|     app: jenkins-operator |  | ||||||
| data: |  | ||||||
|   backup.sh: |- |  | ||||||
|     #!/bin/bash -xeu |  | ||||||
|     [[ ! $# -eq 1 ]] && echo "Usage: $0 backup_number" && exit 1; |  | ||||||
|     [[ -z "${BACKUP_BUCKET}" ]] && echo "Required 'BACKUP_BUCKET' env not set" && exit 1; |  | ||||||
|     [[ -z "${BACKUP_PATH}" ]] && echo "Required 'BACKUP_PATH' env not set" && exit 1; |  | ||||||
|     [[ -z "${JENKINS_HOME}" ]] && echo "Required 'JENKINS_HOME' env not set" && exit 1; |  | ||||||
| 
 |  | ||||||
|     backup_number=$1 |  | ||||||
|     echo "Running backup #${backup_number}" |  | ||||||
| 
 |  | ||||||
|     BACKUP_TMP_DIR=$(mktemp -d) |  | ||||||
|     tar -C ${JENKINS_HOME} -czf "${BACKUP_TMP_DIR}/${backup_number}.tar.gz" --exclude jobs/*/workspace* -c jobs && \ |  | ||||||
| 
 |  | ||||||
|     aws s3 cp ${BACKUP_TMP_DIR}/${backup_number}.tar.gz s3://${BACKUP_BUCKET}/${BACKUP_PATH}/${backup_number}.tar.gz |  | ||||||
|     echo Done |  | ||||||
| 
 |  | ||||||
|   restore.sh: |- |  | ||||||
|     #!/bin/bash -xeu |  | ||||||
|     [[ ! $# -eq 1 ]] && echo "Usage: $0 backup_number" && exit 1 |  | ||||||
|     [[ -z "${BACKUP_BUCKET}" ]] && echo "Required 'BACKUP_BUCKET' env not set" && exit 1; |  | ||||||
|     [[ -z "${BACKUP_PATH}" ]] && echo "Required 'BACKUP_PATH' env not set" && exit 1; |  | ||||||
|     [[ -z "${JENKINS_HOME}" ]] && echo "Required 'JENKINS_HOME' env not set" && exit 1; |  | ||||||
| 
 |  | ||||||
|     backup_number=$1 |  | ||||||
|     echo "Running restore #${backup_number}" |  | ||||||
| 
 |  | ||||||
|     BACKUP_TMP_DIR=$(mktemp -d) |  | ||||||
|     aws s3 cp s3://${BACKUP_BUCKET}/${BACKUP_PATH}/${backup_number}.tar.gz ${BACKUP_TMP_DIR}/${backup_number}.tar.gz |  | ||||||
| 
 |  | ||||||
|     tar -C ${JENKINS_HOME} -zxf "${BACKUP_TMP_DIR}/${backup_number}.tar.gz" |  | ||||||
|     echo Done |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| In our example we will use S3 bucket lifecycle policy to keep |  | ||||||
| the number of backups under control, e.g. Cloud Formation fragment: |  | ||||||
| ```yaml |  | ||||||
|     Type: AWS::S3::Bucket |  | ||||||
|     Properties: |  | ||||||
|       BucketName: my-example-bucket |  | ||||||
|       ... |  | ||||||
|       LifecycleConfiguration: |  | ||||||
|         Rules: |  | ||||||
|           - Id: BackupCleanup |  | ||||||
|             Status: Enabled |  | ||||||
|             Prefix: my-backup-path |  | ||||||
|             ExpirationInDays: 7 |  | ||||||
|             NoncurrentVersionExpirationInDays: 14 |  | ||||||
|             AbortIncompleteMultipartUpload: |  | ||||||
|               DaysAfterInitiation: 3 |  | ||||||
| ``` |  | ||||||
|  | @ -1,186 +0,0 @@ | ||||||
| --- |  | ||||||
| title: "Customization" |  | ||||||
| linkTitle: "Customization" |  | ||||||
| weight: 3 |  | ||||||
| date: 2019-08-05 |  | ||||||
| description: > |  | ||||||
|   How to customize Jenkins |  | ||||||
| --- |  | ||||||
| 
 |  | ||||||
| Jenkins can be customized using groovy scripts or the [configuration as code plugin](https://github.com/jenkinsci/configuration-as-code-plugin).  |  | ||||||
| By using a [ConfigMap](https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/) you can create your own **Jenkins** customized configuration. |  | ||||||
| Then you must reference the **`ConfigMap`** in the **Jenkins** pod customization file in `spec.groovyScripts` or `spec.configurationAsCode` |  | ||||||
| 
 |  | ||||||
| For example create a **`ConfigMap`** with name `jenkins-operator-user-configuration`. Then, modify the **Jenkins** manifest to look like this: |  | ||||||
| 
 |  | ||||||
| ```yaml |  | ||||||
| apiVersion: jenkins.io/v1alpha2 |  | ||||||
| kind: Jenkins |  | ||||||
| metadata: |  | ||||||
|   name: example |  | ||||||
| spec: |  | ||||||
|   configurationAsCode: |  | ||||||
|     configurations:  |  | ||||||
|     - name: jenkins-operator-user-configuration |  | ||||||
|   groovyScripts: |  | ||||||
|     configurations: |  | ||||||
|     - name: jenkins-operator-user-configuration |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Here is an example of `jenkins-operator-user-configuration`: |  | ||||||
| ```yaml |  | ||||||
| apiVersion: v1 |  | ||||||
| kind: ConfigMap |  | ||||||
| metadata: |  | ||||||
|   name: jenkins-operator-user-configuration |  | ||||||
| data: |  | ||||||
|   1-configure-theme.groovy: |  |  | ||||||
|     import jenkins.* |  | ||||||
|     import jenkins.model.* |  | ||||||
|     import hudson.* |  | ||||||
|     import hudson.model.* |  | ||||||
|     import org.jenkinsci.plugins.simpletheme.ThemeElement |  | ||||||
|     import org.jenkinsci.plugins.simpletheme.CssTextThemeElement |  | ||||||
|     import org.jenkinsci.plugins.simpletheme.CssUrlThemeElement |  | ||||||
| 
 |  | ||||||
|     Jenkins jenkins = Jenkins.getInstance() |  | ||||||
| 
 |  | ||||||
|     def decorator = Jenkins.instance.getDescriptorByType(org.codefirst.SimpleThemeDecorator.class) |  | ||||||
| 
 |  | ||||||
|     List<ThemeElement> configElements = new ArrayList<>(); |  | ||||||
|     configElements.add(new CssTextThemeElement("DEFAULT")); |  | ||||||
|     configElements.add(new CssUrlThemeElement("https://cdn.rawgit.com/afonsof/jenkins-material-theme/gh-pages/dist/material-light-green.css")); |  | ||||||
|     decorator.setElements(configElements); |  | ||||||
|     decorator.save(); |  | ||||||
| 
 |  | ||||||
|     jenkins.save() |  | ||||||
|   1-system-message.yaml: | |  | ||||||
|     jenkins: |  | ||||||
|       systemMessage: "Configuration as Code integration works!!!" |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| * `*.groovy` is Groovy script configuration |  | ||||||
| * `*.yaml is` configuration as code |  | ||||||
| 
 |  | ||||||
| If you want to correct your configuration you can edit it while the **Jenkins Operator** is running.  |  | ||||||
| Jenkins will reconcile and apply the new configuration. |  | ||||||
| 
 |  | ||||||
| ### Using secrets from a Groovy script |  | ||||||
| 
 |  | ||||||
| If you configured `spec.groovyScripts.secret.name`, then this secret is available to use from map Groovy scripts. |  | ||||||
| The secrets are loaded to `secrets` map. |  | ||||||
| 
 |  | ||||||
| Create a [secret](https://kubernetes.io/docs/concepts/configuration/secret/) with for example the name `jenkins-conf-secrets`. |  | ||||||
| 
 |  | ||||||
| ```yaml |  | ||||||
| kind: Secret |  | ||||||
| apiVersion: v1 |  | ||||||
| type: Opaque |  | ||||||
| metadata: |  | ||||||
|   name: jenkins-conf-secrets |  | ||||||
|   namespace: default |  | ||||||
| data: |  | ||||||
|   SYSTEM_MESSAGE: SGVsbG8gd29ybGQ= |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Then modify the **Jenkins** pod manifest by changing `spec.groovyScripts.secret.name` to `jenkins-conf-secrets`. |  | ||||||
| 
 |  | ||||||
| ```yaml |  | ||||||
| apiVersion: jenkins.io/v1alpha2 |  | ||||||
| kind: Jenkins |  | ||||||
| metadata: |  | ||||||
|   name: example |  | ||||||
| spec: |  | ||||||
|   configurationAsCode: |  | ||||||
|     configurations:  |  | ||||||
|     - name: jenkins-operator-user-configuration |  | ||||||
|     secret: |  | ||||||
|       name: jenkins-conf-secrets |  | ||||||
|   groovyScripts: |  | ||||||
|     configurations: |  | ||||||
|     - name: jenkins-operator-user-configuration |  | ||||||
|     secret: |  | ||||||
|       name: jenkins-conf-secrets |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Now you can test that the secret is mounted by applying this `ConfigMap` for Groovy script: |  | ||||||
| 
 |  | ||||||
| ```yaml |  | ||||||
| apiVersion: v1 |  | ||||||
| kind: ConfigMap |  | ||||||
| metadata: |  | ||||||
|   name: jenkins-operator-user-configuration |  | ||||||
| data: |  | ||||||
|   1-system-message.groovy: |  |  | ||||||
|     import jenkins.* |  | ||||||
|     import jenkins.model.* |  | ||||||
|     import hudson.* |  | ||||||
|     import hudson.model.* |  | ||||||
|     Jenkins jenkins = Jenkins.getInstance() |  | ||||||
|      |  | ||||||
|     jenkins.setSystemMessage(secrets["SYSTEM_MESSAGE"]) |  | ||||||
|     jenkins.save() |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Or by applying this configuration as code: |  | ||||||
| ```yaml |  | ||||||
| apiVersion: v1 |  | ||||||
| kind: ConfigMap |  | ||||||
| metadata: |  | ||||||
|   name: jenkins-operator-user-configuration |  | ||||||
| data: |  | ||||||
|   1-system-message.yaml: | |  | ||||||
|     jenkins: |  | ||||||
|       systemMessage: ${SYSTEM_MESSAGE} |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| After this, you should see the `Hello world` system message from the **Jenkins** homepage. |  | ||||||
| 
 |  | ||||||
| ## Install Plugins |  | ||||||
| 
 |  | ||||||
| Edit Custom Resource under `spec.master.plugins`: |  | ||||||
| 
 |  | ||||||
| ``` |  | ||||||
| apiVersion: jenkins.io/v1alpha2 |  | ||||||
| kind: Jenkins |  | ||||||
| metadata: |  | ||||||
|   name: example |  | ||||||
| spec: |  | ||||||
|   master: |  | ||||||
|    plugins: |  | ||||||
|    - name: simple-theme-plugin |  | ||||||
|      version: 0.5.1 |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Under `spec.master.basePlugins` you can find plugins for a valid **Jenkins Operator**: |  | ||||||
| 
 |  | ||||||
| ```yaml |  | ||||||
| apiVersion: jenkins.io/v1alpha2 |  | ||||||
| kind: Jenkins |  | ||||||
| metadata: |  | ||||||
|   name: example |  | ||||||
| spec: |  | ||||||
|   master: |  | ||||||
|     basePlugins: |  | ||||||
|     - name: kubernetes |  | ||||||
|       version: 1.18.3 |  | ||||||
|     - name: workflow-job |  | ||||||
|       version: "2.34" |  | ||||||
|     - name: workflow-aggregator |  | ||||||
|       version: "2.6" |  | ||||||
|     - name: git |  | ||||||
|       version: 3.12.0 |  | ||||||
|     - name: job-dsl |  | ||||||
|       version: "1.76" |  | ||||||
|     - name: configuration-as-code |  | ||||||
|       version: "1.29" |  | ||||||
|     - name: configuration-as-code-support |  | ||||||
|       version: "1.19" |  | ||||||
|     - name: kubernetes-credentials-provider |  | ||||||
|       version: 0.12.1 |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| You can change their versions. |  | ||||||
| 
 |  | ||||||
| The **Jenkins Operator** will then automatically install plugins after the Jenkins master pod restarts. |  | ||||||
|  | @ -1,89 +0,0 @@ | ||||||
| --- |  | ||||||
| title: "Deploy Jenkins" |  | ||||||
| linkTitle: "Deploy Jenkins" |  | ||||||
| weight: 1 |  | ||||||
| date: 2019-08-05 |  | ||||||
| description: > |  | ||||||
|   Deploy production ready Jenkins Operator manifest |  | ||||||
| --- |  | ||||||
| 
 |  | ||||||
| Once Jenkins Operator is up and running let's deploy actual Jenkins instance. |  | ||||||
| Create manifest e.g. **`jenkins_instance.yaml`** with following data and save it on drive. |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| apiVersion: jenkins.io/v1alpha2 |  | ||||||
| kind: Jenkins |  | ||||||
| metadata: |  | ||||||
|   name: example |  | ||||||
| spec: |  | ||||||
|   master: |  | ||||||
|     containers: |  | ||||||
|     - name: jenkins-master |  | ||||||
|       image: jenkins/jenkins:lts |  | ||||||
|       imagePullPolicy: Always |  | ||||||
|       livenessProbe: |  | ||||||
|         failureThreshold: 12 |  | ||||||
|         httpGet: |  | ||||||
|           path: /login |  | ||||||
|           port: http |  | ||||||
|           scheme: HTTP |  | ||||||
|         initialDelaySeconds: 80 |  | ||||||
|         periodSeconds: 10 |  | ||||||
|         successThreshold: 1 |  | ||||||
|         timeoutSeconds: 5 |  | ||||||
|       readinessProbe: |  | ||||||
|         failureThreshold: 3 |  | ||||||
|         httpGet: |  | ||||||
|           path: /login |  | ||||||
|           port: http |  | ||||||
|           scheme: HTTP |  | ||||||
|         initialDelaySeconds: 30 |  | ||||||
|         periodSeconds: 10 |  | ||||||
|         successThreshold: 1 |  | ||||||
|         timeoutSeconds: 1 |  | ||||||
|       resources: |  | ||||||
|         limits: |  | ||||||
|           cpu: 1500m |  | ||||||
|           memory: 3Gi |  | ||||||
|         requests: |  | ||||||
|           cpu: "1" |  | ||||||
|           memory: 500Mi |  | ||||||
|   seedJobs: |  | ||||||
|   - id: jenkins-operator |  | ||||||
|     targets: "cicd/jobs/*.jenkins" |  | ||||||
|     description: "Jenkins Operator repository" |  | ||||||
|     repositoryBranch: master |  | ||||||
|     repositoryUrl: https://github.com/jenkinsci/kubernetes-operator.git |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Deploy a Jenkins to Kubernetes: |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| kubectl create -f jenkins_instance.yaml |  | ||||||
| ``` |  | ||||||
| Watch the Jenkins instance being created: |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| kubectl get pods -w |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Get the Jenkins credentials: |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| kubectl get secret jenkins-operator-credentials-<cr_name> -o 'jsonpath={.data.user}' | base64 -d |  | ||||||
| kubectl get secret jenkins-operator-credentials-<cr_name> -o 'jsonpath={.data.password}' | base64 -d |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Connect to the Jenkins instance (minikube): |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| minikube service jenkins-operator-http-<cr_name> --url |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Connect to the Jenkins instance (actual Kubernetes cluster): |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| kubectl port-forward jenkins-<cr_name> 8080:8080 |  | ||||||
| ``` |  | ||||||
| Then open browser with address `http://localhost:8080`. |  | ||||||
|  |  | ||||||
|  | @ -1,227 +0,0 @@ | ||||||
| --- |  | ||||||
| title: "Developer Guide" |  | ||||||
| linkTitle: "Developer Guide" |  | ||||||
| weight: 60 |  | ||||||
| date: 2019-08-05 |  | ||||||
| description: > |  | ||||||
|   Jenkins Operator for developers |  | ||||||
| --- |  | ||||||
| 
 |  | ||||||
| {{% pageinfo %}} |  | ||||||
| This document explains how to setup your development environment. |  | ||||||
| {{% /pageinfo %}} |  | ||||||
| 
 |  | ||||||
| ## Prerequisites |  | ||||||
| 
 |  | ||||||
| - [operator_sdk][operator_sdk] version v0.8.1 |  | ||||||
| - [git][git_tool] |  | ||||||
| - [go][go_tool] version v1.12+ |  | ||||||
| - [goimports, golint, checkmake and staticcheck][install_dev_tools] |  | ||||||
| - [minikube][minikube] version v1.1.0+ (preferred Hypervisor - [virtualbox][virtualbox]) |  | ||||||
| - [docker][docker_tool] version 17.03+ |  | ||||||
| 
 |  | ||||||
| ## Clone repository and download dependencies |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| mkdir -p $GOPATH/src/github.com/jenkinsci |  | ||||||
| cd $GOPATH/src/github.com/jenkinsci/ |  | ||||||
| git clone git@github.com:jenkinsci/kubernetes-operator.git |  | ||||||
| cd kubernetes-operator |  | ||||||
| make go-dependencies |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| ## Build and run with a minikube |  | ||||||
| 
 |  | ||||||
| Build and run **Jenkins Operator** locally: |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| make build minikube-run OPERATOR_EXTRA_ARGS='--jenkins-api-hostname=$(eval minikube ip) --jenkins-api-use-nodeport=true' |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Once minikube and **Jenkins Operator** are up and running, apply Jenkins custom resource: |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| kubectl apply -f deploy/crds/jenkins_v1alpha2_jenkins_cr.yaml |  | ||||||
| kubectl get jenkins -o yaml |  | ||||||
| kubectl get po |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| ## Build and run with a remote Kubernetes cluster |  | ||||||
| 
 |  | ||||||
| You can also run the controller locally and make it listen to a remote Kubernetes server. |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| make run NAMESPACE=default KUBECTL_CONTEXT=remote-k8s OPERATOR_EXTRA_ARGS='--kubeconfig ~/.kube/config' |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Once minikube and **Jenkins Operator** are up and running, apply Jenkins custom resource: |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| kubectl --context remote-k8s --namespace default apply -f deploy/crds/jenkins_v1alpha2_jenkins_cr.yaml |  | ||||||
| kubectl --context remote-k8s --namespace default get jenkins -o yaml |  | ||||||
| kubectl --context remote-k8s --namespace default get po |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| ## Testing |  | ||||||
| 
 |  | ||||||
| Run unit tests: |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| make test |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| ### Running E2E tests on Linux |  | ||||||
| 
 |  | ||||||
| Run e2e tests with minikube: |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| make minikube-start |  | ||||||
| eval $(minikube docker-env) |  | ||||||
| make build e2e config=config.minikube.env CONTAINER_RUNTIME=podman |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| `config.minikube.env` is the E2E test profile which provides all connection info to operator to run on minikube. |  | ||||||
| 
 |  | ||||||
| Run the specific e2e test: |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| make build e2e E2E_TEST_SELECTOR='^TestConfiguration$' config=config.minikube.env CONTAINER_RUNTIME=podman |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| If you want to run E2E tests on CRC (Code Ready Containers by OpenShift), you should use `config.crc.env` profile instead of `config.minikube.env`. |  | ||||||
| If you have some trouble with `podman` (for example building) then check [how to use docker instead of podman](#using-docker-instead-of-podman). |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| ### Running E2E tests on macOS |  | ||||||
| 
 |  | ||||||
| At first, you need to start minikube: |  | ||||||
| ```bash |  | ||||||
| $ make minikube-start |  | ||||||
| $ eval $(minikube docker-env)  |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Build a Docker image inside the provided Linux container by: |  | ||||||
| ```bash |  | ||||||
| $ make indocker |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Build **Jenkins Operator** inside a container using: |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| $ make build |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Then exit the container and run: |  | ||||||
| ``` |  | ||||||
| make e2e config=config.minikube.env |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| or using `crc` as cluster software: |  | ||||||
| ``` |  | ||||||
| make e2e config=config.crc.env |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| ### Using Docker instead of podman |  | ||||||
| 
 |  | ||||||
| If you have trouble with building image using the `podman`, you can set additional flag `IMAGE_PULL_MODE` to pull image from the organization. |  | ||||||
| 
 |  | ||||||
| At first, you need to edit `config.base.env` and change the `DOCKER_ORGANIZATION` to your [Docker Hub](https://hub.docker.com/) account/organization. |  | ||||||
| After this change the `IMAGE_PULL_MODE` to `remote`. It will setup the `Makefile` goal to pull Docker image from registry.  |  | ||||||
| Then you need to pull image from your repository: |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| $ make container-runtime-build container-runtime-snapshot-push |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| When image will be uploaded to repository, you can now write this command to run E2E tests: |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| $ make e2e E2E_TEST_SELECTOR='^TestConfiguration$' config=config.crc.env |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| ## Tips & Tricks |  | ||||||
| 
 |  | ||||||
| ### Building docker image on minikube (for e2e tests) |  | ||||||
| 
 |  | ||||||
| To be able to work with the docker daemon on `minikube` machine run the following command before building an image: |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| eval $(minikube docker-env) |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| ### When `pkg/apis/jenkinsio/*/jenkins_types.go` has changed |  | ||||||
| 
 |  | ||||||
| Run: |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| make deepcopy-gen |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| ### Getting the Jenkins URL and basic credentials |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| minikube service jenkins-operator-http-<cr_name> --url |  | ||||||
| kubectl get secret jenkins-operator-credentials-<cr_name> -o 'jsonpath={.data.user}' | base64 -d |  | ||||||
| kubectl get secret jenkins-operator-credentials-<cr_name> -o 'jsonpath={.data.password}' | base64 -d |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| # Tools |  | ||||||
| 
 |  | ||||||
| ## Configure environment variables |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| export GOPATH=/home/go # example value |  | ||||||
| export GOROOT=/usr/lib/go-1.12 # example value |  | ||||||
| export PATH=$GOPATH/bin:$PATH |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| ## goimports |  | ||||||
| 
 |  | ||||||
| ``` |  | ||||||
| go get golang.org/x/tools/cmd/goimports |  | ||||||
| cd $GOPATH/src/golang.org/x/tools/cmd/goimports |  | ||||||
| go build |  | ||||||
| go install |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| ## golint |  | ||||||
| 
 |  | ||||||
| ``` |  | ||||||
| go get -u golang.org/x/lint/golint |  | ||||||
| cd  $GOPATH/src/golang.org/x/lint/golint |  | ||||||
| go build |  | ||||||
| go install |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| ## checkmake |  | ||||||
| ``` |  | ||||||
| go get github.com/mrtazz/checkmake |  | ||||||
| cd $GOPATH/src/github.com/mrtazz/checkmake |  | ||||||
| go build |  | ||||||
| go install |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| ## staticcheck |  | ||||||
| 
 |  | ||||||
| ``` |  | ||||||
| mkdir -p $GOPATH/src/github.com/dominikh/ |  | ||||||
| cd $GOPATH/src/github.com/dominikh/ |  | ||||||
| git clone https://github.com/dominikh/go-tools.git |  | ||||||
| cd  $GOPATH/src/github.com/dominikh/go-tools/staticcheck |  | ||||||
| go build |  | ||||||
| go install |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| [dep_tool]:https://golang.github.io/dep/docs/installation.html |  | ||||||
| [git_tool]:https://git-scm.com/downloads |  | ||||||
| [go_tool]:https://golang.org/dl/ |  | ||||||
| [operator_sdk]:https://github.com/operator-framework/operator-sdk |  | ||||||
| [fork_guide]:https://help.github.com/articles/fork-a-repo/ |  | ||||||
| [docker_tool]:https://docs.docker.com/install/ |  | ||||||
| [kubectl_tool]:https://kubernetes.io/docs/tasks/tools/install-kubectl/ |  | ||||||
| [minikube]:https://kubernetes.io/docs/tasks/tools/install-minikube/ |  | ||||||
| [virtualbox]:https://www.virtualbox.org/wiki/Downloads |  | ||||||
| [jenkins-operator]:../README.md |  | ||||||
| [install_dev_tools]:install_dev_tools.md |  | ||||||
|  | @ -1,42 +0,0 @@ | ||||||
| --- |  | ||||||
| title: "Diagnostics" |  | ||||||
| linkTitle: "Diagnostics" |  | ||||||
| weight: 40 |  | ||||||
| date: 2019-08-05 |  | ||||||
| description: > |  | ||||||
|   How to deal with Jenkins Operator problems |  | ||||||
| --- |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| Turn on debug in **Jenkins Operator** deployment: |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| sed -i 's|\(args:\).*|\1\ ["--debug"\]|' deploy/operator.yaml |  | ||||||
| kubectl apply -f deploy/operator.yaml |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Watch Kubernetes events: |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| kubectl get events --sort-by='{.lastTimestamp}' |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Verify Jenkins master logs: |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| kubectl logs -f jenkins-<cr_name> |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Verify the `jenkins-operator` logs: |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| kubectl logs deployment/jenkins-operator |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| ## Troubleshooting |  | ||||||
| 
 |  | ||||||
| Delete the Jenkins master pod and wait for the new one to come up: |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| kubectl delete pod jenkins-<cr_name> |  | ||||||
| ``` |  | ||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							|  | @ -1,198 +0,0 @@ | ||||||
| --- |  | ||||||
| title: "Developer Guide" |  | ||||||
| linkTitle: "Developer Guide" |  | ||||||
| weight: 60 |  | ||||||
| date: 2019-08-05 |  | ||||||
| description: > |  | ||||||
|   Jenkins Operator for developers |  | ||||||
| --- |  | ||||||
| 
 |  | ||||||
| {{% pageinfo %}} |  | ||||||
| This document explains how to setup your development environment. |  | ||||||
| {{% /pageinfo %}} |  | ||||||
| 
 |  | ||||||
| ## Prerequisites |  | ||||||
| 
 |  | ||||||
| - [operator_sdk][operator_sdk] version v0.8.1 |  | ||||||
| - [git][git_tool] |  | ||||||
| - [go][go_tool] version v1.12+ |  | ||||||
| - [goimports, golint, checkmake and staticcheck][install_dev_tools] |  | ||||||
| - [minikube][minikube] version v1.1.0+ (preferred Hypervisor - [virtualbox][virtualbox]) |  | ||||||
| - [docker][docker_tool] version 17.03+ |  | ||||||
| 
 |  | ||||||
| ## Clone repository and download dependencies |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| mkdir -p $GOPATH/src/github.com/jenkinsci |  | ||||||
| cd $GOPATH/src/github.com/jenkinsci/ |  | ||||||
| git clone git@github.com:jenkinsci/kubernetes-operator.git |  | ||||||
| cd kubernetes-operator |  | ||||||
| make go-dependencies |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| ## Build and run with a minikube |  | ||||||
| 
 |  | ||||||
| Build and run **Jenkins Operator** locally: |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| make build minikube-run EXTRA_ARGS='--minikube --local' |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Once minikube and **Jenkins Operator** are up and running, apply Jenkins custom resource: |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| kubectl apply -f deploy/crds/jenkins_v1alpha2_jenkins_cr.yaml |  | ||||||
| kubectl get jenkins -o yaml |  | ||||||
| kubectl get po |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| ## Build and run with a remote Kubernetes cluster |  | ||||||
| 
 |  | ||||||
| You can also run the controller locally and make it listen to a remote Kubernetes server. |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| make run NAMESPACE=default KUBECTL_CONTEXT=remote-k8s EXTRA_ARGS='--kubeconfig ~/.kube/config' |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Once minikube and **Jenkins Operator** are up and running, apply Jenkins custom resource: |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| kubectl --context remote-k8s --namespace default apply -f deploy/crds/jenkins_v1alpha2_jenkins_cr.yaml |  | ||||||
| kubectl --context remote-k8s --namespace default get jenkins -o yaml |  | ||||||
| kubectl --context remote-k8s --namespace default get po |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| ## Testing |  | ||||||
| 
 |  | ||||||
| Run unit tests: |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| make test |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| ### Running E2E tests on Linux |  | ||||||
| 
 |  | ||||||
| Run e2e tests with minikube: |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| make minikube-start |  | ||||||
| eval $(minikube docker-env) |  | ||||||
| make build e2e |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Run the specific e2e test: |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| make build e2e E2E_TEST_SELECTOR='^TestConfiguration$' |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| ### Running E2E tests on macOS |  | ||||||
| 
 |  | ||||||
| At first, you need to start minikube: |  | ||||||
| ```bash |  | ||||||
| $ make minikube-start |  | ||||||
| $ eval $(minikube docker-env)  |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Build a Docker image inside the provided Linux container by: |  | ||||||
| ```bash |  | ||||||
| $ make indocker |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Build **Jenkins Operator** inside a container using: |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| $ make build |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Then exit the container and run: |  | ||||||
| ``` |  | ||||||
| make e2e |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| ## Tips & Tricks |  | ||||||
| 
 |  | ||||||
| ### Building docker image on minikube (for e2e tests) |  | ||||||
| 
 |  | ||||||
| To be able to work with the docker daemon on `minikube` machine run the following command before building an image: |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| eval $(minikube docker-env) |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| ### When `pkg/apis/jenkinsio/*/jenkins_types.go` has changed |  | ||||||
| 
 |  | ||||||
| Run: |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| make deepcopy-gen |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| ### Getting the Jenkins URL and basic credentials |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| minikube service jenkins-operator-http-<cr_name> --url |  | ||||||
| kubectl get secret jenkins-operator-credentials-<cr_name> -o 'jsonpath={.data.user}' | base64 -d |  | ||||||
| kubectl get secret jenkins-operator-credentials-<cr_name> -o 'jsonpath={.data.password}' | base64 -d |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| # Tools |  | ||||||
| 
 |  | ||||||
| ## Configure environment variables |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| export GOPATH=/home/go # example value |  | ||||||
| export GOROOT=/usr/lib/go-1.12 # example value |  | ||||||
| export PATH=$GOPATH/bin:$PATH |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| ## goimports |  | ||||||
| 
 |  | ||||||
| ``` |  | ||||||
| go get golang.org/x/tools/cmd/goimports |  | ||||||
| cd $GOPATH/src/golang.org/x/tools/cmd/goimports |  | ||||||
| go build |  | ||||||
| go install |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| ## golint |  | ||||||
| 
 |  | ||||||
| ``` |  | ||||||
| go get -u golang.org/x/lint/golint |  | ||||||
| cd  $GOPATH/src/golang.org/x/lint/golint |  | ||||||
| go build |  | ||||||
| go install |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| ## checkmake |  | ||||||
| ``` |  | ||||||
| go get github.com/mrtazz/checkmake |  | ||||||
| cd $GOPATH/src/github.com/mrtazz/checkmake |  | ||||||
| go build |  | ||||||
| go install |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| ## staticcheck |  | ||||||
| 
 |  | ||||||
| ``` |  | ||||||
| mkdir -p $GOPATH/src/github.com/dominikh/ |  | ||||||
| cd $GOPATH/src/github.com/dominikh/ |  | ||||||
| git clone https://github.com/dominikh/go-tools.git |  | ||||||
| cd  $GOPATH/src/github.com/dominikh/go-tools/staticcheck |  | ||||||
| go build |  | ||||||
| go install |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| [dep_tool]:https://golang.github.io/dep/docs/installation.html |  | ||||||
| [git_tool]:https://git-scm.com/downloads |  | ||||||
| [go_tool]:https://golang.org/dl/ |  | ||||||
| [operator_sdk]:https://github.com/operator-framework/operator-sdk |  | ||||||
| [fork_guide]:https://help.github.com/articles/fork-a-repo/ |  | ||||||
| [docker_tool]:https://docs.docker.com/install/ |  | ||||||
| [kubectl_tool]:https://kubernetes.io/docs/tasks/tools/install-kubectl/ |  | ||||||
| [minikube]:https://kubernetes.io/docs/tasks/tools/install-minikube/ |  | ||||||
| [virtualbox]:https://www.virtualbox.org/wiki/Downloads |  | ||||||
| [jenkins-operator]:../README.md |  | ||||||
| [install_dev_tools]:install_dev_tools.md |  | ||||||
		Loading…
	
		Reference in New Issue