Использование многострочного сценария оболочки в качестве значения helm - PullRequest
1 голос
/ 28 апреля 2020

У меня есть шаблон 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, потому что я не могу создать карту конфигурации по какой-то неизбежной причине.

1 Ответ

3 голосов
/ 28 апреля 2020

Вам нужно добавить ниндент, например:

        initContainers:
        - name: check-crd
          image: 'bitnami/kubectl:1.12'
          env:
          - name: CRDs
            value: {{ .Values.CRDs.list }}
          command:
          - "/bin/bash"
          - "-c"
          - {{- toYaml .Values.CRDs.script | nindent 12 }}
...