flux-aio icon indicating copy to clipboard operation
flux-aio copied to clipboard

Helm version gets wrong rendered in timoni

Open suse-coder opened this issue 8 months ago • 6 comments

When I install this helm release with flux-helm-release then it gets rendered as a different version (so instead of 0.10.1 it renderes as lastAttemptedRevision: 0.10.1+53d9c5dffd49 that then fails:

host: synapse.services.services.test
status:
  conditions:
  - lastTransitionTime: "2025-04-16T15:46:25Z"
    message: Running 'install' action with timeout of 1h0m0s
    observedGeneration: 1
    reason: Progressing
    status: "True"
    type: Reconciling
  - lastTransitionTime: "2025-04-16T15:46:25Z"
    message: Running 'install' action with timeout of 1h0m0s
    observedGeneration: 1
    reason: Progressing
    status: Unknown
    type: Ready
  lastAttemptedConfigDigest: sha256:e96eb8f79c9acb59507a1f2b7c1f6868f3d3a0c213550afd75fb470a5a841d61
  lastAttemptedGeneration: 1
  lastAttemptedRevision: 0.10.1+53d9c5dffd49
  lastAttemptedRevisionDigest: sha256:53d9c5dffd491da66966f18c45100f285eee264666b1786b8fb250aea2997eb1
  observedGeneration: -1

The error is:

  Warning  InstallFailed  15s  helm-controller  Helm install failed for release element/matrix-stack with chart [email protected]+53d9c5dffd49: 1 error occurred:
           * ConfigMap "matrix-stack-well-known-haproxy" is invalid: metadata.labels: Invalid value: "0.10.1+53d9c5dffd49": a valid label must be an empty string or consist of alphanumeric characters, '-', '_' or '.', and must start and end with an alphanumeric character (e.g. 'MyValue',  or 'my_value',  or '12345', regex used for validation is '(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])?')
bundle: {
  apiVersion: "v1alpha1"
  name:       "ess-matrix-stack-bundle"
  instances: {
    "matrix-stack": {
      module: {
        url:     "oci://ghcr.io/stefanprodan/modules/flux-helm-release"
        version: "latest"
      }
      namespace: "element"
      values: {
        repository: {
          url: "oci://ghcr.io/element-hq/ess-helm"
        }
        chart: {
          name:    "matrix-stack"
          version: "0.10.1"
        }


        sync: {
          timeout: 60
        }

        helmValues: {
          serverName: string @timoni(runtime:string:WELLKNOWN_NAME)

          synapse: {
            ingress: {
              host: string @timoni(runtime:string:SNYAPSE_URL)
            }   
          }

          matrixAuthenticationService: {
            ingress: {
              host: string @timoni(runtime:string:MATRIXAUTH_URL)
            }
          }

          matrixRTC: {
            ingress: {
              host: string @timoni(runtime:string:MATRIXRTC_URL)
            }
          }

          elementWeb: {
            ingress: {
              host: string @timoni(runtime:string:ELEMENT_URL)
            }
          }

          postgres: {
            enabled: true
            storage: {
              size: "10Gi"
            }
          }

        }
      }
    }
  }
}

how can i force timoni bundle to just use that version?

suse-coder avatar Apr 16 '25 15:04 suse-coder

This is not a Timoni issue, this how we designed Flux to work for charts from OCI. You need to fix that chart not use the chart version as the label value, instead the chart standard is to use the app version.

stefanprodan avatar Apr 16 '25 16:04 stefanprodan

Do you have an example? I dont know what to change it to.

suse-coder avatar Apr 16 '25 16:04 suse-coder

See the replace "+" "_" in here: https://github.com/stefanprodan/podinfo/blob/b3396adb98a6a0f5eeedd1a600beaf5e954a1f28/charts/podinfo/templates/_helpers.tpl#L30

stefanprodan avatar Apr 16 '25 16:04 stefanprodan

So you say its a problem with the chart? Because this is not my chart I guess I have to talk to the creator? As with helm (no timoni) only it works fine

suse-coder avatar Apr 16 '25 16:04 suse-coder

Again this has nothing to do with Timoni, but with how Flux sets the chart version, it appends the OCI digest to the version.

stefanprodan avatar Apr 16 '25 16:04 stefanprodan

Thanks. So no way to force it with a label or so? Or can this only be fixed by the creator of the Helm chart?

suse-coder avatar Apr 16 '25 16:04 suse-coder