Helm: Может заменить строку в файле?

Созданный на 15 мая 2018  ·  3Комментарии  ·  Источник: helm/helm

Привет,
У меня возникает проблема, когда я пытаюсь развернуть карту конфигурации с помощью helm. Проблема объясняется следующим образом.
Предположим, у меня есть диаграмма управления, структура папок которой выглядит следующим образом.

├── графики
├── Chart.yaml
├── conf
│ └── tee.xml
├── шаблоны
│ └── ConfigMap.yaml
└── values.yaml

tee.xml показан ниже.

<note>
<to>Tove</to>
<from>${name}</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

ConfigMap.yaml показан ниже.

apiVersion: v1
kind: ConfigMap
metadata:
  name: mytest-var
xml:
  {{ .Values.from }}
data:
  {{- $file := .Files }}
  {{- $var := .Values.from }}
  {{- range $path, $byte := .Files.Glob "conf/*" }}
  {{- $list := $path | splitList "/"}}
  {{- $length := len $list }}
  {{- $last := add $length -1 }}
  {{ index $list $last }}: |-
    {{- range $file.Lines $path }}
    {{ . }}
    {{- end }}
  {{- end }}

часть values.yaml показана ниже.
from: Shashi

Когда я запускаю команду установки helm, я хочу заменить значение ${name} которое находится в файле tee.xml ( <from>${name}</from> ), на значение, установленное в values.yaml. Возможно ли это с помощью Helm, и если это возможно, не могли бы вы помочь мне внести соответствующие изменения?

questiosupport

Самый полезный комментарий

Привет,

Мне удалось найти решение вышеуказанной проблемы, используя «заменить». Ниже я прикрепил соответствующие файлы helm.

ConfigMap.yaml

apiVersion: v1
kind: ConfigMap
metadata:
  name: mytest-var
xml:
  {{ .Values.from }}
data:
  {{- $file := .Files }}
  {{- $var := .Values.from }}
  {{- range $path, $byte := .Files.Glob "conf/*" }}
  {{- $list := $path | splitList "/"}}
  {{- $length := len $list }}
  {{- $last := add $length -1 }}
  {{ index $list $last }}: |-
    {{- range $line := $file.Lines $path }}
    {{ $line | replace "John" $var }}
    {{- end }}
  {{- end }}

tee.xml

<note>
<to>Tove</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

Часть values.yaml
from: Cigra

Запустив helm install, мы можем создать карту конфигурации, которая заменяет ключ "Джон "от слова" Cigra "

Скажите, пожалуйста, это правильный способ?

Все 3 Комментарий

Привет,

Мне удалось найти решение вышеуказанной проблемы, используя «заменить». Ниже я прикрепил соответствующие файлы helm.

ConfigMap.yaml

apiVersion: v1
kind: ConfigMap
metadata:
  name: mytest-var
xml:
  {{ .Values.from }}
data:
  {{- $file := .Files }}
  {{- $var := .Values.from }}
  {{- range $path, $byte := .Files.Glob "conf/*" }}
  {{- $list := $path | splitList "/"}}
  {{- $length := len $list }}
  {{- $last := add $length -1 }}
  {{ index $list $last }}: |-
    {{- range $line := $file.Lines $path }}
    {{ $line | replace "John" $var }}
    {{- end }}
  {{- end }}

tee.xml

<note>
<to>Tove</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

Часть values.yaml
from: Cigra

Запустив helm install, мы можем создать карту конфигурации, которая заменяет ключ "Джон "от слова" Cigra "

Скажите, пожалуйста, это правильный способ?

Если работает, значит, работает. Использование replace для замены каждого экземпляра подстроки в заданной строке кажется мне разумным.

Я согласен - использование replace в этом случае кажется неплохим вариантом.

@KavinduZoysa, учитывая, что это решение работает, позвольте мне продолжить и закрыть эту проблему. Не стесняйтесь повторно открыть, если это не сработало так, как ожидалось, или если у вас есть другие связанные вопросы. Спасибо!

Была ли эта страница полезной?
0 / 5 - 0 рейтинги