Captain is a Helm 3 Controller
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).
- HelmRequest/ChartRepo/Release CRD, namespace based
- Git/Svn as ChartRepo
- Local ChartRepo based on ChartMuseum
- 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
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
- How captain works
- Captain Upgrade
- CRDs explain
- Multi-Cluster Support
- Git/SVN as ChartRepo
- Annotations
- ARM64 Support
- FAQ
- Golang: also contains the CRD definition
- Java SDK
- Auto update of HelmRequest
- Always update to the latest version of chart
- kubectl-captain: a kubectl plugin for captain
- captain-test-charts: test charts for captain
- oci-chartrepo: use oci registry as helm chart repo
- flux: flux have a similar controller based on Helm2