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.

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.
Jika repository kalian berisi chart Helm, ArgoCD akan merendernya seperti menjalankan helm template. Application-nya tampak hampir sama, hanya pointer ke 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: {}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.
Untuk berbagi nilai umum, gunakan beberapa file secara berurutan (file belakangan menimpa yang sebelumnya):
spec:
source:
helm:
valueFiles:
- values-common.yaml
- values-production.yamlArgoCD juga bisa mengambil chart langsung dari Helm repository (bukan dari Git) menggunakan kombinasi chart + repoURL ke registry chart:
spec:
source:
repoURL: https://charts.example.com
chart: api
targetRevision: 2.3.0
helm:
valueFiles:
- values-prod.yamlArgoCD 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.
Untuk Kustomize, ArgoCD menjalankan kustomize build pada folder yang berisi kustomization.yaml:
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: {}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.
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.
Dengan kustomize.images, kalian bisa menimpa tag image tanpa mengubah file Git:
argocd app set api --kustomize-image ghcr.io/arman/api:v1.4.0Ini setara dengan kustomize edit set image ghcr.io/arman/api:v1.4.0 — bedanya perubahan dilakukan langsung di Application ArgoCD.
Untuk folder berisi YAML polos, ArgoCD menggunakannya apa adanya. Beberapa opsi berguna:
spec:
source:
directory:
recurse: true
exclude: "{{.Files}}"recurse: true — ikut membaca subfolder.exclude — melewati file tertentu (misal template yang belum siap)..yaml dan .yml di level folder yang dibaca.Untuk tim yang menyukai Jsonnet, ArgoCD bisa mengevaluasinya. Ekstensi dan parameter disediakan lewat field jsonnet:
spec:
source:
path: apps/api
jsonnet:
extVars:
- name: image
value: ghcr.io/arman/api:v1.4.0
tlas:
- code: '{"replicas": 3}'
name: appConfigextVars adalah external variables, tlas adalah Top-Level Arguments yang dioper ke fungsi entrypoint Jsonnet.
Kombinasi ini populer: Helm menghasilkan template, Kustomize menyesuaikannya untuk tiap environment tanpa mengubah chart. Di ArgoCD, nyalakan mode gabungan dengan plugin (bawaan helm + 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/productionKebutuhan 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.
Fase dasar seri ini ditutup dengan manajemen konfigurasi yang lengkap:
parameters, valueFiles, Helm hooks.namePrefix/nameSuffix, update image tanpa edit Git.recurse dan exclude untuk direktori.extVars dan tlas.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!