Answer
ApplicationSet is a controller that templates and generates many Applications from a single spec using generators (list, cluster, Git directory/file, matrix, pull request, SCM). It removes the toil of hand-writing an Application per environment/cluster/team and keeps a fleet of apps consistent and automatically updated as inputs change.
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
spec:
generators:
- clusters: {}
template:
metadata: { name: '{{name}}-guestbook' }
spec:
destination:
server: '{{server}}'
namespace: guestbookReal-world example One ApplicationSet with a cluster generator deploys the same app to all 20 registered clusters automatically.