Merging helm templates without overwriting with empty values

Viewed 954

I'm working with helper chart in helm to be able to overwrite common template from lib chart.
To merge templates I'm using the following util:

{{- define "mylibchart.util.merge" -}}
{{- $top := first . -}}
{{- $overrides := fromYaml (include (index . 1) $top) | default (dict ) -}}
{{- $tpl := fromYaml (include (index . 2) $top) | default (dict ) -}}
{{- toYaml (merge $overrides $tpl) -}}
{{- end -}}

Problem I faced with is the following.

Common template:

imagePullPolicy: Always
spec:
  replicas: {{ .Values.global.container.replicas }}
  selector:
    matchLabels:
      app: {{ .Values.application.name }}
  template:
    metadata: 
      labels:
        app: {{ .Values.application.name }}

Overwriting template:

spec:
  template:
    metadata: 
      labels:
        app: Custom value
        annotation: custom

Result:

imagePullPolicy: Always
spec:
  template:
    metadata: 
      labels:
        app: Custom value
        annotation: custom

Result I want to achieve:

imagePullPolicy: Always
spec:
  replicas: {{ .Values.global.container.replicas }}
  selector:
    matchLabels:
      app: {{ .Values.application.name }}
  template:
    metadata: 
      labels:
        app: Custom value
        annotation: custom

I've already checked sprig lib but didn't find other function to be handy in this case.

0 Answers
Related