Используйте Helm для прокрутки строк файла dotenv и рендеринга как пары ключ-значение в ConfigMap

У меня есть это .env файл:

REACT_APP_API_ENDPOINT=http://api.app:8080
REACT_APP_GOOGLE_ANALY=xyz1234ezyz

Я хочу создать конфигурационную карту из этого файла.env, который выглядит так:

apiVersion: v1
kind: ConfigMap
metadata:
  name: frontend-config

data:
 REACT_APP_API_ENDPOINT: 'http://api.app:8080'
 REACT_APP_GOOGLE_ANALY: 'xyz1234ezyz'
  

Алгоритм прост:

 forEach Line of `.env` content
    > Split by "="
    > key <- first part , value <- second part
    > render key, value in 

Значения по умолчанию для моей диаграммы управления:

# chart/values.yaml

# using --set-file
frontendEnv: |
 REACT_APP_API_ENDPOINT=http://api.app:8080
 REACT_APP_GOOGLE_ANALY=xyz1234ezyz

Мой шаблон configmap:

apiVersion: v1
kind: ConfigMap
metadata:
 #...

data:

# MY QUESTION is what to put Here 

Я пробовал этот цикл:

# ...
# ..
data:
{{- range $line := splitList "\n" .Values.frontendEnv -}}
{{/* Break the line into words */}}
{{- $kv := split "=" $line -}}
  $kv._0: {{ $kv._1 | quote }}
{{- end -}}

Но это не работает

1 ответ

Решение

Исправлена ​​.

  • использовать {{- range ... }} не {{- range... -}} сохранять новую строку для каждой итерации.

  • использовать splitList не разделять

  • проверьте, не пуста ли строка

{{- range $line := splitList "\n" .Values.frontendEnv }}
  {{/* Break the line into words */}}
  {{- $kv := splitList "=" $line -}}
  {{- $k := first $kv -}}
  {{- if $k }}
    {{ $k }}: {{ last $kv | quote }}
  {{- end }}

{{- end }}
Другие вопросы по тегам