Sejarah lahirnya GitOps dari Weaveworks, evolusi Flux, empat prinsip inti GitOps, masalah nyata yang dipecahkannya di dunia deployment, dan manfaatnya bagi tim yang bekerja berbasis Git.

Di episode 0 kalian sudah menyiapkan seluruh environment: cluster Kubernetes, kubectl, Helm, Kustomize, dan Flux CLI. Sekarang saatnya berhenti sejenak dari terminal dan memahami mengapa semua tools itu dibutuhkan. GitOps bukan sekadar tools — ia adalah filosofi operasi yang lahir dari rasa sakit nyata di dunia deployment aplikasi.
Episode ini menelusuri sejarah lahirnya GitOps: siapa yang menciptakannya, mengapa Flux menjadi proyek paling awal yang mewujudkannya, dan masalah-masalah konkret yang diselesaikan oleh pola pikir ini. Pemahaman sejarah ini penting karena seluruh keputusan desain FluxCD di episode-episode berikutnya — dari arsitektur controller sampai cara kerjanya membaca Git — adalah jawaban terhadap masalah yang dibahas di episode ini.
Sebelum GitOps, dunia deployment mengalami perjalanan panjang yang meninggalkan banyak luka.
Awalnya deployment dilakukan sepenuhnya manual: SSH ke server, menarik image, menyalakan proses. Masalahnya jelas — tidak ada catatan perubahan, tidak ada cara mengulang hasil yang sama, dan satu typo bisa merusak produksi tanpa jejak audit. Coba tanya diri kalian: kalau server produksi mati hari ini, bisakah kalian membangun ulang persis seperti semula?
Masuk era Infrastructure as Code (IaC): server dan pipeline didefinisikan sebagai kode. Ini langkah maju besar, tetapi ada celah: siapa yang mengeksekusi konfigurasi itu? Biasanya pipeline CI/CD yang menjalankan kubectl apply ke cluster. Akibatnya muncul istilah "config drift" — konfigurasi di Git sudah tidak sesuai dengan kondisi nyata di cluster, karena ada perubahan manual yang tidak tercatat, atau karena tidak ada yang memverifikasi apa yang terjadi setelah apply.
Perbedaan filosofinya bisa dilihat dari perintah yang dipakai kedua era ini:
# Cara lama: perintah imperative sekali jalan dari CI
ssh deploy@prod "docker pull registry/myapp:1.2 && docker restart myapp"
# Cara GitOps: ubah nilai di Git, agent di dalam cluster yang bekerja
git add deploy/myapp.yaml
git commit -m "chore: update image myapp ke 1.2"
git push origin mainPerhatikan baris terakhir: tidak ada SSH ke server, tidak ada kubectl apply dari CI. Yang terjadi hanyalah perubahan di Git — sisanya dikerjakan oleh agent yang berjalan di dalam cluster. Inilah inti pergeseran paradigma dari push ke pull.
Titik balik terjadi di tahun 2017. Weaveworks, perusahaan yang mengembangkan tools untuk Kubernetes, memperkenalkan istilah GitOps sebagai pola operasi di mana Git menjadi sumber kebenaran tunggal untuk sistem deployment. Sebelum nama itu lahir, Weaveworks sudah membangun Flux v1 — tool yang secara terus-menerus menyinkronkan cluster dengan repository Git, dan inilah yang menjadi cikal bakal FluxCD yang kita kenal sekarang.
Setelah istilah GitOps populer, komunitas berkumpul membentuk GitOps Working Group di dalam CNCF untuk menyepakati definisi dan prinsipnya. Pada tahun 2020+, proyek Flux mengalami titik balik kedua: Flux v2 dirancang ulang total dengan arsitektur modular yang disebut GitOps Toolkit. Flux v2 kemudian masuk program CNCF sandbox dan akhirnya graduated sebagai salah satu proyek CNCF yang paling matang.
Garis waktu ringkasnya:
| Tahun | Peristiwa |
|---|---|
| 2016 - 2017 | Flux v1 dikembangkan Weaveworks sebagai sinkronisasi Git ke cluster. |
| 2017 | Istilah GitOps diperkenalkan secara resmi oleh Weaveworks. |
| 2018 | GitOps Working Group terbentuk di bawah payung CNCF. |
| 2020+ | Flux v2 dirancang ulang total sebagai arsitektur GitOps Toolkit. |
| 2022+ | Flux meraih status CNCF graduated project. |
Tip
Kenali garis besar sejarah ini: 2017 Weaveworks menciptakan istilah GitOps, lahir Flux v1, dibentuk GitOps Working Group, 2020-an Flux v2 ditulis ulang sebagai GitOps Toolkit, lalu Flux diakui sebagai CNCF graduated project.
GitOps berdiri di atas empat prinsip yang didefinisikan komunitas. Seluruh desain FluxCD mengikuti prinsip ini:
| Prinsip | Makna Praktis |
|---|---|
| Declarative configuration | Sistem dinyatakan sebagai deskripsi keadaan akhir, bukan urutan langkah. |
| Versioned and immutable | Konfigurasi disimpan di Git yang immutable dan bisa di-rollback. |
| Pulled automatically | Agent di dalam cluster menarik konfigurasi dari Git — bukan Git didorong ke cluster. |
| Continuously reconciled | Agent terus-menerus menyelaraskan kondisi nyata dengan yang dideklarasikan. |
Bandingkan dengan cara lama: kubectl apply sekali lalu tidak ada yang memantau. GitOps tidak berhenti setelah apply — ia menjaga keadaan selamanya.
Frasa kuncinya adalah pulled automatically. Pada arsitektur push, kredensial cluster harus dibawa ke tempat CI berjalan — potensi kebocoran yang besar. Pada model pull, agent di dalam cluster yang memegang kredensial, sementara Git cukup menyediakan konfigurasi yang aman untuk dibaca siapa pun yang berhak. Inilah salah satu alasan GitOps dianggap lebih aman secara desain, bukan sekadar karena kebiasaan yang baik.
Kombinasi empat prinsip ini menghasilkan jaminan penting: apa pun yang terjadi pada cluster, selama Git tetap benar, sistem akan kembali ke kondisi yang dideklarasikan. Prinsip inilah yang kemudian diwujudkan secara ketat oleh FluxCD.
Kenapa kita butuh pola seperti ini? Karena masalah-masalah berikut terlalu sering terjadi di tim yang memakai deployment manual atau CI-driven:
git revert atau checkout commit sebelumnya.Perhatikan pola yang sama di balik semua masalah ini: semuanya muncul karena tidak ada satu sumber kebenaran yang hidup. GitOps menutup celah itu dengan menjadikan Git sebagai otoritas tunggal, sekaligus memberi tim alat untuk menegakkan otoritas tersebut secara otomatis.
Warning
Rollback di GitOps bukan sekadar "jalankan ulang deploy lama". Karena agent terus-menerus merekonsiliasi, cukup kembalikan isi Git ke commit yang baik — cluster otomatis mengikuti. Inilah yang membuat GitOps unggul dalam pemulihan bencana.
Dari sudut pandang praktis, GitOps mengubah cara kerja tim dalam enam hal besar:
Episode 1 meletakkan fondasi konseptual seri ini:
Di episode 2 kita masuk ke level arsitektur: mengenal FluxCD v2, mengapa ia memilih arsitektur berbasis controller modular yang disebut GitOps Toolkit, perbandingan FluxCD vs ArgoCD, dan komponen-komponen inti yang menyusunnya. Sampai jumpa di episode berikutnya!