Есть ли способ получить имя файла, используемого в параметре --set-file во время установки / обновления / шаблона helm в файлах шаблонов таблицы управления? - PullRequest
0 голосов
/ 26 февраля 2020

helm template sample ./sample-chart --set-file configMaps="{app1.yaml,app2.yaml}"

Это команда, которую я использую для установки файла в качестве значений для диаграммы. И в диаграмме, которую я использую, установите файлы как карту конфигурации.

configmap.yaml:

{{ range $configMap := .Values.configMaps }}
apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ <<file-name> }}-cm
data: 
{{ $configMap | indent 2}}
{{ end }}

Я хочу установить имя карты конфигурации, имя файлов, содержимое которых используется в качестве данных .ie app1, app2 в этом случае. Есть ли способы сделать это?

Ответы [ 2 ]

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

Вы можете попросить Хелма прочитать сам файл при создании экземпляра шаблона. Вместо того, чтобы передавать содержимое файлов, передавать их имена напрямую.

Адаптируя базовый c пример из документации Helm, вы можете написать ConfigMap

{{- $files := .Files }}
{{- range .Values.configMaps }}
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ . }}-cm
data:
  {{ . }}: |-
    {{ $files.Get . }}
{{- end }}

(Фактический пример помещает все файлы в один ConfigMap, и это может быть немного проще в управлении.)

Когда вы запускаете это, вы даете имена файлов, а не их содержимое в командной строке (или файл вспомогательных значений)

helm template sample ./sample-chart --set configMaps="{app1.yaml,app2.yaml}"
0 голосов
/ 04 марта 2020

Просто обновление по этой проблеме, я изменил формат ключа в аргументе --set-file.

helm template sample ./sample-chart --set-file configMapFiles.app1-yaml.data="app1.yaml" --set-file configMapFiles.app2-yaml.data="app2.yaml"

И я изменил шаблон для configMap. yaml as

configmap.yaml:

{{ range $configMapName$configMap := .Values.configMapFiles }}
apiVersion: v1
kind: ConfigMap
metadata:
  name: {{$configMapName}}-cm
data: 
{{$configMap | indent 2}}: |-
{{ $configMap.data | indent 4}}
---
{{ end }}

Это позволило мне установить имя файла в метаданных configMap.

...