README
¶
Jenkins Operator
What's Jenkins Operator?
Jenkins operator is a Kubernetes native operator which fully manages Jenkins on Kubernetes. It was built with immutability and declarative configuration as code in mind.
Out of the box it provides:
- integration with Kubernetes
- pipelines as code
- extensibility via groovy scripts or configuration as code plugin
- security and hardening
Problem statement and goals
The main reason why we decided to write 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:
- volumes handling (AWS EBS volume attach/detach issue when using PVC)
- installing plugins with incompatible versions or security vulnerabilities
- better configuration as code
- lack of end to end tests
- handle graceful shutdown properly
- security and hardening out of the box
- orphaned jobs with no jnlp connection
- make errors more visible for end users
- backup and restore for jobs history
Documentation
Contribution
Feel free to file issues or pull requests.
About the authors
This project was originally developed by VirtusLab and the following CONTRIBUTORS.
Directories
¶
Path | Synopsis |
---|---|
cmd
|
|
internal
|
|
pkg
|
|
apis/jenkinsio/v1alpha1
Package v1alpha1 contains API Schema definitions for the jenkins.io v1alpha1 API group +k8s:deepcopy-gen=package,register +groupName=jenkins.io Package v1alpha1 contains API Schema definitions for the jenkins.io v1alpha1 API group +k8s:deepcopy-gen=package,register +groupName=jenkins.io
|
Package v1alpha1 contains API Schema definitions for the jenkins.io v1alpha1 API group +k8s:deepcopy-gen=package,register +groupName=jenkins.io Package v1alpha1 contains API Schema definitions for the jenkins.io v1alpha1 API group +k8s:deepcopy-gen=package,register +groupName=jenkins.io |
controller/jenkins/client
Package client contains client for Jenkins API Package mock_client is a generated GoMock package.
|
Package client contains client for Jenkins API Package mock_client is a generated GoMock package. |
controller/jenkins/configuration/base
Package base is responsible for create Jenkins master pod and it's base configuration
|
Package base is responsible for create Jenkins master pod and it's base configuration |
controller/jenkins/configuration/base/resources
Package resources contains Kubernetes resources required by Jenkins
|
Package resources contains Kubernetes resources required by Jenkins |
controller/jenkins/configuration/user
Package user implements Jenkins user configuration and reconciliation
|
Package user implements Jenkins user configuration and reconciliation |
controller/jenkins/configuration/user/casc
Package casc configures Jenkins with help Configuration as a code plugin
|
Package casc configures Jenkins with help Configuration as a code plugin |
controller/jenkins/configuration/user/seedjobs
Package seedjobs implements seed jobs configuration
|
Package seedjobs implements seed jobs configuration |
controller/jenkins/groovy
Package groovy implements groovy scripts execution via Jenkins Job
|
Package groovy implements groovy scripts execution via Jenkins Job |
controller/jenkins/jobs
Package jobs implements common jenkins jobs operations
|
Package jobs implements common jenkins jobs operations |
test
|
|
Click to show internal directories.
Click to hide internal directories.