Учитывая yaml-файл (helmfile), как показано ниже
releases:
- chart: ../charts/foo
name: foo
namespace: '{{ .Values.stack }}'
values:
- ../config/templates/foo-values.yaml.gotmpl
set:
- name: image.tag
value: 22
- name: replicas
value: 1
- chart: ../charts/bar
name: bar
namespace: '{{ .Values.stack }}'
values:
- ../config/templates/bar-values.yaml.gotmpl
set:
- name: image.bar_proxy.tag
value: 46
- name: image.bar.tag
value: 29
- name: replicas
value: 1
Я пытаюсь найти чистый способ обновления определенного тега изображения c. Например, я хотел бы обновить image.bar_proxy.tag
с 46
до 51
.
У меня есть следующее, которое выполняет свою работу, но требует, чтобы вы знали точный индекс элемента массива :
yq -y '.releases[] |= if .name=="bar" then .set[0].value |= 51 else . end' helmfile-example.yaml
Так что, если бы порядок массивов в какой-то момент изменился, это бы сломалось.
Предпочтительным решением было бы: "обновить значение image.bar_proxy.tag с 46
до 51
где установлено []. Name == image.bar_proxy.tag ". Есть идеи о том, как добиться более точного c условного выбора вроде этого?
К вашему сведению, наша версия yq:
$ yq --version
yq 2.10.0