github.com/argoproj/argo-cd/v3@v3.2.1/docs/user-guide/application-set.md (about) 1 ### Automating the generation of Argo CD Applications with the ApplicationSet Controller 2 3 The [ApplicationSet controller](../operator-manual/applicationset/index.md) adds Application automation and seeks to improve multi-cluster support and cluster multitenant support within Argo CD. Argo CD Applications may be templated from multiple different sources, including from Git or Argo CD's own defined cluster list. 4 5 The set of tools provided by the ApplicationSet controller may also be used to allow developers (without access to the Argo CD namespace) to independently create Applications without cluster-administrator intervention. 6 7 !!! warning 8 Be aware of the [security implications](../operator-manual/applicationset/Security.md) before allowing developers to 9 create Applications via ApplicationSets. 10 11 The ApplicationSet controller automatically generates Argo CD Applications based on the contents of an `ApplicationSet` Custom Resource (CR). 12 13 Here is an example of an `ApplicationSet` resource that can be used to target an Argo CD Application to multiple clusters: 14 ```yaml 15 apiVersion: argoproj.io/v1alpha1 16 kind: ApplicationSet 17 metadata: 18 name: guestbook 19 spec: 20 goTemplate: true 21 goTemplateOptions: ["missingkey=error"] 22 generators: 23 - list: 24 elements: 25 - cluster: engineering-dev 26 url: https://1.2.3.4 27 - cluster: engineering-prod 28 url: https://2.4.6.8 29 - cluster: finance-preprod 30 url: https://9.8.7.6 31 template: 32 metadata: 33 name: '{{.cluster}}-guestbook' 34 spec: 35 project: my-project 36 source: 37 repoURL: https://github.com/infra-team/cluster-deployments.git 38 targetRevision: HEAD 39 path: guestbook/{{.cluster}} 40 destination: 41 server: '{{.url}}' 42 namespace: guestbook 43 ``` 44 45 The List generator passes the `url` and `cluster` fields into the template as `{{param}}`-style parameters, which are then rendered into three corresponding Argo CD Applications (one for each defined cluster). Targeting new clusters (or removing existing clusters) is simply a matter of altering the `ApplicationSet` resource, and the corresponding Argo CD Applications will be automatically created. 46 47 Likewise, changes made to the ApplicationSet `template` fields will automatically be applied to every generated Application. Managing a set of multiple Argo CD Applications is thus as easy as managing a single `ApplicationSet` resource. 48 49 Within ApplicationSet there exist other more powerful generators in addition to the List generator, including the Cluster generator (which automatically uses Argo CD-defined clusters to template Applications), and the Git generator (which uses the files/directories of a Git repository to template applications). 50 51 To learn more about the ApplicationSet controller, check out the [ApplicationSet documentation](../operator-manual/applicationset/index.md).