Open-Source Wikis

/

Argo CD

/

Primitives

/

ApplicationSet

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

Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.

ApplicationSet – Argo CD wiki | Factory