У меня есть диаграмма Helm с values.yaml
, содержащая:
# Elided
tolerations: []
Я пытаюсь передать допуски через командную строку, но она всегда удаляет кавычки (или добавляет двойные кавычки внутри одинарных), несмотря на все попытки ниже. В результате он не работает при установке, говоря, что ожидал строку.
# Attempt 0
helm install traefik traefik/traefik --set tolerations[0].key=CriticalAddonsOnly --set tolerations[0].value = "true" --set tolerations[0].operator=Equal --set tolerations[0].effect=NoExecute
# Attempt 1
helm install traefik traefik/traefik --set tolerations[0].key=CriticalAddonsOnly --set "tolerations[0].value = "true"" --set tolerations[0].operator=Equal --set tolerations[0].effect=NoExecute
# Attempt 2
helm install traefik traefik/traefik --set tolerations[0].key=CriticalAddonsOnly --set "tolerations[0].value=\"true\"" --set tolerations[0].operator=Equal --set tolerations[0].effect=NoExecute
# Attempt 3
helm install traefik traefik/traefik --set tolerations[0].key=CriticalAddonsOnly --set tolerations[0].value = "\"true\"" --set tolerations[0].operator=Equal --set tolerations[0].effect=NoExecute
# Attempt 4
helm install traefik traefik/traefik --set tolerations[0].key=CriticalAddonsOnly --set tolerations[0].value='"true"' --set tolerations[0].operator=Equal --set tolerations[0].effect=NoExecute
Все они в конечном итоге создают yaml с value: true
или value: '"true"'
, ни один из которых не будет установлен.
Кажется, есть два ответа: исключительно подробный, который вы пытаетесь решить, или более краткий, который не вызывает вопросов о переполнении стека для будущих читателей:
Helm предлагает --set-string, которая является версией --set
без интерполяции.
helm install traefik traefik/traefik \
--set tolerations[0].key=CriticalAddonsOnly \
--set-string tolerations[0].value=true \
--set tolerations[0].operator=Equal \
--set tolerations[0].effect=NoExecute
Однако, как вы поняли, этот синтаксис --set
предназначен только для самых простых случаев, для более сложных случаев --values
является правильным механизмом. Вы можете прочитать их из стандартного ввода, если создать временный файл yaml слишком сложно.
printf 'tolerations: [{key: CriticalAddonsOnly, value: "true", operator: Equal, effect: NoExecute}]\n' | \
helm install traefik traefik/traefik --values /dev/stdin
Спасибо, это именно то, что я искал! В документации Helm было нелегко найти этот ответ.