101 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
			
		
		
	
	
			101 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
| # Jenkins Operator
 | |
| 
 | |
| [](https://github.com/jenkinsci/kubernetes-operator/releases/tag/v0.8.0)
 | |
| [](https://github.com/jenkinsci/kubernetes-operator/actions/workflows/auto-tests-e2e.yaml)
 | |
| [](https://goreportcard.com/report/github.com/jenkinsci/kubernetes-operator)
 | |
| [](https://gitter.im/jenkinsci/kubernetes-operator)
 | |
| 
 | |
| <a href="">
 | |
|   <picture>
 | |
|      <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/jenkinsci/kubernetes-operator/master/assets/jenkins_gopher_wide_exp_dark.png">
 | |
|      <img src="https://raw.githubusercontent.com/jenkinsci/kubernetes-operator/master/assets/jenkins_gopher_wide_exp.png">
 | |
|   </picture>
 | |
| </a>
 | |
| 
 | |
| ## What's the Jenkins Operator?
 | |
| 
 | |
| The Jenkins Operator is a [Kubernetes Native Operator](https://kubernetes.io/docs/concepts/extend-kubernetes/operator/) which manages operations for Jenkins on Kubernetes.
 | |
| It has been built with Immutability and declarative Configuration as Code in mind.
 | |
| 
 | |
| 
 | |
| ## Preliminaries
 | |
| 
 | |
| Considering that this Operator is created for managing instances for Jenkins,
 | |
| it is important to understand what
 | |
| - [Jenkins Pipelines](https://jenkins.io/doc/book/pipeline/) and
 | |
| - CasC ([Configuration as Code](https://github.com/jenkinsci/configuration-as-code-plugin)) are.
 | |
| 
 | |
| Jenkins Pipelines use Scripts written in [Groovy](https://groovy-lang.org/) which aid in the CasC aspect of Jenkins.
 | |
| 
 | |
| Jenkins uses [plugins](https://plugins.jenkins.io/) like CasC to extend it's solution space by carrying out Jobs of different kinds and providing a composable infrastructure for your CI/CD.
 | |
| 
 | |
| ### Out of the box it provides:
 | |
| - Integration with Kubernetes ([Jenkins kubernetes-plugin](https://github.com/jenkinsci/kubernetes-plugin))
 | |
| - Pipelines as Code ([Jenkins pipelines](https://jenkins.io/doc/book/pipeline/))
 | |
| - Extensibility via Groovy Scripts (similar to [Jenkins script console](https://wiki.jenkins.io/display/JENKINS/Jenkins+Script+Console)) or ([configuration as code plugin](https://github.com/jenkinsci/configuration-as-code-plugin))
 | |
| - Secure Defaults and Hardening (see [the security section](https://jenkinsci.github.io/kubernetes-operator/docs/security/) of the documentation)
 | |
| 
 | |
| ## Problem statement and goals
 | |
| 
 | |
| The main reason why we decided to implement the **Jenkins Operator** is the fact that we faced a lot of problems with standard Jenkins deployment.
 | |
| We want to make Jenkins more robust, suitable for dynamic and multi-tenant environments.
 | |
| 
 | |
| Some of the problems we want to solve:
 | |
| - [installing plugins with incompatible versions or security vulnerabilities](https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/customizing-jenkins/#install-plugins/)
 | |
| - [better configuration as code](https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/customizing-jenkins/)
 | |
| - [security and hardening out of the box](https://jenkinsci.github.io/kubernetes-operator/docs/security/)
 | |
| - [make errors more visible for end users](https://jenkinsci.github.io/kubernetes-operator/docs/troubleshooting/)
 | |
| - orphaned jobs with no JNLP connection
 | |
| - handle graceful shutdown properly
 | |
| - proper end to end tests for Jenkins lifecycle
 | |
| 
 | |
| ## Documentation
 | |
| 
 | |
| Go to [**our documentation website**](https://jenkinsci.github.io/kubernetes-operator/) for more information.
 | |
| 
 | |
| Selected content:
 | |
| 1. [How it works](https://jenkinsci.github.io/kubernetes-operator/docs/how-it-works/)
 | |
| 2. [Getting Started](https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/)
 | |
| 3. [Security](https://jenkinsci.github.io/kubernetes-operator/docs/security/)
 | |
| 4. [Troubleshooting](https://jenkinsci.github.io/kubernetes-operator/docs/troubleshooting/)
 | |
| 5. [Developer Guide](https://jenkinsci.github.io/kubernetes-operator/docs/developer-guide/)
 | |
| 6. [FAQ](https://jenkinsci.github.io/kubernetes-operator/docs/faq/)
 | |
| 7. [Jenkins Custom Resource Definition Schema](https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/schema/)
 | |
| 
 | |
| ## Common Issues and Workarounds
 | |
| 
 | |
| - Multibranch Pipelines and Backup Issues: https://github.com/jenkinsci/kubernetes-operator/issues/104#issuecomment-554289768
 | |
| 
 | |
| ## Community
 | |
| Main channel of communication on topics related to Jenkins Operator is [Jenkins Operator Category](https://community.jenkins.io/c/contributing/jenkins-operator/20) on [Jenkins Community Discourse](https://community.jenkins.io/).
 | |
| 
 | |
| Here you can ask questions about the project, discuss best practices on using it, and talk to other users of the Operator, contributors and project's maintainers.
 | |
| 
 | |
| We also have a [gitter](https://gitter.im/jenkinsci/kubernetes-operator)/[matrix](https://matrix.to/#/#jenkinsci_kubernetes-operator:gitter.im) channel, come to say hi!
 | |
| 
 | |
| ## Snapshots between releases
 | |
| 
 | |
| We are trying our best to resolve issues quickly, but they have to wait to be released. If you can't wait for an official
 | |
| docker image release and acknowledge the risk, you can use our unofficial images, which are built nightly.
 | |
| 
 | |
| You can find the project's Quay.io repository [here](https://quay.io/organization/jenkins-kubernetes-operator).
 | |
| 
 | |
| Look for the images with tag "{git-hash}", where {git-hash} is the hash of the master commit that interests you.
 | |
| 
 | |
| ## Contribution
 | |
| 
 | |
| Feel free to file [issues](https://github.com/jenkinsci/kubernetes-operator/issues) or [pull requests](https://github.com/jenkinsci/kubernetes-operator/pulls),
 | |
| but please consult [CONTRIBUTING](https://github.com/jenkinsci/kubernetes-operator/blob/master/CONTRIBUTING.md) document beforehand.
 | |
| 
 | |
| Before any big pull request please consult the maintainers to ensure a common direction.
 | |
| 
 | |
| ## Presentations
 | |
| 
 | |
| - [Jenkins World 2019 Lisbon](assets/Jenkins_World_Lisbon_2019%20-Jenkins_Kubernetes_Operator.pdf)
 | |
| - [Jenkins Online Meetup 2020](assets/Jenkins_Online_Meetup-Jenkins_Kubernetes_Operator.pdf)
 | |
| - [Jenkins Online Meetup 2021](https://www.youtube.com/watch?v=BsYYVkophsk)
 | |
| 
 | |
| ## About the authors
 | |
| 
 | |
| This project was originally developed by [VirtusLab](https://virtuslab.com/) and the following [CONTRIBUTORS](https://github.com/jenkinsci/kubernetes-operator/graphs/contributors).
 |