Frequently Asked Questions (FAQ)๐
Does the tool work with ApplicationSets?๐
Short answer: Yes.
Longer Answer: Yes, but how well it works depends on the complexity of your generators.
-
List generator: Yes, no issues reported
-
Cluster generator: Yes, but you have to add the ClusterSecrets to the
secretsfolder. Read more here -
Git generator: Yes, no issues reported
-
Matrix generator: Yes, no issues reported
-
Merge generator: Yes, no issues reported
-
Plugin generator: Should work, but not tested. Read more on how to install a plugin here. Related Issue: #40
-
Pull Request generator: Should work, but not tested.
-
SCM Provider generator: Not tested
-
Cluster Decision Resource generator: Not tested
Does it work with Config Management Plugins (CMP)๐
Yes. More info here
Does it work with Git providers other than GitHub and GitLab?๐
Short answer: Yes.
Longer answer: In theory, yes, but not all providers have been tested. If you are using a different Git provider and encounter issues, please open an issue in the repository. Additionally, if you have successfully used the tool with a different provider, consider contributing to the documentation so others can benefit from a working example โค๏ธ
Relevant issue: #94
Why not compare the PR branch to the live cluster state?๐
Comparing to live cluster state introduces non-determinism and ambiguity. The cluster state can change between runs, making the output unreliable and hard to trust during code review. Read more about this in the Design Philosophy.
Does it work with the App of Apps Pattern?๐
Short answer: Yes.
Longer answer: The tool scans your repository for all resources with kind: Application or kind: ApplicationSet and renders them. If your child Applications exist as plain YAML manifests in the repository, the tool works out of the box - no extra flags needed.
If your child Applications are generated dynamically at render time (e.g. a root Application that deploys a Helm chart which templates child Application manifests), the tool cannot see them by default. In that case you can either:
- Pre-render the Application manifests in your CI pipeline before running
argocd-diff-preview. See Helm/Kustomize generated Argo CD applications. - Use
--traverse-app-of-apps(๐งช experimental) to let the tool discover and render child Applications automatically at runtime.
More info: App of Apps docs
Relevant issues: #41, #75, #200, #381
Why can't the tool automatically render my Helm Charts or Kustomize templates?๐
The tool intentionally avoids guessing how to render Helm charts and Kustomize templates - the configurations are ambiguous by nature, and incorrect assumptions would lead to misleading diffs. See the generated applications docs for details.
Does it work with a distributed Argo CD repository setup? (Multi-repo)๐
Short answer: Yes
Longer answer: Yes, but it depends on how complicated your setup is. Check out the multi-repo documentation to learn how to use the tool with a distributed Argo CD repository setup.
How do I speed up the tool?๐
Short answer: Connect to a pre-installed Argo CD instance and limit the number of applications rendered.
Longer answer: There are two main ways to speed up the tool:
-
Connect to a pre-installed Argo CD instance: Instead of creating an ephemeral cluster for each run, connect to a pre-installed Argo CD instance. This saves ~60-90 seconds per run. See Connecting to a cluster with Argo CD pre-installed.
-
Limit applications rendered: Rendering the manifests for all applications in the repository on each pull request can be time-consuming. Limiting the number of applications rendered can significantly speed up the process. By default,
argocd-diff-previewrenders all applications in the repository. Check out Application Selection to learn how to limit the number of applications rendered.