nada809
nada809

Reputation: 11

helm chart getting secrets and configmap values using envFrom

I m trying to inject env vars in my helm chart deployment file. my values file looks like this.

values.yaml

envFrom:
  - configMapRef:
      name: my-config
  - secretRef: 
      name: my-secret

I want to iterate through secrets and configmaps values . This is what I did in deployment.yaml file

  envFrom:
       {{- range  $item := .Values.envFrom }}
      
          {{- $item | toYaml | nindent 14 }}
       {{- end }}

But i didn t get the desired result

Upvotes: 0

Views: 14410

Answers (1)

rchallie
rchallie

Reputation: 21

You can directly use the defined value like:

...
      envFrom:
      {{- toYaml .Values.envFrom | nindent 6 }}
...

Or Instead of use range, you can use with.
Here is an example:

values.yaml:

envFrom:
  - configMapRef:
      name: my-config
  - secretRef: 
      name: my-secret

pod.yaml:

apiVersion: v1
kind: Pod
metadata:
  name: dapi-test-pod
  namespace: test
spec:
  containers:
    - name: test-container
      image: k8s.gcr.io/busybox
      command: [ "/bin/sh", "-c", "env" ]
      # {{- with .Values.envFrom }} can be here if you dont
      # want to define envFrom in this container if envFrom
      # is not defined in values.yaml.
      # If you want to do that, remove the one below.
     {{- with .Values.envFrom }}
      envFrom:
        {{- toYaml . | nindent 8 }}
      {{- end }}
  restartPolicy: Never

The output is:

c[_] > helm template test .
---
# Source: test/templates/test.yaml
apiVersion: v1
kind: Pod
metadata:
  name: dapi-test-pod
  namespace: test
spec:
  containers:
    - name: test-container
      image: k8s.gcr.io/busybox
      command: [ "/bin/sh", "-c", "env" ]
      envFrom:
        - configMapRef:
            name: my-config
        - secretRef:
            name: my-secret
  restartPolicy: Never

Upvotes: 2

Related Questions