Как редактировать элементы патчей в файле настройки для выполнения гитопов с помощью Helm (и избежать накопления патчей)

Я ищу лучший способ обновления изображений докеров, определенных в HelmRelease, с помощью GitOps, поскольку мой текущий метод генерирует шум.

После внедрения Helm в кластер, которым я управляю с помощью GitOps, я обнаружил некоторые трудности с тем, как правильно объявить новые сборки образа Docker для использования в кластере.

В развертывании я могу использовать простой ресурс настройки для замены элементов изображения, например:

      apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: my-namespace

resources:
- namespace.yaml
- my-deployment.yaml

images:
- name: my/image
  newName: my/image
  newTag: updated-tag

и с каждой новой сборкой я просто изменяю файл с помощью

      kustomize edit set image my/image=my/image:updated-tag

Теперь с Helm я не могу использовать тот же трюк, так как мне нужно обновить тегspec.values.imageв HelmRelease, и у Kustomize, похоже, нет сокращения для этого. Итак, вариант — создать патч:

      apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: my-namespace

resources:
- namespace.yaml
- my-helm-release.yaml

patches:
- patch: '[{"op": "replace", "path": "/spec/values/image", "value": "my/image:updated-tag"}]'
  target:
    kind: HelmRelease
    name: my-helm-release
    namespace: my-namespace

используя аналогичную команду:

      kustomize edit add patch \
    --kind HelmRelease \
    --name my-helm-release \
    --namespace my-namespace --patch "[{\"op\": \"replace\", \"path\": \"/spec/values/image\", \"value\": \"my/image:updated-tag\"}]"

(не обращайте внимания на цитируемые цитаты, потерпите меня)

Проблема возникает при многократном запуске этой команды. В то времяkustomize edit set imageперезаписывает предыдущее значение, в этом более позднем случае новоеpatchдобавляется к списку с помощьюmore-updated-tag.

      patches:
- patch: '[{"op": "replace", "path": "/spec/values/image", "value": "my/image:updated-tag"}]'
  target:
    kind: HelmRelease
    name: my-helm-release
    namespace: my-namespace
- patch: '[{"op": "replace", "path": "/spec/values/image", "value": "my/image:more-updated-tag"}]'
  target:
    kind: HelmRelease
    name: my-helm-release
    namespace: my-namespace

Как мне избежать этого повторения и добавления в мои файлы все большего и большего шума?

Спасибо!

0 ответов

Другие вопросы по тегам