provider-helm
is a Crossplane Provider that enables deployment and management
of Helm Releases on Kubernetes clusters typically provisioned by Crossplane:
- A
Provider
resource type that only points to a credentialsSecret
. - A
Release
resource type that is to manage Helm Releases. - A managed resource controller that reconciles
Release
objects and manages Helm releases.
If you would like to install provider-helm
without modifications create
the following ClusterPackageInstall
in a Kubernetes cluster where Crossplane is
installed:
apiVersion: v1
kind: Namespace
metadata:
name: helm
---
apiVersion: packages.crossplane.io/v1alpha1
kind: ClusterPackageInstall
metadata:
name: provider-helm
namespace: helm
spec:
package: "crossplane-contrib/provider-helm:latest"
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=80
-
Deploy RBAC for local cluster
kubectl apply -f examples/provider-config/local-service-account.yaml
-
Deploy local-provider.yaml by replacing
spec.credentialsSecretRef.name
with the token secret name.EXP="s/<helm-provider-token-secret-name>/$(kubectl get sa helm-provider -n crossplane-system -o jsonpath="{.secrets[0].name}")/g" cat examples/provider-config/local-provider-config.yaml | sed -e "${EXP}" | kubectl apply -f -
-
Now you can create
Release
resources with provider reference, see sample release.yaml.
make local.down