argocd-image-updater
argocd-image-updater copied to clipboard
Argo CD Image Updater causes an infinite loop of syncs with ApplicationSets
Describe the bug I am using ApplicationSets to deploy multiple applications, the template for this ApplicationSet is creating applications with the required annotations for the image updater. This leads to the applications syncing constantly.
I cannot use git writeback as I want to ensure the image tagged main
is always deployed.
To Reproduce Steps to reproduce the behaviour:
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
name: name
namespace: argocd
spec:
generators:
- git:
directories:
- path: manifests/*/overlays/dev
repoURL: [email protected]:org/repo.git
revision: HEAD
template:
metadata:
annotations:
argocd-image-updater.argoproj.io/image-list: app=foo:main
argocd-image-updater.argoproj.io/app.update-strategy: digest
name: '{{path[1]}}'
spec:
destination:
namespace: name
server: https://kubernetes.default.svc/
project: project
source:
path: '{{path}}'
repoURL: [email protected]:org/repo.git
targetRevision: HEAD
Expected behaviour When the image digest changes there should be a sync, but this should not be an infinite loop.
Version Argo CD: v2.3.1 Argo CD Image Updater: v 0.11.3
I'm afraid that the only way to use Image Updater in combination with ApplicationSet is to use Git write-back. If you use the argocd
write-back method, the Image Updater will modify .spec.source
of the Application in the cluster, which in turn gets overwritten by ApplicationSet controller again, leading to the situation you are observing.
This behavior most likely needs to change in ApplicationSet controller.
what about if you add write-back-method. From the doc:
As a rule of thumb, if you are managing Application in Git (i.e. in an app-of-apps setup), you most likely want to chose the Git write-back method.
It'd be really great if you'd mention this in the documentation (in the "Limitations" section maybe?). It would have saved me a lot of time.