Helm - Configmap - заменять только содержимое файла, а не имена файлов
Я определил файлы application.properties в директории config. Config dir находится на структуре ниже.
config
application.properties
application-test.properties
application-dev.properties
application-prod.properties
Я создал диаграмму руля для создания карты конфигурации. График руля определяется как показано ниже
apiVersion: v1
kind: ConfigMap
metadata:
name: nginx-configmap
data:
{{- (.Files.Glob "config/*").AsConfig | nindent 2 }}
Я вижу, что configmap создан.
Мы потребляем ConfigMap через переменные среды в работающем контейнере, используя envFrom
свойство. (Это в моем файле развертывания yaml)
spec:
containers:
- envFrom:
- configMapRef:
name: nginx-configmap
Я вижу, что значения хранятся как переменные среды. Однако переменные в нижнем регистре.
server.port=8080
server.name=localhost
Поскольку это переменные env, они должны быть в верхнем регистре и. следует заменить на _. Итак, я изменил свой график, как показано ниже
data:
{{- (.Files.Glob "config/*").AsConfig | nindent 2 | upper | replace "." "_" }}
Сгенерированный configmap, как показано ниже
APPLICATION_PROPERTIES: |
SERVER_PORT = 8080
SERVER_NAME = LOCALHOST
Ниже приведены переменные env внутри контейнера
APPLICATION_PROPERTIES=SERVER_PORT = 8080
SERVER_NAME = LOCALHOST
Мое требование заключается в том, что только содержимое файла должно быть в верхнем регистре и. следует заменить на _. Имя файла не должно быть преобразовано. Имя файла должно быть как есть.
Можно ли этого достичь?
1 ответ
Попробуй это:
apiVersion: v1
kind: ConfigMap
metadata:
name: nginx-configmap
data:
{{ $root := . }}
{{ range $path, $bytes := .Files.Glob "config/*" }}
{{ base $path }}: '{{ $root.Files.Get $path | nindent 2 | upper | replace "." "_" }}'
{{ end }}