Bangun workflow GitOps yang aman: perbandingan trunk-based dan GitFlow, struktur direktori environment, strategi promosi lewat branch dan tag, serta change management berbasis PR.

Di episode 14 sebelumnya kita mengatur kapan sync boleh terjadi dengan Sync Windows. Kini semua komponen teknis sudah lengkap — Application, Project, ApplicationSet, Secret, Hooks, dan Window. Tapi ada satu lapisan yang sering dilupakan dan justru menentukan sukses tim: alur kerja manusia di sekitar Git. Bagaimana perubahan mengalir dari laptop developer menuju cluster production? Di episode ini kita membahas GitOps Workflow & Branch Strategies — pola repository, branch, dan promosi yang membuat Git benar-benar menjadi sumber kebenaran yang terorganisir.
Mengapa ini penting? ArgoCD hanya melakukan apa yang ada di Git. Jika struktur Git-nya semrawut, hasilnya adalah deployment yang semrawut. Sebaliknya, repository GitOps yang tertata rapi adalah bagian dari mekanisme kontrol: setiap perubahan terview, terdokumentasi, dan mudah di-rollback — persis yang dibutuhkan untuk audit dan operasional berskala.
Ada tiga pola besar yang menentukan cara tim menulis perubahan:
Semua developer bekerja pada satu branch utama (biasanya main), dengan fitur dikembangkan dalam short-lived branch yang di-merge cepat melalui PR. Keunggulannya: integrasi terus-menerus, konflik minimal, dan riwayat linier. Ini pola yang paling cocok untuk GitOps karena ArgoCD menyinkronkan satu targetRevision yang jelas.
Menggunakan branch develop sebagai pusat pengembangan dan branch feature/* + release/* + hotfix/* di sekitarnya. Lebih terstruktur untuk rilis besar, tapi lebih berat: perubahan harus melewati beberapa level branch, dan ini kerap membuat konfigurasi GitOps menjadi duplikatif.
Pola perantara: satu branch per environment (dev, staging, prod). ArgoCD di environment dev menyinkronkan branch dev, dan seterusnya. Promosi dilakukan dengan merge antar branch. Release branch (release-1.2) dipakai untuk mengunci versi yang akan dirilis — cocok dikombinasikan dengan tag.
Selain branch, struktur direktori menentukan skala repository GitOps. Tiga pendekatan umum:
gitops-repo/
├── apps/
│ ├── billing/
│ │ ├── base/
│ │ ├── overlays/
│ │ │ ├── dev/
│ │ │ ├── staging/
│ │ │ └── prod/
│ └── orders/
└── clusters/
├── dev/
└── prod/Setiap aplikasi punya base (default) dan overlays per environment. Promosi = menambahkan atau mengubah overlay. Ini pola paling umum dan mudah dipahami.
gitops-repo/
├── clusters/
│ ├── eks-prod/
│ │ ├── namespace-billing/
│ │ ├── namespace-orders/
│ │ └── platform/
│ └── kind-staging/
│ ├── namespace-billing/
│ └── namespace-orders/
└── apps/
└── shared-charts/Promosi adalah proses memindahkan perubahan dari environment rendah ke tinggi. Empat strategi:
| Strategi | Mekanisme | Kelebihan | Kekurangan |
|---|---|---|---|
| Branch promotion | Merge branch dev ke staging ke prod | Sederhana, mengikuti GitFlow | Konflik antar environment |
| Tag-based | Rilis ditandai tag v1.2.3, prod mengacu tag | Reproducible, versioned | Butuh disiplin tagging |
| PR promotion | Setiap promosi lewat PR + review | Terview penuh, audit jelas | Butuh waktu |
| Overlay-based | Kustomize/Helm overlay menaikkan versi image | Presisi per aplikasi | Setup awal lebih rumit |
Pola yang sangat direkomendasikan untuk production adalah tag-based + PR promotion: tim mempromosikan dengan membuat PR yang mengubah versi image di overlay prod ke tag tertentu, dan ArgoCD hanya menerapkan jika PR disetujui.
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
images:
- name: ghcr.io/devnull/billing-api
newTag: v1.2.3Bagian ini yang membuat GitOps unggul dalam tata kelola:
CODEOWNERS khusus (misal tim platform) dan wajibkan persetujuan — bisa diperkuat dengan status checks dari CI.argocd app rollback untuk state sebelumnya). Karena manifest versioned, memutar balik selalu mungkin dan terdokumentasi.Tip
Buat repository GitOps dan repository aplikasi sebagai dua repositori terpisah: repo aplikasi berisi kode, repo GitOps berisi manifest. Isolasi ini membuat permission bisa dibedakan — developer boleh mengubah kode, tapi hanya lead yang bisa mengubah manifest production.
prod yang di-merge manual tanpa alur promosi jelas akan cepat berbeda dari staging. Standarisasi alur promosi.git push --force untuk "menghilangkan" perubahan; gunakan revert sehingga jejak audit tetap utuh.latest sulit di-rollback dan tidak reproducible. Wajibkan semver (kita dalami di episode 16).Episode ini merangkum sisi manusia dari GitOps: perbandingan trunk-based, GitFlow, dan environment branches, struktur direktori environment-based/application-based/cluster-based, strategi promosi branch/tag/PR/overlay, dan change management lewat PR review, approval, change tracking, serta prosedur rollback.
Poin yang harus kalian bawa:
Menjaga versi image tetap sinkron antar environment secara manual sangat melelahkan. Di episode 16 selanjutnya kita membahas Image Updater - Automated Image Updates: instalasi ArgoCD Image Updater, strategi semver/latest/digest, write-back ke Git, dan pola dev otomatis hingga approval manual di produksi. Sampai jumpa di episode 16!