provider-helm is a Crossplane Provider that enables deployment and management
of Helm Releases on Kubernetes clusters typically provisioned by Crossplane:
- A
Providerresource type that only points to a credentialsSecret. - A
Releaseresource type that is to manage Helm Releases. - A managed resource controller that reconciles
Releaseobjects and manages Helm releases.
If you would like to install provider-helm without modifications, you may do
so using the Crossplane CLI in a Kubernetes cluster where Crossplane is
installed:
kubectl crossplane install provider crossplane/provider-helm:masterYou may also manually install provider-helm by creating a Provider directly:
apiVersion: pkg.crossplane.io/v1
kind: Provider
metadata:
name: provider-helm
spec:
package: "crossplane/provider-helm:master"See the design document.
Start a local development environment with Kind where crossplane is installed:
make local-dev
Run controller against the cluster:
make run
Since controller is running outside of the Kind cluster, you need to make api server accessible (on a separate terminal):
sudo kubectl proxy --port=8081
-
Prepare provider config for local cluster:
-
If helm provider running in cluster (e.g. provider installed with crossplane):
SA=$(kubectl -n crossplane-system get sa -o name | grep provider-helm | sed -e 's|serviceaccount\/|crossplane-system:|g') kubectl create clusterrolebinding provider-helm-admin-binding --clusterrole cluster-admin --serviceaccount="${SA}" kubectl apply -f examples/provider-config/provider-config-incluster.yaml -
If provider helm running outside of the cluster (e.g. running locally with
make run)KUBECONFIG=$(kind get kubeconfig --name local-dev | sed -e 's|server:\s*.*$|server: http://localhost:8081|g') kubectl -n crossplane-system create secret generic cluster-config --from-literal=kubeconfig="${KUBECONFIG}" kubectl apply -f examples/provider-config/provider-config-with-secret.yaml
-
-
Now you can create
Releaseresources with provider reference, see sample release.yaml.kubectl create -f examples/sample/release.yaml
make local.down