chengjingtao / captain

A Helm 3 Controller

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Captain

License Go Report Card Tag

Captain is a Helm 3 Controller

About Helm3

The Helm 3 Design Proposal exists for a while and currently it is still under heavy development. Captain comes as the first implementation of Helm v3 Controller based on the Proposal.

This project is based on the core helm v3 code, acting as a library. Since it's not officially released yet (alpha stage for now), some modifications were made to help implement this controller on a fork: alauda/helm (will be deprecated once Helm's library is released).

Features

  • HelmRequest and Release CRD, namespace based
  • ChartRepo CRD
  • Multi cluster support based on https://github.com/kubernetes/cluster-registry
  • Dependency check for HelmRequest (between HelmRequests)
  • valuesFrom support: support to ConfigMap or Secret value store
  • kubectl apply like resource manipulation: no more resource conflict and CRD management issues

Quick Start

Check the Installation Guide to learn how to install captain

Then, create a HelmRequest resource

kind: HelmRequest
apiVersion: app.alauda.io/v1alpha1
metadata:
  name: nginx-ingress
spec:
  chart: stable/nginx-ingress

After a few seconds, you have an nginx-ingress chart running

root@VM-16-12-ubuntu:~/demo# kubectl get pods
NAME                                             READY   STATUS    RESTARTS   AGE
nginx-ingress-controller-57987f445c-9rhv5        1/1     Running   0          16s
nginx-ingress-default-backend-7679dbd5c9-wkkss   1/1     Running   0          16s
root@VM-16-12-ubuntu:~/demo# kubectl get hr
NAME            CHART                  VERSION   NAMESPACE   ALLCLUSTER   PHASE    AGE
nginx-ingress   stable/nginx-ingress             default                  Synced   23s

For the detailed explain and advanced usage, please check the documentation below

Documention

Future Plans

  • Release Version secret support
  • Repo proxy support
  • Rollback/Update kubectl plugin
  • Data migration tool from Helm2 release to Helm3 Release

Related Project

  • flux: flux have a similar controller based on Helm2

About

A Helm 3 Controller

License:Apache License 2.0


Languages

Language:Go 96.6%Language:Shell 1.6%Language:Makefile 0.8%Language:Ruby 0.7%Language:Dockerfile 0.4%