Captain
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
- Git/Svn as ChartRepo
- Multi cluster support based on cluster-registry
- Dependency check for HelmRequest (between HelmRequests)
valuesFrom
support: support to ConfigMap or Secret value storekubectl 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
- How captain works
- Captain Upgrade
- CRDs explain
- Multi-Cluster Support
- Git/SVN as ChartRepo
- Annotations
- ARM64 Support
- FAQ
SDK
- Golang: also contains the CRD definition
Future Plans
- Java SDK
- Auto update of HelmRequest
Captain Releated Projects
- kubectl-captain: a kubectl plugin for captain
- captain-test-charts: test charts for captain
Related Projects
- flux: flux have a similar controller based on Helm2