首页 > 解决方案 > 如何删除 .toYaml 在 helm 中添加的新行?

问题描述

我在舵图的 values.yaml 中添加了以下部分:

   extraEnv:
      - name: APPSERVER_RETURN_CLIENT_ERRORS
        value: true

并在 deployment.yaml 中使用这些值作为:

  env:
    - name: DYNA_GATEWAY_HOST
      value: "$(DYNAGATEWAY_SERVICE_HOST)"
  {{- with .Values.extraEnv }}
    {{- toYaml . | nindent 12 }}
  {{- end }} 

但是当它读取时,它会在 env 部分之后附加一个新行:

  imagePullPolicy: Always
  env:
    - name: DYNA_GATEWAY_HOST
      value: "$(DYNAGATEWAY_SERVICE_HOST)"
    - name: APPSERVER_RETURN_CLIENT_ERRORS
      value: true

  ports:

我该如何解决这个问题?

标签: yamlkubernetes-helm

解决方案


Sprigtrim函数将删除前导和尾随空格。就管道而言,您希望在nindent将前导换行符放在其前面之前执行此操作。

{{- toYaml . | trim | nindent 12 }}

如果您知道toYaml将始终包含尾随换行符(它会在.Values.extraEnv非空列表或字典时出现),您的另一个选择是尝试抑制它周围的空格

{{- with .Values.extraEnv }}
  {{- toYaml . | nindent 12 }}
{{/*   vvv add this hyphen */}}
{{- end -}}

但这可能会干扰下一行的缩进。


推荐阅读