Merging two Dictionaries in Helm

Viewed 17

I am using Helm 3. I have two values.yaml files. In common/values.yaml I have defined:

deployment:
  ports:
    - name: http
      protocol: TCP

The common is of the type library. In my-app, which is of the type application, the common is added as a dependency. In my-app/values.yaml I have added:

deployment:
  ports:
    - containerPort: 8081

I have defined a template _deployment.yaml in common/templates. In this file I am trying to merge these two deployment dictionaries into one by using:

{{- $deployment := merge .Values.common.deployment .Values.deployment -}}

When I am printing {{ $deployment }}, it is giving output:

map[ports:[map[containerPort:8080 name:http protocol:TCP]]]

And if I do:

{{- $deployment := merge .Values.deployment .Values.common.deployment -}}

The output of {{ $deployment }} is:

map[ports:[map[containerPort:8081]]]

Moreover the output of {{ .Values.common.deployment }} is:

map[ports:[map[name:http protocol:TCP]]]

And the output of {{ .Values.deployment }} is:

map[ports:[map[containerPort:8081]]]

What I would like to have after merging is:

deployment:
  ports:
    - name: http
      protocol: TCP
      containerPort: 8081

Any advice you could give would be much appreciated.

0 Answers
Related