Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Argo CD Image Updater causes an infinite loop of syncs with ApplicationSets #400

Open
RiverPhillips opened this issue Mar 14, 2022 · 5 comments
Labels
bug Something isn't working

Comments

@RiverPhillips
Copy link

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

@RiverPhillips RiverPhillips added the bug Something isn't working label Mar 14, 2022
@jannfis
Copy link
Contributor

jannfis commented Mar 14, 2022

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.

@sali2801
Copy link

sali2801 commented May 9, 2023

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.

@tback
Copy link

tback commented Jun 21, 2023

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.

@h3rmanj
Copy link

h3rmanj commented Nov 7, 2024

For anyone hitting this, it seems to work without git write-back by using ignoreApplicationDifferences in the ApplicationSet. With kustomize this worked for me:

kind: ApplicationSet
spec:
  ignoreApplicationDifferences:
    - jsonPointers:
        - /spec/source/kustomize/images

I'm using the pull request generator, and ending up with a bunch of .argocd-source-<app+branchname>.yaml files wasn't really something I wanted.

@chengfang
Copy link
Collaborator

Another solution is to modify Argo CD applicationset controller policy. See #186 (comment)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

6 participants