Skip to main content
The ApplicationSet controller automates the generation of Argo CD Applications, improving multi-cluster and multi-tenant support. It enables templating Applications from various sources and allows developers to independently create Applications without cluster-administrator intervention.

Overview

ApplicationSet is a Kubernetes Custom Resource that automatically generates Argo CD Applications based on defined generators and templates.
Be aware of the security implications before allowing developers to create Applications via ApplicationSets.

Basic ApplicationSet

This ApplicationSet generates multiple Applications (one per cluster) from a single resource definition.

Generators

Generators provide parameters that are rendered into the Application template. ApplicationSet supports multiple generator types:

List Generator

Provides a fixed list of parameters:

Cluster Generator

Automatically discovers clusters registered in Argo CD:

Git Generator

Generates Applications based on Git repository contents:

SCM Provider Generator

Automatically discovers repositories from SCM providers (GitHub, GitLab, Bitbucket, etc.):

Pull Request Generator

Creates temporary preview environments for pull requests:

Matrix Generator

Generates the cartesian product of two generators:

Merge Generator

Merges parameters from multiple generators:

Template Configuration

The template defines the Application structure:

Go Template Support

Enable Go templating for advanced use cases:

Sync Policy

Control how ApplicationSet manages generated Applications:

Progressive Sync (Rollout Strategy)

Deploy Applications in a controlled sequence:

Ignore Application Differences

Prevent ApplicationSet from overwriting certain Application fields:

Preserved Fields

Preserve annotations and labels on generated Applications:

Template Patch

Apply patches to the base template:

Selectors

Filter generator output using label selectors:

Multi-Tenancy with ApplicationSets

ApplicationSets enable self-service application creation:

Status and Conditions

ApplicationSet maintains status information:

Example Use Cases

Use the Cluster generator to deploy the same application to all clusters matching a label selector.
Use the Git directory generator to automatically create Applications for each directory in a repository.
Use the Pull Request generator to automatically create preview environments for each pull request.
Combine Git file generator with team configurations to allow teams to self-manage their applications.

Best Practices

Use specific generators

Choose the most appropriate generator for your use case to simplify configuration

Enable Go templates

Use goTemplate: true for advanced templating capabilities

Implement progressive sync

Use rollout strategies for production deployments

Set sync policies

Configure appropriate sync policies to control Application lifecycle

Next Steps

Learn about AppProjects for multi-tenancy and access control