Skip to content

[helm chart] Go Template Error: Cannot Compare Slice to nil using eq #64030

@nhuantho

Description

@nhuantho

Official Helm Chart version

1.19.0 (latest released)

Apache Airflow version

3.1.8

Kubernetes Version

v1.31.4

Helm Chart configuration

# Airflow Worker Config
workers:
  celery:
    # Number of airflow celery workers in StatefulSet
    replicas: 1

    persistence:
      # Enable persistent volumes
      enabled: true
      # Volume size for worker StatefulSet
      size: 2Gi
      # If using a custom storageClass, pass name ref to all statefulSets here
      storageClassName: ceph-rbd-hdd

    resources:
      requests:
        cpu: 0.5
        memory: 4.0Gi
      limits:
        cpu: 2.0
        memory: 8.0Gi

    logGroomerSidecar:
      resources:
        requests:
          cpu: 0.25
          memory: 0.5Gi
        limits:
          cpu: 0.5
          memory: 1.0Gi

Docker Image customizations

No response

What happened

STDERR:
  WARNING: Kubernetes configuration file is group-readable. This is insecure. Location: /tmp/kubeconfig.yml
  WARNING: Kubernetes configuration file is world-readable. This is insecure. Location: /tmp/kubeconfig.yml
  Error: Failed to render chart: exit status 1: WARNING: Kubernetes configuration file is group-readable. This is insecure. Location: /tmp/kubeconfig.yml
  WARNING: Kubernetes configuration file is world-readable. This is insecure. Location: /tmp/kubeconfig.yml
  Error: template: airflow/templates/workers/worker-serviceaccount.yaml:24:23: executing "airflow/templates/workers/worker-serviceaccount.yaml" at <include "removeNilFields" .Values.workers.celery>: error calling include: template: airflow/templates/_helpers.yaml:1259:21: executing "removeNilFields" at <eq $val nil>: error calling eq: uncomparable type []interface {}: []
  Use --debug flag to render out invalid YAML
  Error: plugin "diff" exited with error
COMBINED OUTPUT:
  WARNING: Kubernetes configuration file is group-readable. This is insecure. Location: /tmp/kubeconfig.yml
  WARNING: Kubernetes configuration file is world-readable. This is insecure. Location: /tmp/kubeconfig.yml
  ********************
  	Release was not present in Helm.  Diff will show entire contents as new.
  ********************
  Error: Failed to render chart: exit status 1: WARNING: Kubernetes configuration file is group-readable. This is insecure. Location: /tmp/kubeconfig.yml
  WARNING: Kubernetes configuration file is world-readable. This is insecure. Location: /tmp/kubeconfig.yml
  Error: template: airflow/templates/workers/worker-serviceaccount.yaml:24:23: executing "airflow/templates/workers/worker-serviceaccount.yaml" at <include "removeNilFields" .Values.workers.celery>: error calling include: template: airflow/templates/_helpers.yaml:1259:21: executing "removeNilFields" at <eq $val nil>: error calling eq: uncomparable type []interface {}: []
  Use --debug flag to render out invalid YAML
  Error: plugin "diff" exited with error

What you think should happen instead

Because I used value.yaml.gotmpl, so it can compare the list type in

Remove all nil fields in a map and return new dict object.

Usage:
  {{ include "removeNilFields" . }}
*/}}
{{- define "removeNilFields" -}}
  {{- $newValues := dict -}}
  {{- range $key, $val := . -}}
    {{- if kindIs "map" $val -}}
      {{- $nested := include "removeNilFields" $val | fromYaml -}}
      {{- if gt (len $nested) 0 -}}
        {{- $_ := set $newValues $key $nested -}}
      {{- end -}}
    {{- else if not (eq $val nil) -}}
      {{- $_ := set $newValues $key $val -}}
    {{- end -}}
  {{- end -}}
  {{- toYaml $newValues -}}
{{- end -}}

default

  celery:
    # List of worker sets. Each item can overwrite values from the parent `workers` and `workers.celery`
    # section.
    sets: [] -> error here

How to reproduce

Use value.yaml.gotmpl to deploy airflow

Anything else

I suggest

{{- else if not (eq $val nil) -}} -> {{- else if $val -}}

because the default sets value is a list

Image

Are you willing to submit PR?

  • Yes I am willing to submit a PR!

Code of Conduct

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:helm-chartAirflow Helm Chartkind:bugThis is a clearly a bugneeds-triagelabel for new issues that we didn't triage yet

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions