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).