Helm 模板中转义两个大括号作为文本处理

有如下的文本,希望放在configmap的data中作为文本。由于其中包含“{{”和“}}”,所以需要特殊处理。
{< if .convert_timezone >}"timezone": "{{ beat.timezone }}",{< end >}

处理如下:
test1: |-
  {{`{< if .convert_timezone >}"timezone": "{{ beat.timezone }}",{< end >}`}}
test2: |-
  {{ printf "{< if .convert_timezone >}\"timezone\": \"{{ beat.timezone }}\",{< end >}" }}
test3: |-
  {< if .convert_timezone >}"timezone": "{{ "{{" }} beat.timezone {{ "}}" }}",{< end >}
test4: |-
  {< if .convert_timezone >}"timezone": "{{ printf "{{" }} beat.timezone {{ printf "}}" }}",{< end >}

测试结果:

  test1: |-
    {< if .convert_timezone >}"timezone": "{{ beat.timezone }}",{< end >}
  test2: |-
    {< if .convert_timezone >}"timezone": "{{ beat.timezone }}",{< end >}
  test3: |-
    {< if .convert_timezone >}"timezone": "{{ beat.timezone }}",{< end >}
  test4: |-
    {< if .convert_timezone >}"timezone": "{{ beat.timezone }}",{< end >}

方式1:

使用{{`......`}} 将要输出的文本整个放在里面,最方便。

方式2:

{{ printf "...." }} 使用print函数。如果内部同时又有双引号,则双引号要加“\”转义一下。

方法3:

{{ "{{" }},{{ "}}" }} 使用这两个写法,将“{{”,“}}”单独转义一下。凡是需要转义的地方都要一个个分别转义。

test4和test3类似,只不过用的print函数。

方式4:

使用.Files对象,从其他文件中读取文本直接放到我们的模板中。由于文件整体原封不动放进来,不足就是无法自定义其中的某个值(用.Value取值)。

参考:

1. Accessing Files Inside Templates

2. Can Helm support to ignore {{expr}} which is just for configuration but not render?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值