crossplane-contrib / provider-helm

Crossplane Helm Provider
Apache License 2.0
110 stars 66 forks source link

Some Charts have unexpected names #106

Open kferrone opened 3 years ago

kferrone commented 3 years ago

What happened?

I attempted to install the strimzi operator using the Helm Release from Crossplane. I get the following error when crossplane attempts to install the chart:

   - lastTransitionTime: '2021-08-27T15:55:40Z'
      message: >-
        create failed: failed to install release: failed to load chart: stat
        /tmp/charts/strimzi-kafka-operator-0.25.0.tgz: no such file or directory
      reason: ReconcileError
      status: 'False'
      type: Synced

Aaron Eaton helped me on Slack find the real problem. He discovered the strimzi chart;

He also discovered a workaround where you can set the spec.forProvider.chart.url directly to the source, I have this commented out in the snippet below.

How can we reproduce it?

apiVersion: helm.crossplane.io/v1beta1
kind: Release
metadata:
  name: kafka-operator
spec:
  forProvider:
    chart:
      name: strimzi-kafka-operator
      repository: https://strimzi.io/charts
      # use url instead of repository as a workaround
      # url: https://github.com/strimzi/strimzi-kafka-operator/releases/download/0.25.0/strimzi-kafka-operator-helm-3-chart-0.25.0.tgz
      version: 0.25.0
    namespace: strimzi
    skipCreateNamespace: false
    values:
      watchAnyNamespace: true

What environment did it happen in?

Crossplane version: 1.3.0 Helm Provider version: v0.9.0-rc

AaronME commented 3 years ago

The pullAndLoadChart function is hard-coding a naming convention which at least one helm chart is not honoring. See https://github.com/crossplane-contrib/provider-helm/blob/003a0212edf080293e1d8d2f17cd3a33a42e2a73/pkg/clients/helm/client.go#L199

We could update pullChart to either rewrite chart names to the expected format or return the actual chartname and use that throughout the rest of the provider.

Ref: https://github.com/crossplane-contrib/provider-helm/blob/003a0212edf080293e1d8d2f17cd3a33a42e2a73/pkg/clients/helm/client.go#L167

ksawerykarwacki commented 2 years ago

Any chance for this to be fixed? Currently the only way to keep that consistent in composition is to patch manually the url and pray that strimzi (or any other chart provider) won't change naming schema. Couldn't we just use the correct url and add optional flag to switch between those two approaches?