Flux CD adalah alat yang digunakan untuk otomatisasi pengelolaan konfigurasi dan pengiriman aplikasi di lingkungan Kubernetes. Flux CD memungkinkan Continuous Delivery (CD) pada cluster Kubernetes dengan memonitor dan mengelola perubahan pada konfigurasi Kubernetes Anda.
Mungkin secara singkat tentang flux adalah begitu ๐ , untuk selengkap nya bisa berkunjung saja ke website resmi nya https://fluxcd.io/
Selain itu flux juga ada banyak beberapa fitur yaitu :
Sinkronisasi Otomatis: Flux secara terus-menerus memonitor repositori Git yang berisi konfigurasi Kubernetes Anda. Ketika ada perubahan di repositori, Flux akan mendeteksi perubahan tersebut dan menerapkannya ke cluster Kubernetes.
Automated Rollbacks: Jika perubahan yang diterapkan menyebabkan masalah atau kesalahan, Flux dapat melakukan rollback otomatis ke versi sebelumnya.
Automated Image Updates: Flux mendukung otomatisasi pembaruan gambar (image) container. Dengan konfigurasi yang benar, Flux dapat memantau perubahan gambar dan secara otomatis memperbarui aplikasi di cluster Anda.
Deklaratif Konfigurasi: Flux menggunakan pendekatan deklaratif di mana konfigurasi aplikasi dinyatakan dalam berkas manifest Kubernetes (misalnya, file YAML). Perubahan pada berkas manifest ini akan direfleksikan pada cluster Kubernetes.
Integrasi dengan GitOps: Flux sangat terkait dengan konsep GitOps, yang menekankan penggunaan repositori Git sebagai sumber kebenaran tunggal untuk konfigurasi dan definisi infrastruktur. Dengan GitOps, perubahan pada cluster Kubernetes direkam dalam repositori Git, memungkinkan rekam jejak perubahan dan konsistensi yang terjamin.
Selebih nya untuk fitur nya bisa cek website nya juga ya .
Disini saya akan share setup Flux dengan cluster Kubernetes nya agar proses CD berjalan lancar , tetapi disini saya setup dengan Sangat minimalist dan sangat sederhana ๐.
Setup Flux CD
Install flux CD CLI
| |
Setup bash completion
| |
Install deployment flux , Install deployment ada berbanyak cara tapi saya menggunakan Flux CLI untuk deploy deployment nya
Menggunakan cli
| |
Menggunakan kubectl
| |
Menggunakan Helm
| |
Integration Flux with cluster
Boostrap flux with repository with gitlab , export token gitlab
| |
| |
Sesuaikan Info ini dengan repository kalian , apabila repository nya public bisa ganti โ personal dengan โ private=false.
Setelah berhasil boostrap si flux akan nge push directory dan manifest seperti ini

pastikan cek kustomization flux-system terinstall
| |

Setup Kustomization
Buat secret untuk flux akses ke repository , karena gitlab menggunakan token jadi sample nya seperti ini
convert token to base64
| |
| |
| |
| |
atau bisa juga dengan command seperti ini
| |
Sesuaikan token dengan token gitlab kalian , usahakan hash dulu
Buat manifest kustomization applications-1 dan git repository nya di flux/clusters/my-cluster
kustomization :
| |
| |
gitrepository:
| |
Untuk path kustomization sesuaikan path nya dengan path deployment kalian di simpan di repository . dan secretref sesuaikan dengan nama secret yang tadi di deploy
Example struktur deployment untuk apps
File di bawah ini di simpan di path sesuai yang tadi telah di setup yaitu di ./clusters/my-cluster/repo-apps/applications-1
deployment.yaml
| |
service.yaml
| |
kustomization.yaml
| |
untuk kustomization.yaml usahakan penamaan resources sama dengan nama manifest deployment yang mau di deploy
check kustomization applications-1 apakah sudah ada atau belum

nanti proses reconciliation applications-1 berjalan dan tunggu deployment ter deploy dan running

Apabila ada commit di manifest , otomatis deployment yang telah terdeploy akan ikut terupdate juga
Voilaaa , Setup Flux CD on Cluster kubernetes berhasill . Dari Setup di atas sangat simple sekali mungkin bisa di kreasikan tergantung kalian mau gimana proses CD nya , Mungkin kedepan nya per deployment tuh di bedakan branch jadi semisal branch application-1 hanya ada repository deployment application-1 sehingga menjadi rapi tidak menumpuk di satu branch . Mungkin nanti saya akan share full nya dari proses CI sampai CD nya ๐.Mohon maaf apabila ada kalimat yang susah dipaham / kurang mengerti / terlalu berbelit2 , sekian ges chersss. โ
