Di episode ini kalian belajar strategi migrasi menuju FluxCD: dari deployment manual, Helm 2, dan tool GitOps lain. Termasuk perbandingan migrasi Flux v1 ke v2 dan ArgoCD ke Flux, lengkap dengan praktik migrasi bertahap yang aman.

Di episode 32 kalian sudah menguasai troubleshooting FluxCD. Kini saatnya menghadapi skenario yang paling sering terjadi di lapangan: sistem lama yang harus dipindahkan ke Flux. Di episode 33 ini kalian belajar migration strategies — mulai dari memindahkan deployment manual dan Helm 2, memahami perbedaan migrasi Flux v1 ke v2, memetakan konsep ArgoCD ke Flux, sampai praktik terbaik migrasi bertahap yang tidak membuat tim panik.
Organisasi yang selama ini deploy dengan kubectl apply manual punya keuntungan: konfigurasi sudah berbentuk YAML. Langkahnya: kumpulkan semua manifest yang tersebar di shell history dan dokumentasi, rapikan dalam satu repositori, lalu buat GitRepository dan Kustomization untuk menariknya.
flux create source git apps \
--url=https://github.com/devvnull/apps \
--branch=main
flux create kustomization apps \
--source=apps \
--path=./deploy \
--prune=true \
--interval=5mNote
Aktifkan --prune=true dengan hati-hati: Flux akan menghapus resource yang ada di cluster tetapi tidak ada di Git. Ini perilaku yang benar, tetapi perlu disosialisasikan ke tim sebelum migrasi.
Helm 2 menyimpan state di Tiller (server-side). Sebelum bermigrasi, konversi release Helm 2 ke manifest statis atau ke Helm 3 chart. Flux v2 mendukung Helm 3 melalui HelmRepository dan HelmRelease, sehingga tim yang sudah memakai chart tetap bisa memakai Flux:
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: nginx
namespace: apps
spec:
interval: 5m
chart:
spec:
chart: ingress-nginx
sourceRef:
kind: HelmRepository
name: ingress-nginx
interval: 1hApapun asalnya, perencanaan menyeluruh dulu: inventarisasi resource, identifikasi dependensi, tentukan urutan migrasi, dan buat jalur rollback. Jangan pernah memulai migrasi tanpa mengetahui bagaimana cara kembali ke kondisi sebelumnya.
Flux v1 adalah satu kontainer monolitik. Flux v2 dibangun dari GitOps Toolkit — sekumpulan controller yang saling berdiri sendiri (source-controller, kustomize-controller, helm-controller, dan lainnya). Konsekuensinya, cara konfigurasi juga berubah: dari satu file konfigurasi menuju custom resources yang deklaratif.
Flux menyediakan flux bootstrap yang sekaligus membuat fondasi v2, lalu resource lama dipindahkan satu per satu. Jalankan migrasi di environment non-produksi lebih dulu:
flux check --pre
flux export kustomization flux-system > flux-system.yamlSelama masa transisi, Flux v1 dan v2 bisa berjalan bersamaan pada cluster yang berbeda. Setelah seluruh aplikasi berhasil ditarik oleh v2 dan diamati stabil, cutover dilakukan dengan menghentikan v1 dan memindahkan traffic GitOps sepenuhnya ke v2.
Important
Jangan biarkan kedua versi menulis ke environment yang sama secara bersamaan dalam waktu lama. Koeksistensi hanya aman sebagai jembatan, bukan sebagai kondisi permanen.
ArgoCD dan Flux memakai model yang berbeda: ArgoCD berbasis Application yang merujuk satu source dengan satu destination; Flux memisahkan sumber (GitRepository) dari penerapan (Kustomization atau HelmRelease). Pemetaannya kurang lebih sebagai berikut:
| Konsep ArgoCD | Konsep Flux v2 |
|---|---|
| Application | Kustomization / HelmRelease |
| Repository | GitRepository / HelmRepository |
| Sync policy (manual/auto) | spec.interval + spec.suspend |
| Sync window | suspend/resume |
| App of Apps | Kustomization berlapis (kustomization root) |
| Prune | spec.prune: true |
| Sync hooks | preBuild/postBuild + healthChecks |
Contoh penerjemahan dari Application ArgoCD ke Kustomization Flux:
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: web
namespace: apps
spec:
interval: 5m
path: ./web
prune: true
sourceRef:
kind: GitRepository
name: apps
healthChecks:
- apiVersion: apps/v1
kind: Deployment
name: web
namespace: appsBangun cluster paralel yang dikelola Flux, uji seluruh aplikasi di sana tanpa menyentuh produksi ArgoCD. Setelah hasilnya setara, pindahkan aplikasi satu per satu ke cluster Flux dalam jendela perubahan yang rendah aktivitas.
Tip
Bandingkan perbedaan status antara kedua sistem dengan kubectl get dan diff terhadap manifest. Perbedaan kecil seperti label dan annotation sering menjadi biang masalah saat cutover.
Warning
Migrasi tanpa rollback plan bukan migrasi, melainkan lompatan kepercayaan. Alokasikan waktu yang sama untuk merencanakan kembali seperti untuk bergerak maju.
Di episode ini kalian mempelajari strategi migrasi ke FluxCD dari berbagai titik awal: deployment manual, Helm 2, tool GitOps lain, perpindahan Flux v1 ke v2, serta pemetaan konsep ArgoCD ke Flux dengan pendekatan bertahap.
Inti yang harus dibawa pulang:
Di episode 34, kita memasuki tahap akhir sebelum produksi: production checklist & best practices — memastikan HA, RBAC, secret, monitoring, backup, dan DR siap sebelum aplikasi kalian diluncurkan. Sampai jumpa!