Home > Net >  Helm - Check if value not exists OR part of list
Helm - Check if value not exists OR part of list

Time:06-14

Assuming I have this values.yaml under my helm chart -

tasks:
  - name: test-production-dev
    env:
      - production
      - dev
  - name: test-dev
    env:
      - dev
  - name: test-all

environment_variables:
  STAGE: dev

I would like to run my cronjob based on these values -

  • if .env doesn't exist - run any time.
  • if .env exists - run only if environment_variables.STAGE is in the .env list.

This is what I've done so far ( with no luck ) -

{{- range $.Values.tasks}}
# check if $value.env not exists OR contains stage
{{if or .env (hasKey .env "$.Values.environment_variables.STAGE")  }}
apiVersion: batch/v1
kind: CronJob
...
{{- end}}
---
{{- end}}

CodePudding user response:

values.yaml

tasks:
  - name: test-production-dev
    env:
      - production
      - dev
  - name: test-dev
    env:
      - dev
  - name: test-all
  - name: test-production
    env:
      - production

environment_variables:
  STAGE: dev

template/xxx.yaml

...
{{- range $.Values.tasks }}
{{- $flag := false }}
{{- if .env }}
{{- range .env }}
{{- if eq . $.Values.environment_variables.STAGE }}
{{- $flag = true }}
{{- end }}
{{- end }}
{{- else }}
{{- $flag = true }}
{{- end }}
{{- if $flag }}
apiVersion: batch/v1
kind: CronJob
meta:
  name: {{ .name }}
{{- end }}
{{- end }}
...

output

...
apiVersion: batch/v1
kind: CronJob
meta:
  name: test-production-dev
apiVersion: batch/v1
kind: CronJob
meta:
  name: test-dev
apiVersion: batch/v1
kind: CronJob
meta:
  name: test-all
...
  • Related