freiheit-com / kuberpult

Kuberpult helps you manage different versions of different microservices in different cluster.
MIT License
39 stars 11 forks source link
cicd continuous-delivery kubernetes

Main Pipeline Release Pipeline

Kuberpult Readme for users

Etymology

Kuberpult is a catapult for kubernetes :) it catapults the containers of microservices to different stages in kubernetes clusters.

About

Kuberpult helps you manage different versions of different microservices in different cluster. While Argo CD applies the current version of your services in clusters, Kuberpult also helps you with managing what is deployed next.

Purpose

The purpose of Kuberpult is to help roll out quickly yet organized. We use it for requirements like this:

Kuberpult Design Principles

We use these principles to decide what features to focus on. We may deviate a little, but in general we don't want features in kuberpult that violate these points:

API

Kuberpult has an API that is intended to be used in CI/CD (GitHub Actions, Azure Pipelines, etc.) to release new versions of one (or more) microservices. The API can also roll out many services at the same time via "release trains". It also supports rolling out some groups of services.

Argo CD

Kuberpult works best with Argo CD which applies the manifests to your clusters and Kuberpult helps you to manage those manifests in the repository.

Kuberpult does not actually deploy. That part is usually handled by Argo CD.

App Locks & Environment Locks

Kuberpult can handle locks in its UI. When something is locked, it's version will not be changed via the API. Both environments and microservices can be locked.

Public releases of Kuberpult

Docker Registries

Kuberpult's docker images are currently available in one docker registry: (Example with version 0.4.55)

Deprecation Notes

We used to maintain another docker registry on github as well: ghcr.io/freiheit-com/kuberpult/ . However, we are not maintaining it anymore and it will be removed in future releases. Please use the google registry to retrieve kuberpult images.

GitHub Releases

To use the helm chart, you can use this url (replace both versions with the current version!). You can see all releases on the Releases page on GitHub

Helm Chart

See values.yaml.tpl for details like default values.

Most important helm chart parameters are:

Releasing a new version

See endpoint-release

Release Train Overview

See release train

Environment Config

See environment

Best practices

Remove individual environments from a service

See Remove Env From Service

Remove a service entirely

See Remove Service Entirely