-1

我真的想避免“如果”条件,因为这感觉像是可以以更易读的方式处理的东西。

我有这样的价值:

healthChecks:
  livenessProbe:
    httpGet:
      path: /
      port: http

并像这样使用它:

{{- toYaml .Values.healthChecks | nindent 10 }}

但是这个值可能是空的,我想支持它。因此,如果healthChecks:未指定该值,则图表不会呈现它。我该怎么做呢?

我希望 toYaml 足够聪明,可以看到 .Values.healthChecks 为空并且不执行任何操作,但会引发错误:unable to parse YAML: error converting YAML to JSON: yaml: line X: could not find expected ':'

我真的需要一个 if 条件吗?如果值为空,是否有内置方法让 toYaml 什么也不做?

4

1 回答 1

0

如果您真的想避免条件,您可以使用default提供某种可以呈现的默认值。例如,dict用于生成空字典应呈现到{}模板内部。

        healthChecks:
{{ .Values.healthChecks | default dict | toYaml | indent 10 }}

我可能会在这里使用条件,这将具有特殊的优势,即如果值不存在,您可以避免发出密钥。使用with而不是if也意味着您不需要重复该值(但.如果您需要引用其他顶级值,它会改变 的含义)。

{{ with .Values.healthChecks }}
        healthChecks: {{- toYaml . | nindent 10 }}
{{- end }}
于 2021-11-09T23:50:59.637 回答