Kubernetes helm, Files.Get и переменные - PullRequest
0 голосов
/ 01 октября 2018

Я пытаюсь динамически указать имя файла для включения в configmap.yaml, используя язык шаблонов Helm.

Вот пример:

{{- $filename := .Values.KRB5_REALM -}}
apiVersion: v1
data:
  # When the config map is mounted as a volume, these will be created as files.
  krb5.conf: |
{{ .Files.Get $filename".krb5.conf" | indent 4 }}
kind: ConfigMap
metadata:
  name: {{ template "myapp.fullname" . }}
  labels:
    heritage: {{ .Release.Service }}
    release: {{ .Release.Name }}
    chart: {{ .Chart.Name }}-{{ .Chart.Version }}
    app: {{ template "myapp.name" . }}
    environment: {{ .Values.environment }}

приведенный выше код приводит к ошибке.

Я пробовал несколько вариантов, но безуспешно, например:

{{ .Files.Get .Values.KRB5_REALM".krb5.conf" | indent 4 }}

Как я могу решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 06 июля 2019

Каким-то образом я наткнулся на этот пост и, благодаря @david maze, я хотел бы добавить несколько вещей.Так что, если существует более двух аргументов и файл находится в каталоге, как его использовать.Мой вариант использования состоял в том, чтобы добавить все файлы конфигурации, которые были в json, в отдельный каталог с именем config, который был создан внутри каталога helm.Вот как я это раскатал.Надеюсь, что это поможет:

Файл values.yaml

config_service_version: v1
config_service_dir: config
service: test

Файл configmap.yaml

---
apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ .Values.service }}-{{ .Values.config_service_version }}
  #Additional labels to use
  #name: {{ printf "%s-%s" .Release.Name .Chart.Name }}
  #labels:
  #  app: {{ .Chart.Name | trunc 63 | trimSuffix "-" }}
  #  chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
  #  release: {{ .Release.Name }}
  #  heritage: {{ .Release.Service }}
data:
  config.json: |-
    {{ .Files.Get (printf "%s/%s-%s.json" .Values.config_service_dir .Values.service .Values.config_service_version ) | indent 4 }}

0 голосов
/ 01 октября 2018

Обычный способ собрать строки подобным образом - с помощью функции Go text / template printf.Один из способов сделать это может быть:

{{ printf "%s.krb5.conf" .Values.KRB5_REALM | .Files.Get | indent 4 }}

Или вы можете заключить в скобки выражение:

{{ .Files.Get (printf "%s.krb5.conf" .Values.KRB5_REALM) | indent 4 }}
...