Я пытался изменить диаграмму управления ( эта ), и есть один шаблон для создания configMap.
Карта конфигурации затем загружается и анализируется как json разными модулями.
Дело в том, что мне нужно в какой-то момент поместить список строк в json. При передаче только значения в шаблоне список не цитировался. Затем я попытался использовать диапазон, чтобы делать это поэлементно, но затем получил последнюю запятую. А синтаксический анализатор json, используемый мной развертываемым образом (над которым я не контролирую), не будет принимать нестрогие json. Т.е. последний элемент в списке не может иметь завершающую запятую.
Вот пример values.yaml
:
val:
- "a"
- "b"
- "c"
И некоторые template.tpl
:
apiVersion: v1
kind: ConfigMap
metadata:
name: some-configmap
data:
cfg.json: |
{
"val": [{{ range .Values.val }}{{ . | quote }},{{ end }}]
}
Но это дает:
{
"val": ["a","b","c",]
}
Что отклоняется парсером json с сообщением вида:
internal/modules/cjs/loader.js:1008
throw err;
^
SyntaxError: /etc/config/..2020_08_03_15_32_26.221540866/pelias.json: Unexpected token ] in JSON at position 1744
at JSON.parse (<anonymous>)
at Object.Module._extensions..json (internal/modules/cjs/loader.js:1005:27)
at Module.load (internal/modules/cjs/loader.js:811:32)
at Function.Module._load (internal/modules/cjs/loader.js:723:14)
at Module.require (internal/modules/cjs/loader.js:848:19)
at require (internal/modules/cjs/helpers.js:74:18)
at getConfig (/code/pelias/schema/node_modules/pelias-config/index.js:66:21)
at Object.generate (/code/pelias/schema/node_modules/pelias-config/index.js:24:18)
at Object.<anonymous> (/code/pelias/schema/scripts/create_index.js:2:41)
at Module._compile (internal/modules/cjs/loader.js:955:30)
Если я передаю только пустые списки, парсер json счастлив, но мне нужны эти аргументы для остальной части процесса.
Есть ли способ удалить последнюю запятую или даже более элегантно загрузить список строк с помощью шаблонов руля?
(я знаю, что могу жестко закодировать значение в своих шаблонах, но я бы хотел, чтобы это развертывание можно было повторно использовать с другими параметрами)
Заранее спасибо.
[EDIT ]
Я нашел несколько работающую стратегию, выполнив: "val": [{{ join "," .Values.val }}]
Единственная проблема сейчас в том, что мне нужно использовать двойные кавычки в моем values.yaml
:
val:
- '"a"'
- '"b"'
- '"c"'
Это нормально, но я был бы заинтересован в более чистом решении, если оно есть у кого-нибудь.