有如下的文本,希望放在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?