У меня есть шаблон helm 3 со следующим yaml, который прекрасно работает. Он содержит многострочный сценарий оболочки как часть initContainers
и работает по мере необходимости.
initContainers:
- name: check-crd
image: 'bitnami/kubectl:1.12'
env:
- name: CRDs
value: {{ .Values.CRDs.list }}
command:
- "/bin/bash"
- "-c"
- |
set -x
for i in $(echo $CRDs | tr ":" "\n")
do
kubectl get -o json $i
done
Однако, когда я пытаюсь переместить сценарий оболочки в значение helm, я получаю сообщение об ошибке. Новый yaml и значения:
initContainers:
- name: check-crd
image: 'bitnami/kubectl:1.12'
env:
- name: CRDs
value: {{ .Values.CRDs.list }}
command:
- "/bin/bash"
- "-c"
- {{ .Values.CRDs.script }}
файл values.yaml
:
CRDs:
list: 'mycrd1s.example.com:mycrd2s.example.com'
script: |
set -x
for i in $(echo $CRDs | tr ":" "\n")
do
kubectl get -o json $i
done
Когда я пытаюсь установить helm3, я получаю сообщение об ошибке:
error converting YAML to JSON: yaml: line 30: could not find expected ':'
Я понимаю, что это какая-то проблема с многострочными строками YAML, но не мог понять, как это исправить. Я пробовал с различными комбинациями {{
, {{-
, toYaml
et c. но не смог решить эту проблему. Любой способ использовать многострочный сценарий оболочки в качестве значения helm?
PS: я понимаю, что могу создать ConfigMap
со сценарием оболочки в качестве данных и добиться того же, но я хочу все должно быть сделано только через файлы yaml, потому что я не могу создать карту конфигурации по какой-то неизбежной причине.