ArgoCD

App of Apps

28 question(s)

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 example dev/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-cluster GitOps Principles App 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 example The 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 Principles Applications App 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 example The 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?

Applications Multi-cluster App 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 example Removing 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?

Applications Sync & Health App 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 example Team 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?

RBAC Applications App 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 example Each 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-cluster GitOps Principles App 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 example The 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 & Health Applications App 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 example A 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?

GitOps Principles Applications App of Apps