Включение сценария оболочки в ConfigMap с использованием Helm завершается ошибками YAML - PullRequest
0 голосов
/ 19 мая 2018

Я хочу смонтировать шаблон сценария оболочки в контейнер.

У меня есть следующее configmap.yaml:

apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ template "myservice-chart.fullname" . }}--scripts-configmap
  labels:
    app: {{ template "myservice-chart.name" . }}
    chart: {{ template "myservice-chart.chart" . }}
    release: {{ .Release.Name }}
    heritage: {{ .Release.Service }}
data:
  setup: |
    {{ include "setup" . | indent 4 }}

И это мое setup.tpl:

{{- define "setup" }}
#!/bin/bash
echo "Hello world!"
{{- end }}

Когда я выполняю пробный прогон Helm, Helm генерирует этот (действительный) YAML:

...
apiVersion: v1
kind: ConfigMap
metadata:
  name: listening-donkey-myservice-chart-quorum-scripts-configmap
  labels:
    app: myservice-chart
    chart: myservice-chart-0.1.0
    release: listening-donkey
    heritage: Tiller
data:
  setup: |

    #!/bin/bash
    echo "Hello world!"
...

Когда я запускаю его без --dry-run, он генерирует эту ошибку:

configmap.yaml: ошибка преобразования YAML в JSON: yaml: строка 13: не найден ожидаемый ключ

Ответы [ 2 ]

0 голосов
/ 19 мая 2018

Согласно руководству по шаблону рулевой диаграммы :

Синтаксис фигурных скобок в объявлениях шаблонов можно изменить с помощью специальных символов, чтобы заставить механизм шаблонов разбивать пробелы.{{- (с добавленной чертой и пробелом) указывает, что пробел должен быть выделен слева, а -}} означает, что пробел справа должен быть занят.Быть осторожен!Символы новой строки - это пробел!

Итак, чтобы предотвратить пустую пустую строку ниже setup: |, configmap.yaml должно быть следующим:

apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ template "myservice-chart.fullname" . }}--scripts-configmap
  labels:
    app: {{ template "myservice-chart.name" . }}
    chart: {{ template "myservice-chart.chart" . }}
    release: {{ .Release.Name }}
    heritage: {{ .Release.Service }}
data:
  setup: |
    {{- include "setup" . | indent 4 }}
0 голосов
/ 19 мая 2018

Похоже, что Хелм создает бесполезную пустую строку ниже setup: |, следовательно, неверный отступ.

Вот как я это исправил:

...
data:
  setup: |
    # Useless line to prevent "did not find expected key"
    {{ include "setup" . | indent 4 }}
...