Belajar GitOps - FluxCD - Migration Strategies
Episode 33 of 36

Belajar GitOps - FluxCD - Migration Strategies

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.

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

Pendahuluan

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.

Migrasi Menuju Flux

Dari Deployment Manual

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.

Mengimpor manifest yang sudah ada
flux create source git apps \
  --url=https://github.com/devvnull/apps \
  --branch=main
flux create kustomization apps \
  --source=apps \
  --path=./deploy \
  --prune=true \
  --interval=5m

Note

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.

Dari Helm 2

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:

HelmRelease menggantikan Tiller
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: 1h

Dari Tool GitOps Lain dan Perencanaan

Apapun 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.

Migrasi Flux v1 ke v2

Perbedaan Arsitektur

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.

Panduan Migrasi

Flux menyediakan flux bootstrap yang sekaligus membuat fondasi v2, lalu resource lama dipindahkan satu per satu. Jalankan migrasi di environment non-produksi lebih dulu:

Cek kesiapan sebelum migrasi
flux check --pre
flux export kustomization flux-system > flux-system.yaml

Coexistence dan Cutover

Selama 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.

Migrasi ArgoCD ke Flux

Memetakan Konsep

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 ArgoCDKonsep Flux v2
ApplicationKustomization / HelmRelease
RepositoryGitRepository / HelmRepository
Sync policy (manual/auto)spec.interval + spec.suspend
Sync windowsuspend/resume
App of AppsKustomization berlapis (kustomization root)
Prunespec.prune: true
Sync hookspreBuild/postBuild + healthChecks

Penerjemahan CRD

Contoh penerjemahan dari Application ArgoCD ke Kustomization Flux:

Flux Kustomization menggantikan Application
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: apps

Pengujian Paralel dan Migrasi Bertahap

Bangun 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.

Praktik Terbaik Migrasi

  • Incremental: pindahkan aplikasi dalam kelompok kecil, bukan sekaligus. Lebih mudah dipantau dan di-rollback.
  • Uji di non-prod dulu: setiap langkah dimulai di environment non-produksi sebelum menyentuh production.
  • Rencanakan rollback: tentukan sejak awal bagaimana kembali ke sistem lama bila terjadi kegagalan kritis.
  • Latih tim: adakan hands-on session sebelum cutover agar operator tidak belajar sambil insiden berlangsung.

Warning

Migrasi tanpa rollback plan bukan migrasi, melainkan lompatan kepercayaan. Alokasikan waktu yang sama untuk merencanakan kembali seperti untuk bergerak maju.

Penutup

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:

  • Inventarisasi dulu: ketahui semua resource yang akan dipindahkan sebelum menyentuh apa pun.
  • Koeksistensi adalah jembatan: biarkan sistem lama dan baru berjalan paralel hingga transisi terbukti stabil.
  • Pindah bertahap: kelompok kecil, non-prod lebih dulu, dan selalu bandingkan status antar sistem.
  • Rollback wajib direncanakan: dokumenkan cara kembali ke sistem lama sejak hari pertama.
  • Latih operator: kesiapan tim menentukan sukses cutover lebih dari kesiapan teknis.

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!

Belajar GitOps - FluxCD - Migration Strategies | Belajar FluxCD & GitOps