空对象不会在合并中覆盖吗?

问题描述 投票:1回答:1

我在通用图表中使用以下部署:

{{- 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的合并功能,它不会合并空值。有什么解决方法?

yaml kubernetes-helm
1个回答
0
投票

在打开的github问题上找到a workaround-使用

resources: null

在我的头盔2.16.3的测试中有效

© www.soinside.com 2019 - 2024. All rights reserved.