пытается удалить первую и последнюю квадратные скобки из json, вводя данные в configmap с помощью helm - PullRequest
0 голосов
/ 04 августа 2020

У меня есть данные в файле JSON, и я добавляю каждую строку в качестве значения ключа в ConfigMap с помощью Helm, но мне нужно удалить первую и последнюю фигурные скобки.

Ниже находится файл JSON content:

{
    "type": "PurposeResourcesDefinition",
    "version": "1.0",
    "purposeId": "p#####",
    "description": "Artifactory container registry",
    "resources": [{
        "type": "artifactory.containerregistry",
        "name": "<repository name prefixed with the purpose>"
    ]
}

Я использую приведенный ниже синтаксис Helm:

data:
  {{ range .Files.Lines "foo/app.json" }}
  {{ . }}{{ end }}

Как удалить окружающие фигурные скобки с помощью шаблонов Helm?

1 Ответ

1 голос
/ 04 августа 2020

Если вы знаете, что { и } будут на одной линии, вы можете просто пропустить их. Это не особенно надежно, но это будет работать для примера, который вы показываете.

data:
{{- range .Files.Lines "foo/app.json" }}
{{- if and (ne . "{") (ne . "}") }}
  {{ . }}
{{- end }}

На более высоком уровне похоже, что вы пытаетесь прочитать файл JSON, а затем записать эти значения как содержимое ConfigMap. Удаление ведущих и конечных фигурных скобок будет работать из-за сходства синтаксиса c между YAML и JSON, но может быть лучше активно преобразовать из одного формата в другой. Helm имеет несколько недокументированных функций преобразования , включая fromJson и toYaml. Вы также можете написать это как:

data: {{- .Files.Get "foo/app.json" | fromJson | toYaml | nindent 2 }}
...