jenkins-operator

module
v0.0.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 15, 2019 License: Apache-2.0

README

Jenkins Operator

Version Build Status Go Report Card Docker Pulls

What's Jenkins Operator?

Jenkins operator it's a Kubernetes native operator which fully manages Jenkins on Kubernetes. It was built with immutability and declarative configuration as code in mind.

It provides out of the box:

  • 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

  1. Installation
  2. Getting Started
  3. How it works
  4. Security
  5. Developer Guide

Contribution

Feel free to file issues or pull requests.

TODO

Common:

  • simple API for generating Kubernetes events using one common format
  • code clean up and more tests

Base configuration:

  • TLS/SSL configuration

User configuration:

  • backup and restore for Jenkins jobs running as standalone job (AWS, GCP, Azure)
  • trigger backup job before pod deletion using preStop k8s hooks
  • verify Jenkins configuration events

Directories

Path Synopsis
cmd
pkg
apis/virtuslab/v1alpha1
Package v1alpha1 contains API Schema definitions for the virtuslab v1alpha1 API group +k8s:deepcopy-gen=package,register +groupName=virtuslab.com Package v1alpha1 contains API Schema definitions for the virtuslab v1alpha1 API group +k8s:deepcopy-gen=package,register +groupName=virtuslab.com
Package v1alpha1 contains API Schema definitions for the virtuslab v1alpha1 API group +k8s:deepcopy-gen=package,register +groupName=virtuslab.com Package v1alpha1 contains API Schema definitions for the virtuslab v1alpha1 API group +k8s:deepcopy-gen=package,register +groupName=virtuslab.com
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/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
log
test
e2e

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL