Skip to content

crossplane-contrib/provider-helm

Folders and files

NameName
Last commit message
Last commit date
Dec 7, 2023
Dec 7, 2023
Dec 6, 2023
Sep 27, 2022
Dec 7, 2023
Dec 7, 2023
Jul 9, 2020
Dec 7, 2023
Dec 7, 2023
Sep 23, 2022
Jul 23, 2020
Sep 23, 2022
Jul 9, 2020
Dec 7, 2023
Mar 15, 2023
Dec 7, 2023
Dec 5, 2023

Repository files navigation

Build Actions 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, you may do so using the Crossplane CLI in a Kubernetes cluster where Crossplane is installed:

kubectl crossplane install provider crossplanecontrib/provider-helm:master

You may also manually install provider-helm by creating a Provider directly:

apiVersion: pkg.crossplane.io/v1
kind: Provider
metadata:
  name: provider-helm
spec:
  package: "crossplanecontrib/provider-helm:master"

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=8081

Testing in Local Cluster

  1. Prepare provider config for local cluster:

    1. 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
      
    2. 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
      
  2. Now you can create Release resources with provider reference, see sample release.yaml.

    kubectl create -f examples/sample/release.yaml
    

Cleanup

make local.down