How argoproj-labs/argocd-image-updater works
Argo CD Image Updater watches ImageUpdater custom resources, discovers configured application images, checks registry tags against update policies, and writes image parameter overrides through Argo CD or Git. Registry webhooks provide an event-triggered update path alongside reconciliation. The tree and README establish these capabilities; sampled controller and webhook code confirms reconciliation and webhook wiring, but unsampled implementation details limit finer-grained call edges.
Main entry points: reconcile.go Update run · imageupdater_controller.go Reconciler · image.go Image discovery · update.go Override writing
Components 20
Control plane
- ImageUpdater CR
api/v1alpha1/imageupdater_types.go - Reconciler
internal/controller/imageupdater_controller.go - Update run
internal/controller/reconcile.go - Status tracking
internal/controller/status.go - Metrics
pkg/metrics/metrics.go
Image discovery
- Image discovery
registry-scanner/pkg/image/image.go - Tag selection
registry-scanner/pkg/image/version.go - Registry client
registry-scanner/pkg/registry/client.go
Update delivery
- Argo CD integration
pkg/argocd/argocd.go - Override writing
pkg/argocd/update.go - Git access
ext/git/client.go - Pull requests
pkg/argocd/pr_service.go
Registry events
- Webhook server
pkg/webhook/server.go - Event handlers
pkg/webhook/webhook.go
Other components
- Operator
- Kubernetes API
- Container registry
- Git repository
- SCM provider
- Registry webhook
Connections 21
- Operator → ImageUpdater CR: configures
- Reconciler → Kubernetes API: reads and updates
- Kubernetes API → Reconciler: sends changes
- Reconciler → Update run: runs updates
- Update run → Image discovery: discovers images
- Image discovery → Tag selection: selects tags
- Image discovery → Registry client: queries
- Registry client → Container registry: reads manifests and tags
- Update run → Argo CD integration: loads applications
- Update run → Override writing: writes overrides
- Override writing → Argo CD integration: updates parameters
- Override writing → Git access: commits changes
- Git access → Git repository: pushes overrides
- Update run → Pull requests: requests PR
- Pull requests → SCM provider: opens PR or MR
- Update run → Status tracking: records result
- Status tracking → Kubernetes API: updates status
- Update run → Metrics: records metrics
- Registry webhook → Webhook server: sends event
- Webhook server → Event handlers: dispatches event
- Event handlers → Update run: triggers check