Почему я должен предпочесть это:
args: [{{ Values.somevalue | quote }}]
к этому
args: ["{{ Values.somevalue }}"]
Мне кажется, что я где-то читал о разнице, но я могу найти что-нибудь о том, что ""
делать в документах, они упоминают только | quote
. Но если две строки, которые я написал выше, эквивалентны, зачем вообще создавать функцию quote
?
Интересным свойством Это выглядит какquote
является то, что он может принимать произвольное количество параметров, заключать каждый из них в кавычки и помещать один пробел между ними.
{{ $v := "foo" }}
{{ quote $v "bar" "baz" }}
{{/* "foo" "bar" "baz" */}}
Если вам нужно включить его в расширенный конвейер, форма функции может быть удобной.
{{ list (quote $x) | toJson }}
{{/* ["\"foo\""] */}}
Но в остальном он, похоже, не делает ничего особенного и, в частности, не экранирует кавычки.
{{ $x := "foo" -}}
{{/* All produce "foo": */}}
"{{ $x }}"
{{ $x | quote }}
{{ $x | printf "\"%s\"" }}
{{/* Not what you hoped for: */}}
{{ $y := "bar\", \"baz" }}
{{ $y | quote }}
{{/* "bar", "baz" */}}
(FWIW, я почти всегда {{ ... | quote }}
; но я думаю, когда я начал изучать Helm, я также ожидал, что это на самом деле будет экранировать, а это не так.)
Похоже, вы также можете использовать двойные кавычки внутри фигурных скобок, чтобы указать строковый литерал, а затем использовать
quote
, чтобы поместить их в кавычки. Например, если вы хотите, чтобы этот текст отображался в вашем манифесте:"{{ foo }}"
, то в helm, я думаю, вам нужно{{ "{{ foo }}" | quote }}
, что полезно для параметров argo...