Helm: передать многострочную переменную env в развертывание - PullRequest
1 голос
/ 10 февраля 2020

Мне нужно передать частный ключ RSA как ENV var в мой файл развертывания, и я не могу сделать это в данный момент.

containers:
  env:
      - name: MY_PRIVATE_KEY
        value: |+
        {{ .Values.fpm.dot_env.MY_PRIVATE_KEY}}

Я пробовал с отступом, без отступа, используя toYaml (с этим нет ошибки, но мой env var начинается с | -) ...

Есть идеи?

Это ошибка, которую я получаю из этого кода:

Error: UPGRADE FAILED: YAML parse error on broker-api/templates/deployment.yaml: error converting YAML to JSON: yaml: line 59: could not find expected ':'

Ответы [ 2 ]

1 голос
/ 11 февраля 2020

Если вы пытаетесь встроить многострочную строку в артефакт Kubernetes на диаграмме Хелма, самый простой рецепт -

  1. Использование блочной скалярной формы YAML | для сохранения новых строк;
  2. Запустить макрос Go template {{ ... }} в первом столбце; и
  3. Используйте функцию sprig indent для отступа каждой строки блока, включая первую.

(Вы часто будете видеть |- которая завершает последний перевод строки; для этого я могу представить, что хочу сохранить последний перевод строки |+ или просто |; разница между этими двумя последними заключается в том, сохраняются ли дополнительные пустые строки в конце или нет.)

containers:
  env:
      - name: MY_PRIVATE_KEY
        value: |+
{{ .Values.fpm.dot_env.MY_PRIVATE_KEY | indent 12 }}

(Обычно для реальных секретов рекомендуется хранить их в секретных объектах Kubernetes. Эти значения кодируются в base64 в API-интерфейсе Kubernetes, поэтому, когда вы объявляете секретный объект в Helm, вы будете использовать ... | b64enc вместо это indent рецепт.)

0 голосов
/ 11 февраля 2020

Наконец-то я решил свою проблему с помощью b64 кодирования моего ключа и b64 декодирования его из моего бэкэнда.

Спасибо.

...