Captain is a Helm 3 Controller
This project is based on the core helm v3 code, acting as a library. Some modifications were made to help implement this controller on a fork: alauda/helm .
- 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- OCI chart support
- HTTP downloadable chart support
Check the Installation Guide to learn how to install captain
Then, create a HelmRequest resource
kind: HelmRequest
apiVersion: app.alauda.io/v1
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
- OCI Support
- 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