Estoy buscando una mejor manera de actualizar las imágenes de la ventana acoplable definidas en HelmRelease usando GitOps, ya que mi método actual genera ruido.
Después de presentar Helm a un clúster que administro con GitOps, encuentro algunas dificultades sobre cómo declarar correctamente nuevas compilaciones de imágenes de Docker para usar en el clúster.
En una implementación, puedo usar un recurso de personalización simple para reemplazar elementos de imagen, por ejemplo:
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
y con cada nueva compilación simplemente modifico el archivo con
kustomize edit set image my/image=my/image:updated-tag
Ahora con Helm no puedo usar el mismo truco, ya que necesito actualizar la etiqueta spec.values.image
en HelmRelease, y Kustomize no parece tener una abreviatura para eso. Entonces la opción es crear un parche:
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
usando un comando similar:
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\"}]"
(no te preocupes mucho por las citas citadas, ten paciencia)
El problema surge al ejecutar varias veces este comando. Si bien kustomize edit set image
sobrescribe el valor anterior, en este caso posterior patch
se agrega un nuevo a la lista con el archivo 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
¿Cómo puedo evitar esta repetición y agregar cada vez más ruido a mis archivos?
¡Gracias!
Respuesta1
Encontré una manera más limpia de hacerlo cony q.
yq -ei '.spec.values.image.tag = "YOURTAG"' yourfile.yaml