How do you handle per-environment differences in an App of Apps model?
Advanced
Use separate roots per environment, each pointing at environment-specific child configs (overlays/values pinned to that env's revisions). Shared bases keep consistency while overlays capture differences, so promotion is a PR updating the next environment's config.
Real-world exampledev/staging/prod each have a root pointing at their overlay directory, differing only in tags and sizes.
Common follow-ups: How is promotion done here? | Why a root per environment?
Multi-clusterGitOps PrinciplesApp of Apps
Can the parent app itself be managed by GitOps?
Intermediate
Yes—commit the root Application manifest to Git and either apply it once to bootstrap or have another ArgoCD/root manage it. Keeping the root in Git means even the bootstrap definition is versioned and reviewable, closing the GitOps loop.
Real-world exampleThe root manifest lives in Git so changes to which children exist go through pull requests too.
Common follow-ups: Is the root versioned? | How is the root itself changed safely?
GitOps PrinciplesApplicationsApp of Apps
What are alternatives to App of Apps for managing many apps?
Advanced
ApplicationSets (generator-driven), Flux Kustomizations, or Helm umbrella charts can manage many apps. ApplicationSets are the native ArgoCD evolution for dynamic fleets; umbrella charts bundle subcharts but couple them tightly. Choice depends on how dynamic and independent the apps need to be.
Real-world exampleThe team compares an ApplicationSet against a Helm umbrella chart before choosing generators for flexibility.
Common follow-ups: How does an umbrella chart differ from App of Apps? | Why prefer ApplicationSets for dynamic fleets?
ApplicationsMulti-clusterApp of Apps
Does deleting a child app manifest from Git remove the child?
Beginner
With prune enabled on the root, removing a child Application manifest from the watched directory prunes that child app (and, if its own finalizer is set, its resources). Without prune, the child remains. So directory contents plus prune settings control the app set.
Real-world exampleRemoving service-a.yaml from the apps directory prunes the service-a Application on the next root sync.
Common follow-ups: What controls whether the child is removed? | What about the child's workloads?
ApplicationsSync & HealthApp of Apps
How do you give teams ownership of their own child apps safely?
Intermediate
Combine App of Apps (or ApplicationSets) with AppProjects and RBAC: each team's child apps belong to their project, which restricts destinations and sources, and RBAC scopes their permissions to that project. Teams manage their apps via PRs without affecting others.
Real-world exampleTeam B owns its child apps within the team-b project, unable to deploy outside its namespaces or touch team A's apps.
Common follow-ups: How do Projects constrain teams? | How does RBAC scope ownership?
RBACApplicationsApp of Apps
How does App of Apps support multi-cluster bootstrapping?
Advanced
A root app per cluster (or an ApplicationSet cluster generator producing roots) can bootstrap each cluster's platform and workloads. Applying the appropriate root to ArgoCD provisions that cluster's full app set, enabling consistent, reproducible multi-cluster setup.
Real-world exampleEach new cluster gets its platform by applying that cluster's root app, which pulls in the standard component set.
Common follow-ups: How do you bootstrap many clusters consistently? | Root per cluster vs ApplicationSet?
Multi-clusterGitOps PrinciplesApp of Apps
How do you observe the health of all child apps at once?
Intermediate
The ArgoCD UI shows the root app with its child Applications as resources, so you see aggregated status. Because children are Applications, their individual sync/health roll up, letting you spot which environment component is failing from the root view.
Real-world exampleThe root app's tree view flags that only the monitoring child is Degraded, pinpointing the issue fast.
Common follow-ups: How does the root aggregate child status? | Where do you see all children?
Sync & HealthApplicationsApp of Apps
How do you version and roll back the whole app set?
Advanced
Since the root and children are in Git, roll back the set by reverting the relevant commits (e.g., the parent config or child revisions) and letting ArgoCD reconcile. This versions the entire environment composition, enabling coordinated rollback of the app set, not just one app.
Real-world exampleA problematic platform change is undone by reverting the parent repo commit, restoring the previous child set.
Common follow-ups: How do you roll back the whole set? | What is versioned besides individual apps?