DevOpsKube

A Kubernetes "cluster" with all things SDLC (Software Development Life Cycle)/DevOps related.

Motivation

It was/is the dream of the team to be able to install such a stack easily on own Hardware and/or environment. Kubernetes seems like the natural choice for this.

Up until now there is no full DevOps Stack for vanilla Kubernetes. The following "solutions" can be found when googling:

  • fabric8 - probably the closest to our requirements, and we already talk about some interaction between the two projects
  • Harbur - mainly focused on docker and has no real kubernetes support
  • Software Factory - from RedHat as well, based on OpenStack
  • Marcel Birkner - a blog-post from codecentric (merely an blog-post with some docker containers)
  • GoPaddle - seems to be focused on a full CI Environment to install Container on Kubernetes and uses eg. Jenkins, but is commercial and has a different focus then the above mentioned ones

None of the above mentioned stacks do fulfill our needs, therefor we decided to put this stack together to allow you to install a full SDLC stack on your own Kubernetes cluster.

Components

The following components are included in the current version:

  • Redmine - Project Management/Issue Tracking
  • Jenkins - Automation Server for CI and CD stuff
  • TheNexus - Central Repository for Maven/Gradle/...
  • SonarQube - Platform to manage code quality
  • Gogs - central Git Repository
  • Keycloak - central authentication server

To provide central data-storeage options we are using MySql for all components in need of a database.

Helper

Since a vanilla Kubernetes Cluster does not provide any Edge-Loadbalancer or an SSO-Component, we are going to provide documentation on how to setup the whole cluster including an Edge-Loadbalancer and other useful tools (eg. SSO Components). An initial set of Helpers are:

  • Nginx Ingress - Load-Balancing for Kubernetes PODs
  • Kube-Lego - Kube-Lego automatically requests certificates for Kubernetes Ingress resources from Let's Encrypt

For the use of a configurable set of PODs, we are using helm in its latest (not yet ready for production) incarnation (> 2.0.0-alpha5).

Contributions

Contributions to this project are very welcome. Please do not hesitate to fork this project and provide pull-requests. We try to integrate those asap.

Documentation is always nice, so pull-requests not only for code is welcome as well.

Contributions could be in the area of new features and/or bugs as well, please open a GitHub-Issue for this.

Documentation

This documentation is generated using MkDocs. If you are editing this documentation, please make sure, that the Documentation can be generated. Provide a Pull-Request, if all is fine. We are then updating the Documentation. For details on how to generate the documentation, see the build-docs.sh script.