I'm currently using an ApplicationSet to generate Application definitions through a Git generator based on a certain directory structure, where each environment (dev, test, prod) has its applications organized logically in subdirectories. The ApplicationSet is set up to automatically create App configurations from this structure, but now I'm facing a challenge. I need to customize certain settings for individual applications within the same ApplicationSet, particularly regarding sync policies. For example, some applications might need to have 'prune' enabled, while others must not. Additionally, there are preferences for using ServerSideApply for some apps and ClientSideApply for others. I considered having a `.app-config.yaml` file in each application's directory for these custom settings, but I'm unsure how to parameterize the Application using this approach, especially in combination with the merge generator. Any insights or suggestions on how to effectively manage these differing settings within an ApplicationSet, or is there a better way to handle this?
2 Answers
I’ve used ApplicationSet similarly, and what works for me is utilizing an umbrella Helm chart. By including override settings directly in the values file, I can customize deployments without the need to modify the ApplicationSet itself. ArgoCD detects the Helm chart changes automatically. You might want to check out how I structured my configs in this repo: https://github.com/myspotontheweb/argocd-workloads-demo?tab=readme-ov-file#application-configuration.
We handle it by setting up one AppSet that looks for 'appconfig.yaml' files within each app's directory. These files contain customizable parameters specific to each application. While I'm not using the merge generator, I don’t see any issue with approach. If you want, I can share more details about how I implemented this.
Related Questions
How To Get Your Domain Unblocked From Facebook
How To Find A String In a Directory of Files Using Linux