Helm: захват содержимого файла из values.yaml - PullRequest
0 голосов
/ 09 октября 2019

Я пытаюсь поместить содержимое файла конфигурации в values.yaml и получить его.

Например:

Это values.yaml:

configuration: |
  [core]
  # Some comments
  my_folder = /usr/local/my_folder

  # The folder where my app should store its log files
  # This path must be absolute
  base_log_folder = /usr/local/app/logs

  # Logging options
  remote_logging = False
  remote_log_conn_id =
  remote_base_log_folder =
  encrypt_logs = False

и это configMap, куда я должен поместить содержимое:

apiVersion: v1
kind: ConfigMap
metadata:
  name: "{{ template "app.fullname" . }}-config"
data:
  my.cfg: |
{{ HELM }}

В теге "HELM" я пробовал несколько вариантов tpl и include, но все не достигали своей цели.

В качестве неоптимального решения я помещаю содержимое моего configuration в файл и беру его с помощью

{{ .Files.Get "files/my.configuration" | indent 4 }}

Я прошу несколько предложений о возможности иметь все в values.yaml, пожалуйста. Заранее спасибо.

1 Ответ

0 голосов
/ 21 октября 2019

Поскольку вы используете | в YAML, вы определяете Многострочную строку YAML , что означает, что у вашего ключа configuration есть одно строковое значение с разрывами строк (\n).

Вы можете просто определить свой шаблон ConfigMap следующим образом:

apiVersion: v1
kind: ConfigMap
metadata:
  name: "{{ template "app.fullname" . }}-config"
data:
  my.cfg:
{{- toYaml $.Values.configuration | nindent 4 }}

После рендеринга полученный ConfigMap будет развернут как:

apiVersion: v1
data:
  my.cfg: |
    [core]
    # Some comments
    my_folder = /usr/local/my_folder

    # The folder where my app should store its log files
    # This path must be absolute
    base_log_folder = /usr/local/app/logs

    # Logging options
    remote_logging = False
    remote_log_conn_id =
    remote_base_log_folder =
    encrypt_logs = False
kind: ConfigMap
metadata:
  name: test-config
...