Episode ini membawa Flannel ke era GitOps: mengelola manifest dan Helm values sebagai code melalui Argo CD atau Flux, menerapkan versioning dan review flow, serta strategi penerapan bertahap untuk upgrade yang aman dan bisa di-rollback.

Sejauh ini kalian menerapkan Flannel lewat kubectl langsung. Di tim produksi, cara itu meninggalkan masalah: siapa yang mengubah konfigurasi, kapan, dan bagaimana mengembalikannya? GitOps menjawab semua pertanyaan ini dengan satu prinsip: git adalah sumber kebenaran.
Episode 18 membawa Flannel ke alur GitOps. Kalian akan mengelola manifest dan Helm values sebagai code lewat Argo CD atau Flux, menerapkan versioning dan review flow, serta men-deploy perubahan secara bertahap.
Ada dua bentuk Flannel sebagai code: manifest mentah kube-flannel.yml yang disimpan langsung di repository, atau Helm chart dengan file values. Manifest sederhana dan transparan; Helm memudahkan override nilai per cluster lewat satu file.
mkdir -p clusters/prod/flannel
cp kube-flannel.yml clusters/prod/flannel/
git add clusters/prod/flannel/
git commit -m "chore(flannel): pin manifest v0.28.8"Perintah git add dan git commit menandakan perubahan Flannel kini masuk riwayat dan bisa di-review seperti kode.
Simpan konfigurasi yang konsisten per cluster: image tag, backend, MTU, dan CIDR. Jika ada perbedaan antar cluster, misalnya produksi memakai host-gw sementara staging memakai vxlan, representasikan sebagai values terpisah per environment.
Argo CD men-deploy Flannel dari repository melalui Application:
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: flannel
namespace: argocd
spec:
project: default
source:
repoURL: https://github.com/org/infrastructure.git
path: clusters/prod/flannel
targetRevision: main
destination:
server: https://kubernetes.default.svc
namespace: kube-flannel
syncPolicy:
automated:
prune: trueApplication di atas menyinkronkan folder clusters/prod/flannel dari branch main ke namespace kube-flannel. Perubahan di git otomatis diterapkan ke cluster.
Flux memakai Kustomization dengan pendekatan serupa:
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: flannel
namespace: flux-system
spec:
interval: 10m
sourceRef:
kind: GitRepository
name: infrastructure
path: ./clusters/prod/flannel
prune: trueBaik Argo CD maupun Flux mengarahkan Flannel ke namespace yang sama dan mengelola siklus hidupnya dari git.
Prinsip pertama GitOps: tidak ada perubahan langsung di cluster. Semua perubahan lewat pull request. Kunci suksesnya adalah image tag yang jelas sehingga diff di review mudah dibaca.
git commit -m "feat(flannel): upgrade flanneld ke v0.28.8"
git push origin mainPerintah git push mengirim perubahan ke repository. Tim yang lain me-review diff sebelum disetujui, dan Argo CD atau Flux menerapkannya setelah masuk branch target.
Jangan simpan secret di manifest. ConfigMap Flannel berisi net-conf.json yang bukan secret, tetapi jika backend memakai kunci, misalnya IPsec, gunakan Secret Kubernetes dan rujuk lewat mekanisme yang aman.
Selalu terapkan perubahan di cluster staging sebelum produksi. Upgrade Flannel di staging, verifikasi konektivitas, lalu promosikan ke produksi dengan mengganti nilai branch atau folder di repository.
kubectl -n kube-flannel rollout restart ds/kube-flannel-ds
kubectl -n kube-flannel rollout status ds/kube-flannel-dsPerintah kubectl -n kube-flannel rollout status memastikan DaemonSet selesai sebelum lanjut ke langkah berikutnya.
Keunggulan GitOps yang paling terasa saat rollback: cukup revert commit atau atur ulang targetRevision di Application, dan Argo CD atau Flux mengembalikan Flannel ke versi sebelumnya secara otomatis. Tidak ada tebakan manual tentang apa yang berubah.
Episode 18 mengubah cara kalian mengelola Flannel: dari perintah langsung menjadi code yang di-review, di-versioning, dan diterapkan otomatis lewat GitOps.
Inti yang harus dibawa pulang:
Di episode 19 selanjutnya kita akan mengasah diagnostik: performance dan troubleshooting — kumpulan perintah seperti ip route, ip -d link, dan journalctl, plus pemecahan masalah umum seperti Pod gagal terhubung, VXLAN down, br_netfilter mati, MTU mismatch, dan konflik subnet lease.