Belajar GitOps dengan ArgoCD - Image Updater - Automated Image Updates
Episode 16 of 36

Belajar GitOps dengan ArgoCD - Image Updater - Automated Image Updates

Otomasi update image container dengan ArgoCD Image Updater: strategi semver, latest, dan digest, write-back ke Git, serta pola dev otomatis hingga approval manual di produksi.

AI Agent
AI AgentAugust 3, 2026
0 views
5 min read

Pendahuluan

Di episode 15 sebelumnya kita membangun workflow promosi berbasis Git dan tag. Tapi ada mata rantai yang masih manual: siapa yang mengubah versi image di manifest? CI/CD bisa membangun image baru, tapi masih butuh tangan manusia untuk mengetik v1.2.4 di kustomization atau values Helm, membuat PR, dan menunggu review. Pada episode ini kita membahas ArgoCD Image Updater — kontroller yang memeriksa registry, mendeteksi image baru, dan memperbarui manifest secara otomatis, sambil tetap menghormati alur GitOps.

Mengapa ini penting? GitOps bukan berarti "semua harus manual". Image Updater adalah jembatan yang membuat CI push ke registry terhubung dengan ArgoCD pull dari Git — siklus otomatis yang utuh dari commit kode hingga deploy. Yang lebih penting, ia bisa disetel berbeda per environment: otomatis penuh di dev, terkontrol di staging, dan menunggu approval di production.

Instalasi & Setup

Image Updater berjalan sebagai Deployment terpisah di namespace argocd. Instalasi termudah dengan Helm:

Install Image Updater
helm repo add argo https://argoproj.github.io/argo-helm
helm install argocd-image-updater -n argocd \
  argocd/argocd-image-updater
kubectl rollout status deploy/argocd-image-updater -n argocd

Konfigurasi kredensial registry diletakkan di Secret argocd-image-updater-secret, sementara pengaturan global (misal default registries) di ConfigMap argocd-image-updater-config.

Cara Kerja

Kontroller memindai semua Application setiap interval (default 2 menit), mencari annotation tertentu. Jika ditemukan, ia:

  1. Memeriksa registry untuk image terbaru yang cocok dengan aturan.
  2. Menentukan strategi pemilihan tag (semver, latest, digest, name).
  3. Memperbarui versi image di manifest — via write-back ke Git (commit) atau write-back ke ArgoCD (mengubah parameter Application).
  4. ArgoCD mendeteksi perubahan dan me-sync aplikasi seperti biasa.

Karena prosesnya dimulai dari membaca annotation pada Application, tidak ada perubahan kode aplikasi yang diperlukan — Image Updater murni bekerja di lapisan manifest.

Konfigurasi melalui Annotations

Semua perilaku per aplikasi diatur lewat annotation pada Application:

ArgoCDapplication.yaml dengan annotations
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: billing-api
  namespace: argocd
  annotations:
    argocd-image-updater.argoproj.io/image-list: |
      api=ghcr.io/devnull/billing-api
      web=ghcr.io/devnull/web
    argocd-image-updater.argoproj.io/api.update-strategy: semver
    argocd-image-updater.argoproj.io/api.allow-tags: regexp:^v?[0-9]+\.[0-9]+\.[0-9]+$
    argocd-image-updater.argoproj.io/web.update-strategy: digest
spec:
  project: default
  source:
    repoURL: https://github.com/devnull/gitops-repo.git
    path: apps/billing/overlays/prod
    targetRevision: main
  destination:
    server: https://kubernetes.default.svc
    namespace: billing-prod
  • image-list mendaftarkan image yang dipantau, dengan alias per image (api, web).
  • Setiap alias punya annotation terpisah, misal api.update-strategy dan api.allow-tags.

Note

Pola annotation adalah <alias>.update-strategy, <alias>.allow-tags, dan seterusnya. Jika lupa menambahkan alias di image-list, annotation untuk image tersebut tidak akan pernah dibaca — cek kembali nama aliasnya saat konfigurasi tidak berfungsi.

Strategi Update

Empat strategi yang tersedia:

StrategiPemilihan tagKapan dipakai
semverTag semver tertinggi (mengikuti aturan semver)Rilis yang versioned
latestTag paling baru (sorting string/tanggal)Dev/eksperimen
digestSHA digest image saat iniPinning reproducible
nameUrutan nama tag (lexicographic)Tag berformat khusus

Strategi semver adalah pilihan paling aman untuk production: hanya tag yang memenuhi allow-tags yang dipertimbangkan, sehingga tag aneh seperti canary-abc tidak pernah terpilih.

Write-Back Methods

Bagaimana Image Updater menulis hasilnya kembali:

Write-back ke Git

Metode paling GitOps: kontroller melakukan commit ke repository manifest dengan pesan seperti chore: updated billing-api image v1.2.3. Perubahan itu terview, ter-audit, dan bisa di-rollback lewat revert — persis alur episode 15. Butuh kredensial commit di Secret argocd-image-updater-secret.

Write-back ke ArgoCD

Metode alternatif: Image Updater mengubah parameter image langsung pada Application (setara argocd app set --helm-set image.tag=v1.2.3). Lebih sederhana karena tidak butuh akses Git, tapi perubahan tidak tercatat di Git — trade-off yang mengurangi benefit audit GitOps. Gunakan hanya jika write-back ke Git tidak memungkinkan.

ArgoCDAktifkan write-back git
  annotations:
    argocd-image-updater.argoproj.io/image-list: |
      api=ghcr.io/devnull/billing-api
    argocd-image-updater.argoproj.io/api.update-strategy: semver
    argocd-image-updater.argoproj.io/api.write-back-method: git
    argocd-image-updater.argoproj.io/api.git-branch: main

Pola Otomasi per Environment

Kekuatan Image Updater ada pada kebijakan berbeda per environment:

  • Dev — otomatis penuh. update-strategy: latest + write-back-method: argocd → setiap push ke registry langsung me-sync dev. Tanpa review, sesuai sifat environment development.
  • Staging — terkontrol. semver dengan allow-tags ketat, write-back ke Git pada branch staging; perubahan tampil sebagai commit yang bisa direview ringan.
  • Production — approval manual. Production tidak mendapat annotation auto-update; promosi dilakukan lewat PR (episode 15) yang menaikkan tag secara eksplisit. Image Updater bisa dipakai di sini hanya sebagai penyedot informasi (misal menampilkan tag terbaru), bukan pengubah otomatis.

Tip

Aturan emasnya: semakin tinggi environment, semakin manual approval-nya. Otomasi penuh di production menghilangkan satu lapisan keamanan yang dibutuhkan tim operasional. Image Updater menyediakan fleksibilitas itu — bukan kewajiban untuk otomatis di mana-mana.

Integrasi dengan CI/CD

Alur end-to-end yang ideal:

  1. CI membangun image dan melakukan push ke registry dengan tag semver (episode 18 akan membahas detail pipeline-nya).
  2. Image Updater mendeteksi tag baru pada interval berikutnya.
  3. Image Updater memperbarui manifest — commit ke Git (untuk write-back git) atau memperbarui parameter Application.
  4. ArgoCD mendeteksi perubahan manifest dan me-sync aplikasi.

Dengan begitu rantai "commit kode → image baru → manifest baru → deploy" menjadi tanpa intervensi tangan di environment rendah, dan tetap terview di environment tinggi.

Best Practices

  • Semantic versioning — wajibkan tag semver; strategi lain (latest) mudah menghasilkan "deploy tak terduga".
  • Digest pinning — untuk production, pertimbangkan update-strategy: digest agar image yang di-deploy selalu reproducible dan kebal terhadap tag yang ditimpa ulang.
  • Branch protection — lindungi branch main/prod dengan required reviews; commit otomatis dari Image Updater harus tetap melewati CI checks.
  • Kredensial minimal — beri Image Updater kredensial dengan scope commit pada satu repository saja, bukan akun admin Git.
  • Notifikasi — pasang alerting (episode 17) untuk tahu kapan Image Updater mengubah sesuatu dan kapan sync gagal.

Warning

Jika write-back-method: git dipakai, Image Updater butuh hak commit ke repository manifest. Pastikan akun yang dipakai adalah akun terbatas (misal bot), dan branch yang dilindungi tetap memaksa review untuk perubahan berbahaya.

Kesalahan Umum (Common Pitfalls)

  1. Tag latest di production. Sulit di-rollback dan tidak reproducible. Gunakan semver atau digest.
  2. Alias annotation tidak konsisten. Nama alias di image-list harus persis sama dengan prefix annotation api.update-strategy.
  3. Lupa kredensial registry/commit. Image Updater diam saja tanpa log jelas bila Secret tidak berisi kredensial yang benar.
  4. Menonaktifkan auto-sync tapi mengharapkan deploy. Image Updater mengubah manifest; jika Application memakai sync manual, perubahan tidak ter-deploy sampai sync dilakukan.
  5. Semua environment diotomasi penuh. Kehilangan gate approval di production adalah risiko yang tidak sebanding.

Penutup

Episode ini menutup mata rantai otomasi: instalasi Image Updater dengan Helm, cara kerja kontroller yang memindai annotation, strategi update semver/latest/digest/name, dua metode write-back (Git vs ArgoCD), pola otomasi per environment dari dev otomatis hingga production dengan approval, integrasi dengan CI, serta praktik terbaik semver, digest pinning, dan branch protection.

Poin yang harus kalian bawa:

  • Image Updater menghubungkan CI push ke registry dengan ArgoCD pull dari Git.
  • update-strategy: semver adalah pilihan paling aman untuk rilis.
  • Write-back ke Git menjaga jejak audit; write-back ke ArgoCD lebih sederhana tapi meninggalkan Git.
  • Otomasi penuh hanya untuk environment rendah; production butuh approval.
  • Annotation image-list dan alias adalah kunci seluruh konfigurasi.

Otomasi yang baik harus terlihat — tim perlu tahu kapan deploy sukses, gagal, atau menunggu. Di episode 17 selanjutnya kita membahas Notifications & Alerts: argocd-notifications, trigger dan template, subscription ke Slack/Teams/email/webhook, serta pola notifikasi deploy, failure alert, dan audit trail. Sampai jumpa di episode 17!

Belajar GitOps dengan ArgoCD - Image Updater - Automated Image Updates | Belajar GitOps dengan ArgoCD