GitOps made simple: orchestrating multi-cluster app delivery with Argo CD ApplicationSet and Image Updater

GitOps is like a well-curated playlist: you want the source (your Git repo) to define the order, the versions, and the mood — and the player (your cluster) to follow it without someone manually changing the track mid-play. Argo CD already acts as that player. Two relatively recent pieces in the Argo CD ecosystem—ApplicationSet and Argo CD Image Updater—make that playlist scale across many clusters and keep the songs (container images) fresh automatically. This article explains how those two fit together, what they buy you, and where the scratches on the record can happen.

What each piece does, in plain language

Why combine them? A compact use case

A minimal conceptual ApplicationSet snippet

apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
spec:
  generators:
    - cluster:
        selector:
          matchLabels:
            environment: prod
  template:
    metadata:
      name: '-myapp'
    spec:
      source:
        repoURL: https://github.com/myorg/myapp-configs
        path: apps/myapp
      destination:
        server: ''
        namespace: myapp

That one template can expand to one Application per cluster selected by label. The generator does the heavy lifting so you don’t copy-paste 50 manifests. (argo-cd.readthedocs.io)

How Image Updater keeps the playlist current Image Updater can run as a separate controller and decide whether to:

Practical wins and the trade-offs (the good and the honest) Wins

Trade-offs and gotchas

A few realistic patterns (non-prescriptive descriptions)

Closing note — the orchestra conductor, not the soloist ApplicationSet and Image Updater together turn Argo CD from a great single-cluster player into a conductor for a multi-cluster orchestra, with Git as the score and registries as the instrument tuners. They’re practical, increasingly mature tools—and like any music setup, the improvements come with tuning: access control, timing, and testing matter. Official docs and operator integrations continue to evolve, and operator-enabled Image Updater options and write-back modes are now first-class considerations in a production GitOps setup. (argocd-operator.readthedocs.io)