Skip to content

jastang/provider-helm

Repository files navigation

Build Status GitHub release Go Report Card

provider-helm

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 credentials Secret.
  • A Release resource type that is to manage Helm Releases.
  • A managed resource controller that reconciles Release objects and manages Helm releases.

Install

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"

Design

See the design document.

Developing locally

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

Testing in Local Cluster

  1. Deploy RBAC for local cluster

    kubectl apply -f examples/provider-config/local-service-account.yaml
    
  2. 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 -
    
  3. Now you can create Release resources with provider reference, see sample release.yaml.

Cleanup

make local.down

About

Crossplane Helm Provider

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 95.9%
  • Makefile 3.5%
  • Other 0.6%