Пустой объект не перезаписывается при слиянии? - PullRequest
1 голос
/ 12 апреля 2020

Я использую следующее развертывание в общей диаграмме:

{{- define "common.deployment" -}}
{{- $common := dict "Values" .Values.common -}} 
{{- $noCommon := omit .Values "common" -}} 
{{- $overrides := dict "Values" $noCommon -}} 
{{- $noValues := omit . "Values" -}} 
{{- with merge $noValues $overrides $common -}}
                  ...
        {{- if .Values.resources }}
        resources:
{{ toYaml .Values.resources | indent 12 }}
                  ...
{{- end -}}

Он должен объединить значения диаграммы, используя ее, и перезаписать, если значения существуют. Пока все работает нормально, за исключением случая, когда common/values.yaml имеет:

resources:
  requests:
    cpu: 20m
    memory: 120Mi

И диаграмма, использующая его values.yaml имеет:

resources: {}

Итак, указав пустой объект, я ожидайте удалить блок ресурсов, но похоже, что слияние не работает таким образом и все же определяет приоритеты общих значений. Почему так и как это исправить?

Я обнаружил, что функция слияния использует mergo / merge под капотом, и она не объединяет пустые значения. Какой обходной путь может быть здесь?

1 Ответ

1 голос
/ 12 апреля 2020

Найден обходной путь при открытой проблеме github - используйте

resources: null

Он работает в моих тестах со штурвалом 2.16.3

...