Search code examples
azurekubernetes-helmazure-aksfluxcd

FluXCD Helm deployment from Azure ACR - no chart name found error


I am attempting to deploy a Helm chart to AKS using FluxCD. The chart has been pushed to Azure ACR using the Helm cli - "helm push ...". The chart is declared in the ACR as helm/release-services:0.1.0

I am receiving the following error after a Flux reconcile:

'chart pull error: failed to get chart version for remote reference: no chart name found'

with helm-controller logs as follows

{"level":"info","ts":"2022-02-07T12:40:18.121Z","logger":"controller.helmrelease","msg":"HelmChart 'flux-system/release-services-test-release-services' is not ready","reconciler group":"helm.toolkit.fluxcd.io","reconciler kind":"HelmRelease","name":"release-services","namespace":"release-services-test"} {"level":"info","ts":"2022-02-07T12:40:18.135Z","logger":"controller.helmrelease","msg":"reconcilation finished in 15.458307ms, next run in 5m0s","reconciler group":"helm.toolkit.fluxcd.io","reconciler kind":"HelmRelease","name":"release-services","namespace":"release-services-test"}

Below is the HelmChart resource in AKS:

apiVersion: source.toolkit.fluxcd.io/v1beta1
kind: HelmChart
metadata:
  creationTimestamp: "2022-02-07T07:30:16Z"
  finalizers:
  - finalizers.fluxcd.io
  generation: 1
  name: release-services-test-release-services
  namespace: flux-system
  resourceVersion: "105266699"
  selfLink: /apis/source.toolkit.fluxcd.io/v1beta1/namespaces/flux-system/helmcharts/release-services-test-release-services
  uid: e4820a70-8885-44a1-8dfd-0e2bf7256915
spec:
  chart: release-services
  interval: 5m0s
  reconcileStrategy: ChartVersion
  sourceRef:
    kind: HelmRepository
    name: psbombb-helm-acr-dev
  version: '>=0.1.0'
status:
  conditions:
  - lastTransitionTime: "2022-02-07T11:02:49Z"
    message: 'chart pull error: failed to get chart version for remote reference:
      no chart name found'
    reason: ChartPullFailed
    status: "False"
    type: Ready
  observedGeneration: 1

and the HelmRelease is as follows

apiVersion: helm.toolkit.fluxcd.io/v2beta1
kind: HelmRelease
metadata:
  creationTimestamp: "2022-02-07T04:34:14Z"
  finalizers:
  - finalizers.fluxcd.io
  generation: 9
  labels:
    kustomize.toolkit.fluxcd.io/name: apps
    kustomize.toolkit.fluxcd.io/namespace: flux-system
  name: release-services
  namespace: release-services-test
  resourceVersion: "105341484"
  selfLink: /apis/helm.toolkit.fluxcd.io/v2beta1/namespaces/release-services-test/helmreleases/release-services
  uid: 6a6e5f5c-951d-4655-9c15-fa9fe7421a04
spec:
  chart:
    spec:
      chart: release-services
      reconcileStrategy: ChartVersion
      sourceRef:
        kind: HelmRepository
        name: psbombb-helm-acr-dev
        namespace: flux-system
      version: '>=0.1.0'
  install:
    remediation:
      retries: 3
  interval: 5m
  releaseName: release-services
  timeout: 12m
  values:
    image:
      name: release-services
      pullPolicy: IfNotPresent
      registry: <repository>.azurecr.io
      repository: <repository>.azurecr.io/helm/release-services
      tag: 0.1.0
    postgres:
      secret:
        create: false
        existingName: release-services-secrets
status:
  conditions:
  - lastTransitionTime: "2022-02-07T08:27:13Z"
    message: HelmChart 'flux-system/release-services-test-release-services' is not
      ready
    reason: ArtifactFailed
    status: "False"
    type: Ready
  failures: 50
  helmChart: flux-system/release-services-test-release-services
  observedGeneration: 9

Is there anything I am missing that anyone can spot for me please?

Thank you kindly


Solution

  • I think your issue is that the Azure Container Registry stores Helm Charts as OCI Artifacts.

    The Flux source controller will pull the index.yaml from a HTTP Helm Chart repo to look for tags and this is not working with an OCI registry.

    Here is the GitHub issue for this were you can see that the Flux guys will work on this as of now the OCI Feature is stable with Helm 3.8.0.