You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Helm Chart模板的多行字符串中编写流控制?

在Helm Chart的YAML多行字符串里用流控制的正确姿势

在Helm Chart的YAML文件里,要在多行块字符串(就是用|标记的那种)里用if这类模板流控制,关键是让模板指令和字符串内容缩进对齐,再用模板的空白修剪标记(-)控制多余的空格和换行。

你的示例问题

你贴的这段代码,主要是缩进和空白处理的问题,可能导致渲染后的字符串有多余的前导空格,或者出现不必要的空行。我们调整下就能正常工作。

正确写法

假设你想要的效果是:当.Values.favorite.drink是coffee时,输出Latte、Cappuccino加Espresso;否则只输出Espresso,而且每行内容不带多余前导空格,可以这么写:

coffee: |
{{- if eq .Values.favorite.drink "coffee" }}
  Latte
  Cappuccino
{{- end }}
  Espresso

要是你希望最终输出的字符串每行都带两个空格的缩进,那就保持模板指令和内容同缩进:

coffee: |
  {{- if eq .Values.favorite.drink "coffee" }}
  Latte
  Cappuccino
  {{- end }}
  Espresso

核心注意点

  • 缩进对齐:模板指令{{- ... }}得和块里的内容缩进一致,不然渲染出来的YAML可能格式错误,Helm会报错。
  • 空白修剪:{{- 会删掉指令左边的空白(包括换行),-}} 会删掉右边的。用对了能避免输出多余的空行或者空格,比如第一个示例里的{{- if 就去掉了指令前面的换行,不会让条件满足时出现空行。
  • 块字符串特性:YAML的|会保留你写的换行和缩进,所以块里每一行的缩进都会原封不动出现在最终输出的字符串里,得根据你想要的结果调整缩进。

内容的提问来源于stack exchange,提问作者tony

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 10:45:32