https://github.com/alauda/captain
A Helm 3 Controller
https://github.com/alauda/captain
docker helm helm-charts helm-controller kubernetes kubernetes-controller kubernetes-operator
Last synced: 12 days ago
JSON representation
A Helm 3 Controller
- Host: GitHub
- URL: https://github.com/alauda/captain
- Owner: alauda
- License: apache-2.0
- Created: 2019-07-26T08:07:42.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2024-07-05T06:59:38.000Z (10 months ago)
- Last Synced: 2025-04-09T23:14:13.182Z (12 days ago)
- Topics: docker, helm, helm-charts, helm-controller, kubernetes, kubernetes-controller, kubernetes-operator
- Language: Go
- Size: 7.2 MB
- Stars: 186
- Watchers: 8
- Forks: 39
- Open Issues: 12
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README

# Captain[](https://opensource.org/licenses/Apache-2.0)
[](https://goreportcard.com/report/github.com/alauda/captain) [](https://img.shields.io/github/tag/alauda/captain)

Captain is a Helm 3 Controller

## About Helm3
This project is based on the core [helm](https://github.com/helm/helm) v3 code, acting as a library. Some modifications were made to help implement this controller on a fork: [alauda/helm](https://github.com/alauda/helm) .
## Features
* HelmRequest/ChartRepo/Release CRD, namespace based
* Git/Svn as ChartRepo
* Local ChartRepo based on ChartMuseum
* Multi cluster support based on [cluster-registry](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
* OCI chart support
* HTTP downloadable chart support## Quick Start
Check the [Installation Guide](./docs/en/install.md) to learn how to install captainThen, create a HelmRequest resource
```yaml
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```bash
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](./docs/en/captain.md)
* [Captain Upgrade](./docs/en/upgrade.md)
* [CRDs explain](./docs/en/crd.md)
* [Multi-Cluster Support](./docs/en/multi-cluster.md)
* [Git/SVN as ChartRepo](./docs/en/vcs-repo.md)
* [Annotations](./docs/en/ano.md)
* [OCI Support](./docs/en/crds/helmrequest.md#helmrequest-oci-support)
* [ARM64 Support](./docs/en/arm64.md)
* [FAQ](./docs/en/faq.md)## SDK
* [Golang](https://github.com/alauda/helm-crds): also contains the CRD definition## Future Plans
* Java SDK
* Auto update of HelmRequest
* Always update to the latest version of chart## Captain Releated Projects
* [kubectl-captain](https://github.com/alauda/kubectl-captain): a kubectl plugin for captain
* [captain-test-charts](https://github.com/alauda/captain-test-charts): test charts for captain
* [oci-chartrepo](https://github.com/alauda/oci-chartrepo): use oci registry as helm chart repo## Related Projects
* [flux](https://github.com/fluxcd/flux): flux have a similar controller based on Helm2