The Jenkins Operator is a Kubernetes Native Operator which manages operations for Jenkins on Kubernetes. It has been built with Immutability and declarative Configuration as Code in mind.
Considering that this Operator is created for managing instances for Jenkins, it is important to understand what
- Jenkins Pipelines and
- CasC (Configuration as Code) are.
Jenkins Pipelines use Scripts written in Groovy which aid in the CasC aspect of Jenkins.
Jenkins uses plugins like CasC to extend it's solution space by carrying out Jobs of different kinds and providing a composable infrastructure for your CI/CD.
- Integration with Kubernetes (Jenkins kubernetes-plugin)
- Pipelines as Code (Jenkins pipelines)
- Extensibility via Groovy Scripts (similar to Jenkins script console) or (configuration as code plugin)
- Secure Defaults and Hardening (see the security section of the documentation)
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
- better configuration as code
- security and hardening out of the box
- make errors more visible for end users
- backup and restore for jobs history
- orphaned jobs with no JNLP connection
- handle graceful shutdown properly
- proper end to end tests for Jenkins lifecycle
Go to our documentation website for more information.
Selected content:
- Installation
- Getting Started
- How it works
- Security
- Developer Guide
- Jenkins Custom Resource Definition scheme
- Multibranch Pipelines and Backup Issues: jenkinsci#104 (comment)
We have a dedicated channel called #jenkins-operator
on virtuslab-oss.slack.com
Fill out (Invite form) and come say hi !
Every Thursday we have a community call at 16:30 CET on Google Meet. Feel free to join, ask questions and have fun :)
Feel free to file issues or pull requests.
Before any big pull request please consult the maintainers to ensure a common direction.
This project was originally developed by VirtusLab and the following CONTRIBUTORS.