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

Sync Waves (aka ordering) Application Sets and Apps #70

Open
csantanapr opened this issue Jun 20, 2024 · 1 comment
Open

Sync Waves (aka ordering) Application Sets and Apps #70

csantanapr opened this issue Jun 20, 2024 · 1 comment

Comments

@csantanapr
Copy link
Member

csantanapr commented Jun 20, 2024

This is an issue to capture the different solutions to have order of installation for application sets and apps.

Background:

  • ArgoCD sync waves applied to all resources (that a health status/condition can be deduce) under a single App except for two type of resources:
    • ArgoCD App: for this you need special config in lua script to add the health condition to ArgoCD App
    • ArgoCD ApplicationSet: the application sets are installed in order, but the delay between them is 2 seconds, the controller can't wait until the appset is healthy to move to the next appset. For this there is no workaround today to get the status with lua script, this needs to be added to ArgoCD as PR

There are 2 ways today you can do ordering when workign with Application Sets

  1. You can set a sync wave number on an Application Set and increase the delay between syncs from 2 seconds higher like 30 seconds. This only is applicable if you are installing application sets for single cluster, meaning each cluster in your fleet of clusters has an instances of argocd and the group of application sets for addons is deployed to each independently of each other (ie. Not doing hub-spoke) here is an example https://github.com/csantanapr/argocd-experiments-syncwaves
  2. You can implement a presync in the App generated by the application set. This presync will run a kube job that has kubectl CLI and a script that will check for the dependency before exit with 0, the check can be on another deployment (cert manager deployment) or check that CRDs exist.
@csantanapr
Copy link
Member Author

I want to experiment with an annotation "dependsOn: otherargocdapp" and a validation webhook that would check the status of another argocd app and delay the response up to 30 seconds so it can work on first attemps, and have the Apps have retry, by the next try it should work.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant