ArgoCD ApplicationSet Multi-Cluster Deployments Explained
Country Manager, Sweden
AI, DevOps, Security, and Cloud Solutioning. 12+ years leading enterprise cloud transformation across Scandinavia
Why Multi-Cluster Deployments Break Traditional GitOps
Most teams start their GitOps journey with a single ArgoCD Application resource pointing at one cluster. That model scales comfortably to a handful of services. It does not scale to a Nordic enterprise running separate Kubernetes clusters per environment (dev, staging, production), per region (EU-West, US-East), or per business unit. The naive solution — duplicating Application manifests manually — produces hundreds of near-identical YAML files that diverge silently over time.
ArgoCD's ApplicationSet controller was introduced precisely to eliminate this pattern. Instead of maintaining one Application per cluster, you maintain one ApplicationSet that generates Application resources dynamically, driven by generators that enumerate your cluster inventory. The result is a single source of truth that is genuinely declarative at fleet scale.
This article provides a technical walkthrough of ApplicationSet's multi-cluster capabilities, the generators available, common architectural pitfalls, and the evaluation criteria that mid-market and enterprise teams should apply when adopting the pattern in production.
What Is ArgoCD ApplicationSet?
The ApplicationSet is a Kubernetes custom resource managed by the ApplicationSet controller, which ships as part of ArgoCD from version 2.3 onward. Its core job is templated Application generation: you define a template block that looks like an ArgoCD Application, and you attach one or more generators that supply parameter values to fill that template.
The distinction from a plain Application is significant:
- Application — a static, one-to-one mapping between a Git source and a destination cluster/namespace.
- ApplicationSet — a dynamic, one-to-many mapping. One manifest can produce dozens of Application resources automatically as your cluster inventory changes.
The ApplicationSet controller watches its CRD and reconciles the generated Application objects continuously. When a new cluster is registered with ArgoCD, relevant ApplicationSets can pick it up on the next reconciliation cycle without any manual intervention — provided the cluster matches the generator's selection criteria.
Need expert help with argocd applicationset multi-cluster deployments explained?
Our cloud architects can help you with argocd applicationset multi-cluster deployments explained — from strategy to implementation. Book a free 30-minute advisory call with no obligation.
Generators: The Engine of Multi-Cluster Targeting
Generators are what make ApplicationSet genuinely powerful for multi-cluster use. Each generator type queries a different source of truth to produce a list of parameter sets, each of which results in one rendered Application.
Cluster Generator
The most directly relevant generator for multi-cluster work. It queries ArgoCD's internal cluster store — the same store populated when you run argocd cluster add or provision clusters via Terraform — and returns one parameter set per registered cluster. You can filter clusters by label, which means you can tag clusters with metadata such as env=production or region=eu-west and scope an ApplicationSet to only that subset.
Git Generator
Reads directory names or JSON/YAML files from a Git repository and uses each entry as a parameter source. A common pattern is to maintain a clusters/ directory where each subdirectory represents a cluster; the Git generator enumerates those directories and feeds them to the template. This approach keeps cluster configuration entirely in Git, which satisfies ISO 27001 change-management requirements around auditability.
List Generator
Accepts a static inline list of key-value pairs. Useful for small, stable inventories where dynamic discovery is unnecessary overhead. Not recommended for fleets larger than ten clusters because the list must be maintained manually.
Matrix and Merge Generators
Composite generators that combine two or more generators. The Matrix generator produces the Cartesian product of two generator outputs — for example, all combinations of clusters × applications. The Merge generator applies patches from a secondary generator on top of a primary generator's output, enabling per-cluster overrides without duplicating the base template.
Pull Request Generator
Generates an Application per open pull request in a Git provider such as GitHub or GitLab. Widely used for ephemeral preview environments. Less relevant for steady-state multi-cluster production deployments but valuable in CI pipelines.
Architectural Patterns and Use Cases
Understanding the generators in isolation is not enough. The real value emerges from composing them into coherent architectural patterns aligned with your cluster topology.
Hub-and-Spoke with Cluster Generator
The most common enterprise pattern. A single ArgoCD instance (the hub) manages application delivery to N spoke clusters. The Cluster generator enumerates all spoke clusters. Label-based filtering separates production from non-production workloads. This pattern is well-suited to organisations running managed Kubernetes services such as Amazon EKS, Azure AKS, or Google GKE, where cluster registration is straightforward and cluster metadata (labels, annotations) can be injected at provisioning time via Terraform or Helm charts.
Mono-Repo Helm Chart Management
Teams managing shared Helm charts in a monorepo can use the Matrix generator to deploy each chart to every target cluster in one ApplicationSet. The Matrix generator pairs the Git generator (enumerating charts) with the Cluster generator (enumerating clusters). Values overrides per cluster are handled through per-cluster values files committed alongside the chart, keeping the Helm workflow familiar while eliminating manual Application duplication.
Progressive Delivery Across Clusters
ApplicationSet integrates with ArgoCD's sync waves and sync phases to implement canary-style rollouts at the cluster level. By assigning wave annotations to generated Application resources via template metadata, you can promote a release to a dev cluster first, wait for health checks, then proceed to staging and production clusters in sequence. This is particularly relevant for regulated Nordic enterprises where change-management processes require a documented, auditable promotion trail.
App of Apps vs. ApplicationSet
A common question is when to use the App of Apps pattern versus ApplicationSet. App of Apps uses a parent Application that syncs a directory of child Application manifests. It is simpler but static — adding a cluster means committing new manifests. ApplicationSet is dynamic and should be preferred whenever the cluster inventory changes frequently or is managed programmatically. The two patterns are not mutually exclusive; ApplicationSet can generate Applications that themselves use App of Apps for namespace-level composition.
Evaluation Criteria for Enterprise Adoption
Before committing to ApplicationSet as the fleet-management layer, engineering teams should evaluate the following dimensions:
| Criterion | What to Assess | Notes |
|---|---|---|
| RBAC model | Can ApplicationSet creation be restricted by namespace or project? | ArgoCD Projects enforce cluster/namespace boundaries; ApplicationSet must respect them. |
| Drift detection | Does your sync policy (auto vs. manual) match your change-management policy? | ISO 27001 environments typically require manual sync approval for production. |
| Secrets management | How are cluster credentials and Helm values secrets injected? | Integrate with AWS Secrets Manager, HashiCorp Vault, or Sealed Secrets; never store credentials in Git. |
| Cluster registration automation | Is cluster registration triggered automatically on infrastructure provisioning? | Terraform's ArgoCD provider or Crossplane can register clusters at create-time. |
| Observability | Are sync status, health status, and reconciliation errors surfaced to your NOC? | Export ArgoCD metrics to Prometheus; alert on OutOfSync and Degraded states. |
| Disaster recovery | Can the ArgoCD control plane itself be restored quickly? | Back up ArgoCD CRDs and secrets with Velero; test restoration regularly. |
Common Pitfalls and How to Avoid Them
Teams adopting ApplicationSet at scale consistently encounter a predictable set of problems. Awareness of these pitfalls before go-live significantly reduces incident frequency.
- Unintended Application deletion. By default, deleting an ApplicationSet cascades to delete all generated Application objects and, depending on sync policy, the live Kubernetes resources. Always set preserveResourcesOnDeletion: true in the ApplicationSet's syncPolicy until you have validated deletion behaviour in a non-production environment.
- Generator label drift. The Cluster generator filters by cluster labels. If cluster labels are managed outside ArgoCD — for example, in Terraform — label changes applied without a corresponding ApplicationSet update will cause clusters to appear or disappear from a deployment scope silently. Enforce label governance through your infrastructure-as-code pipeline.
- Template variable injection attacks. ApplicationSet templates interpolate generator parameters using Go template syntax. If generator parameters are sourced from untrusted inputs (for example, a Pull Request generator reading branch names), an attacker could inject malicious values. Enable ApplicationSet's parameter validation and restrict which fields are templatable in multi-tenant environments.
- Sync wave misconfiguration. When using Matrix generators to deploy to many clusters simultaneously, omitting sync waves causes all clusters to receive the release at once. This eliminates the safety of staged rollouts. Define explicit wave annotations from day one.
- ArgoCD API server overload. A large ApplicationSet generating hundreds of Application objects increases load on the ArgoCD API server and repo server. Size your ArgoCD control-plane pods accordingly and consider sharding via multiple ArgoCD instances for fleets exceeding 100 clusters.
- Missing Velero backups for ArgoCD state. The ArgoCD control plane stores cluster credentials as Kubernetes Secrets and ApplicationSet state as CRDs. Without a reliable Velero backup schedule, a control-plane failure can leave you without the means to re-sync hundreds of clusters quickly.
How Opsio Delivers ArgoCD ApplicationSet at Enterprise Scale
Opsio operates from its Sweden headquarters in Karlstad and its delivery centre in Bangalore, supporting mid-market and enterprise clients across Nordic and global markets. The Bangalore office holds ISO 27001 certification, providing the security management framework that regulated clients require when delegating platform operations.
Opsio's engineers hold CKA and CKAD certifications, and the team of 50+ certified engineers has delivered more than 3,000 projects since 2022. On the cloud partnership side, Opsio holds AWS Advanced Tier Services Partner status with AWS Migration Competency, as well as Microsoft Partner and Google Cloud Partner credentials — covering the full range of managed Kubernetes platforms (EKS, AKS, GKE) that ApplicationSet deployments typically span.
For clients adopting ArgoCD ApplicationSet in multi-cluster environments, Opsio's engagement typically covers the following:
- Infrastructure automation: Terraform modules for EKS, AKS, or GKE cluster provisioning wired directly to ArgoCD cluster registration, so new clusters are GitOps-ready from first boot.
- ApplicationSet design: Generator selection, label taxonomy, and template structure aligned to the client's environment topology and change-management requirements.
- Secrets integration: Connecting ArgoCD to AWS Secrets Manager or HashiCorp Vault so cluster credentials and Helm values secrets never reside in plaintext in Git.
- Observability pipeline: ArgoCD metrics exported to Prometheus and Grafana dashboards surfaced to Opsio's 24/7 NOC, with alerting on OutOfSync, Degraded, and reconciliation-error conditions against a 99.9% uptime SLA.
- Disaster recovery: Velero backup schedules for ArgoCD CRDs and Secrets, with documented and tested restoration runbooks.
- Security hardening: RBAC configuration within ArgoCD Projects, network policy enforcement on the ArgoCD control plane, and audit logging integrated with AWS GuardDuty or Microsoft Sentinel depending on the client's primary cloud.
The combination of CKA/CKAD-certified engineering depth, AWS Advanced Tier partnership, and a 24/7 NOC operating under ISO 27001 controls makes Opsio a dependable partner for enterprises that need ApplicationSet to work reliably at scale — not just in a proof-of-concept environment, but in production fleets where a misconfigured generator or a missing Velero backup has real business consequences.
If your organisation is evaluating or already running ArgoCD ApplicationSet across multiple clusters and wants a structured assessment of your current configuration, Opsio's platform engineering team is available to conduct an architecture review and produce a prioritised remediation roadmap.
Related Articles
About the Author

Country Manager, Sweden at Opsio
AI, DevOps, Security, and Cloud Solutioning. 12+ years leading enterprise cloud transformation across Scandinavia
Editorial standards: This article was written by a certified practitioner and peer-reviewed by our engineering team. We update content quarterly to ensure technical accuracy. Opsio maintains editorial independence — we recommend solutions based on technical merit, not commercial relationships.