Skip to content
No description, website, or topics provided.
Go Shell Other
Branch: master
Clone or download
Latest commit 3e223ca Aug 16, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
hack initial commit Apr 29, 2019
manifests Revert "Rename to" May 25, 2019
package initial commit Apr 29, 2019
pkg Create new job if hash changed Aug 7, 2019
scripts drone fixes May 1, 2019
vendor Bump to wrangler v0.1.4 Jul 12, 2019
.dockerignore initial commit Apr 29, 2019
.drone.yml drone fixes May 1, 2019
.gitignore initial commit Apr 29, 2019
Dockerfile.dapper initial commit Apr 29, 2019
Dockerfile.dapper479579668 initial commit Apr 29, 2019
LICENSE initial commit Apr 29, 2019
Makefile initial commit Apr 29, 2019 initial commit Apr 29, 2019
go.mod Bump to wrangler v0.1.4 Jul 12, 2019
go.sum Create new job if hash changed Aug 7, 2019
main.go adding configmap to cache types Jun 19, 2019
vendor.conf initial commit Apr 29, 2019


A simple way to manage helm charts with a Custom Resource Definitions in k8s.

Manifests and Deploying

The ./manifests folder contains useful YAML manifests to use for deploying and developing the Helm Controller. This simply YAML deployment creates a HelmChart CRD + a Deployment using the rancher/helm-controller container. The YAML might need some modifications for your environment so read below for Namespaced vs Cluster deployments and how to use them properly.

Namespaced Deploys

Use the deploy-namespaced.yaml to create a namespace and add the Helm Controller and CRD to that namespace locking down the Helm Controller to only see changes to CRDs within that namespace. This is defaulted to helm-controller so update the YAML to your needs before running kubectl create

Cluster Scoped Deploys

If you'd like your helm controller to watch the entire cluster for HelmChart CRD changes use the deploy-cluster-scoped.yaml deploy manifest. By default it will add the helm-controller to the kube-system so update metadata.namespace for your needs.


To remove the Helm Controller run kubectl delete and pass the deployment YAML used using to create the Deployment -f parameter.

Developing and Building

The Helm Controller is easy to get running locally, follow the instructions for your needs and requires a running k8s server + CRDs etc. When you have a working k8s cluster you can use can use ./manifest/crd.yaml to create the CRD and ./manifest/example-helmchart.yaml which runs the stable/traefik helm chart.


Building and running natively will start a daemon which will watch a local k8s API. See Manifests section above about how to to create the CRD and Objects using the provided manifests.

go build -o ./bin/helm-controller
./bin/helm-controller --kubeconfig $HOME/.kube/config


An easy way to get started with docker/k8s is to install docker for windows/mac and use the included k8s cluster. Once functioning you can easily build locally and get a docker container to pull the Helm Controller container and run it in k8s. Use make to launch a linux container and build to create a container. Use the ./manifests/deploy-*.yaml definitions to get it into your cluster and update containers.image to point to your locally image e.g. image: rancher/helm-controller:dev

Options and Usage

Use ./bin/helm-controller help to get full usage details. The outside of a k8s Pod the most important options are --kubeconfig or --masterurl or it will not run. All options have corresponding ENV variables you could use.


go test ./...


Copyright (c) 2019 Rancher Labs, Inc.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

You can’t perform that action at this time.