Replies: 1 comment 3 replies
-
It's kinda unfortunate that the ApplicationSet controller directly deploys the generated Application manifests to the cluster, isn't it? If there was a way to push the generated Application manifests to Git instead, we could just use an app-of-apps to solve pretty much every issue you mentioned. I wonder if the upcoming "hydrator" feature could be used as a starting point to achieve something like that (because this will be the first time ArgoCD would natively be able to push stuff to Git). |
Beta Was this translation helpful? Give feedback.
3 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
ApplicationSet is a really useful tool when it comes to deployments to multiple clusters but I find its sync configuration strangely limited.
If for one reason or another (testing, debugging, Kubernetes cluster burning down, whatever) I need to manually modify one of the managed applications I have those options:
create-only
orcreate-delete
,ignoreApplicationDifferences
,preservedFields
(only for annotations and labels if I understand correctly),All those options (except the last one) can be set on per-applicationset basis (assuming policy override is enabled). So far so good. I can configure what's needed then modify the underlying Application object.
So what's missing? Three things really.
Last point is especially interesting because... it's technically doable. With sync policy set to
create-only
orcreate-delete
you can delete the underlying Application object and controller will recreate it with clean state for you. That's not really a clean solution though.I know, you might just re-enable automatic updates or remove ignores. Unfortunately that means you need to manually edit the ApplicationSet each time some kind of emergency change to the underlying Application happens. Is this situation rare? Probably, it definitely should be rare. It doesn't make it any less inconvenient, especially when you consider that UI doesn't show you why the field you've just modified has been automatically reverted (there is no automatic link in UI that would show which set manages the app, it only goes the other way around, from set's view to app's).
Yes, you can achieve that using App of Apps instead of ApplicationSet. But that means you lose access to a powerful templating machinery when it comes to cluster selection.
So, what do you think, is it feasible to extend ApplicationSet -> Application view in such way? Or maybe I'm missing some existing solutions after all?
Beta Was this translation helpful? Give feedback.
All reactions