argoproj/argo-cd
ApplicationSet
ApplicationSet is a CRD that templates Applications out of a set of generators. It is the canonical way to fan a single template out across clusters, environments, repos, or pull requests.
Schema (selected fields)
The Go types live in pkg/apis/application/v1alpha1/applicationset_types.go (~59 KB). Major fields:
| Field | Purpose |
|---|---|
spec.generators[] |
One or more generators producing parameter sets. |
spec.template |
Partial Application spec with {{...}} placeholders that get substituted from each parameter set. |
spec.strategy.rollingSync.steps |
Progressive rollout cohorts. |
spec.syncPolicy |
What the controller is allowed to do to its children (create/update/delete). |
spec.preservedFields |
Fields on child Applications that should not be overwritten. |
spec.applyNestedSelectors |
Apply per-generator selectors to nested generators (Matrix/Merge). |
spec.goTemplate / spec.goTemplateOptions |
Use Go templating instead of fasttemplate. |
spec.ignoreApplicationDifferences[] |
Diff-suppress rules between desired template and live child Application. |
status.conditions[], status.applicationStatus[] |
Reconciliation diagnostics and per-app rollout state. |
Generator types
See features/applicationsets for the full catalog. The generator interface is in applicationset/generators/interface.go; each implementation is one Go file in that directory.
Templating
By default ApplicationSet uses fasttemplate-style {{ .key }} substitution. Setting spec.goTemplate: true switches to Go's text/template with sprig functions, enabling conditionals, ranges, and helper functions. spec.goTemplateOptions controls strictness (missingkey=error).
Progressive rollouts
spec:
strategy:
type: RollingSync
rollingSync:
steps:
- matchExpressions:
- { key: env, operator: In, values: [dev] }
- matchExpressions:
- { key: env, operator: In, values: [staging] }
maxUpdate: 25%
- matchExpressions:
- { key: env, operator: In, values: [prod] }The controller waits for each cohort to become healthy before continuing. Logic: applicationset/controllers/applicationset_controller.go and applicationset/status/. Requires ARGOCD_APPLICATIONSET_CONTROLLER_ENABLE_PROGRESSIVE_SYNCS=true.
See also
- ApplicationSet controller — the runtime.
- features/applicationsets — patterns and use cases.
Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.