Belajar GitOps dengan ArgoCD - Managing Configuration - Helm & Kustomize
Episode 8 of 36

Belajar GitOps dengan ArgoCD - Managing Configuration - Helm & Kustomize

Mengelola konfigurasi yang realistis dengan ArgoCD: Helm chart sebagai sumber, multiple values files, Kustomize base dan overlays, Jsonnet, hingga menggabungkan Helm dengan Kustomize dan plugin kustom.

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

Pendahuluan

Sejauh ini kita mengelola manifest polos — bagus untuk belajar, tapi tidak realistis. Di dunia nyata, aplikasi memakai banyak environment, nilai berubah antar cluster, dan tim berbagi chart yang sama. Itulah alasan kalian harus menguasai manajemen konfigurasi: ArgoCD tidak hanya bisa membaca folder berisi YAML, ia juga merender chart Helm, membangun Kustomize overlays, dan bahkan mengevaluasi Jsonnet.

Episode 8 menutup fase dasar seri ini dengan membahas cara ArgoCD memakai Helm, Kustomize, plain YAML, Jsonnet, dan kombinasi di antaranya — termasuk Config Management Plugins untuk tooling kustom.

Helm sebagai Sumber Application

Jika repository kalian berisi chart Helm, ArgoCD akan merendernya seperti menjalankan helm template. Application-nya tampak hampir sama, hanya pointer ke chart:

ArgoCDApplication dengan sumber Helm chart
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: api
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://github.com/arman/helm-charts.git
    path: charts/api
    targetRevision: main
    helm:
      parameters:
        - name: image.tag
          value: v1.4.0
      valueFiles:
        - values-prod.yaml
  destination:
    server: https://kubernetes.default.svc
    namespace: production
  syncPolicy:
    automated: {}

Nilai dari Git: Values Files

Alih-alih memakai --set per parameter, nilai per environment disimpan sebagai file dalam repository — values-prod.yaml, values-staging.yaml, dsb — dan dirujuk lewat valueFiles. Karena file ini ada di Git, seluruh perubahan nilai menjadi PR yang terdokumentasi.

Multiple Values Files

Untuk berbagi nilai umum, gunakan beberapa file secara berurutan (file belakangan menimpa yang sebelumnya):

Urutan values files
spec:
  source:
    helm:
      valueFiles:
        - values-common.yaml
        - values-production.yaml

Chart dari Repository Helm

ArgoCD juga bisa mengambil chart langsung dari Helm repository (bukan dari Git) menggunakan kombinasi chart + repoURL ke registry chart:

Chart dari Helm repository
spec:
  source:
    repoURL: https://charts.example.com
    chart: api
    targetRevision: 2.3.0
    helm:
      valueFiles:
        - values-prod.yaml

Helm Hooks

ArgoCD memahami anotasi Helm. Hook Helm (dengan anotasi helm.sh/hook: pre-install, post-install, dll) diperlakukan ArgoCD sebagai resource hook yang berjalan pada fase sync yang sesuai — misalnya migration pada fase PreSync.

Tip

Pahami perbedaan mental model: Helm biasa mengelola release (ada state di cluster), sedangkan ArgoCD mengelola manifest hasil render. Dengan ArgoCD, tidak ada helm upgrade di runtime — semua perubahan lewat Git.

Kustomize sebagai Sumber Application

Untuk Kustomize, ArgoCD menjalankan kustomize build pada folder yang berisi kustomization.yaml:

ArgoCDApplication dengan sumber Kustomize
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: api
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://github.com/arman/gitops-lab.git
    path: overlays/production
    targetRevision: main
    kustomize:
      images:
        - ghcr.io/arman/api:v1.4.0
  destination:
    server: https://kubernetes.default.svc
    namespace: production
  syncPolicy:
    automated: {}

Base dan Overlays

Inilah pola yang direkomendasikan: base menyimpan definisi netral, overlays per environment berisi penyesuaian. ArgoCD cukup diarahkan ke folder overlay — struktur base/overlays yang dibangun di episode 3 langsung bekerja.

Name Prefix/Suffix

Kustomize namePrefix / nameSuffix (misal prod-) memungkinkan satu set manifest dipakai di banyak environment tanpa konflik nama. ArgoCD merender hasil akhirnya persis seperti kustomize build lokal.

Update Image

Dengan kustomize.images, kalian bisa menimpa tag image tanpa mengubah file Git:

ArgoCDUpdate image via argocd
argocd app set api --kustomize-image ghcr.io/arman/api:v1.4.0

Ini setara dengan kustomize edit set image ghcr.io/arman/api:v1.4.0 — bedanya perubahan dilakukan langsung di Application ArgoCD.

Plain YAML Directory

Untuk folder berisi YAML polos, ArgoCD menggunakannya apa adanya. Beberapa opsi berguna:

Opsi direktori
spec:
  source:
    directory:
      recurse: true
      exclude: "{{.Files}}"
  • recurse: true — ikut membaca subfolder.
  • exclude — melewati file tertentu (misal template yang belum siap).
  • Tanpa opsi, hanya file .yaml dan .yml di level folder yang dibaca.

Jsonnet

Untuk tim yang menyukai Jsonnet, ArgoCD bisa mengevaluasinya. Ekstensi dan parameter disediakan lewat field jsonnet:

Application dengan sumber Jsonnet
spec:
  source:
    path: apps/api
    jsonnet:
      extVars:
        - name: image
          value: ghcr.io/arman/api:v1.4.0
      tlas:
        - code: '{"replicas": 3}'
          name: appConfig

extVars adalah external variables, tlas adalah Top-Level Arguments yang dioper ke fungsi entrypoint Jsonnet.

Menggabungkan Helm + Kustomize

Kombinasi ini populer: Helm menghasilkan template, Kustomize menyesuaikannya untuk tiap environment tanpa mengubah chart. Di ArgoCD, nyalakan mode gabungan dengan plugin (bawaan helm + kustomize):

Helm lalu Kustomize
spec:
  source:
    repoURL: https://github.com/arman/gitops-lab.git
    path: apps/api
    plugin:
      name: helm-kustomize
      parameters:
        - name: image.tag
          value: v1.4.0
        - name: kustomize.args
          value: overlays/production

Config Management Plugins (CMP)

Kebutuhan tak berujung — templating kustom, generator internal, tooling tim. ArgoCD mendukung Config Management Plugins: container sidecar yang merender manifest dengan perintah kalian sendiri. Ini memberikan kebebasan penuh untuk menggabungkan tools apa pun dalam satu pipeline render.

Warning

Pola Helm + Kustomize membutuhkan CMP yang dikonfigurasi dengan benar di argocd-repo-server. Di lab, verifikasi dengan argocd app get api dan periksa error render dari repo-server sebelum berasumsi konfigurasinya salah.

Penutup

Fase dasar seri ini ditutup dengan manajemen konfigurasi yang lengkap:

  • Helm: chart dari Git atau registry, parameters, valueFiles, Helm hooks.
  • Kustomize: base/overlays, namePrefix/nameSuffix, update image tanpa edit Git.
  • Plain YAML: recurse dan exclude untuk direktori.
  • Jsonnet: extVars dan tlas.
  • Helm + Kustomize via plugin, serta CMP untuk tooling kustom.

Fondasi GitOps kalian sekarang utuh: konsep, instalasi, operasi, otomasi sync, dan manajemen konfigurasi. Di episode 9 kita akan melampaui satu cluster — multi-cluster management: mendaftarkan cluster eksternal, strategi hub-and-spoke, dan menempatkan aplikasi ke banyak cluster sekaligus. Sampai jumpa!

Belajar GitOps dengan ArgoCD - Managing Configuration - Helm & Kustomize | Belajar GitOps dengan ArgoCD