Episode ini membahas penyimpanan manifest Multigress di Git, validasi perubahan konfigurasi dan pola rollout yang aman, serta pengelolaan overlay environment dengan GitOps.

Mengubah gateway lewat kubectl apply sembarangan adalah resep bencana: tidak ada riwayat, tidak ada review, dan sulit dirollback. Episode 11 memperkenalkan configuration management dan GitOps untuk konfigurasi Multigress — menyimpan semua manifest di Git, memvalidasi setiap perubahan, dan menerapkan pola rollout yang aman.
Prinsip GitOps sederhana: Git adalah sumber kebenaran, dan agent seperti Argo CD atau Flux menyinkronkan apa yang ada di Git ke cluster. Perubahan dimulai sebagai pull request, bukan sebagai perintah kubectl.
Pisahkan konfigurasi per environment dan per fungsi. Contoh struktur:
config/
base/
gateway.yaml
gatewayclass.yaml
overlays/
staging/
kustomization.yaml
httproute-tenant-a.yaml
prod/
kustomization.yaml
httproute-tenant-a.yaml
securitypolicy.yamlBagian base berisi manifest yang sama untuk semua environment, sedangkan overlays menambahkan perbedaan per environment. Ini memakai pola Kustomize yang umum di ekosistem GitOps.
Argo CD akan menyinkronkan aplikasi ke cluster:
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: multigress-config
namespace: argocd
spec:
project: default
source:
repoURL: https://github.com/example/multigress-gitops
targetRevision: HEAD
path: config/overlays/prod
destination:
server: https://kubernetes.default.svc
namespace: multigress-system
syncPolicy:
automated:
prune: true
selfHeal: truePerintah kubectl get app multigress-config -n argocd menampilkan status sinkronisasi. Dengan selfHeal: true, setiap perubahan manual di cluster akan dikembalikan ke kondisi Git — inilah yang membuat konfigurasi kembali terkendali.
Jangan pernah membiarkan manifest yang salah masuk ke cluster. Validasi dilakukan berlapis di pipeline CI (detail di episode 19):
kubectl apply --dry-run=client -f config/overlays/prod -kPerintah kubectl apply --dry-run=client -k config/overlays/prod memeriksa sintaks tanpa mengubah cluster. Untuk validasi skema terhadap CRD, bisa memakai tool seperti kubeconform:
kubeconform -strict -summary -c \
config/overlays/prod/httroute-tenant-a.yamlValidasi ini menangkap typo field sebelum manifest menembus Argo CD.
Sebelum sync, lihat perbedaan antara Git dan cluster:
argocd app diff multigress-configPerintah argocd app diff multigress-config menampilkan persis apa yang akan berubah. Gabungkan dengan pola canary dari episode 9 untuk perubahan yang lebih besar dari sekadar route.
Perubahan konfigurasi gateway juga perlu pola rollout:
Setiap pola didokumentasikan dalam runbook — topik yang akan kita sempurnakan di episode 21.
Environment staging dan prod berbeda dalam beberapa hal: hostname, rate limit, dan jumlah replika. Overlay memusatkan perbedaan tersebut:
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../../base
- httproute-tenant-a.yaml
patches:
- target:
kind: HTTPRoute
name: tenant-a-route
patch: |-
- op: replace
path: /spec/hostnames
value:
- staging.example.comOverlay staging mengganti hostname menjadi staging.example.com. Manifes base tetap bersih dari perbedaan environment — perubahan apa pun cukup dilakukan di satu tempat.
Cek bahwa semua environment masih ter-render tanpa error:
kubectl kustomize config/overlays/staging > /dev/null
kubectl kustomize config/overlays/prod > /dev/nullDua perintah di atas memastikan overlay staging dan prod valid. Perintah kubectl kustomize config/overlays/prod menghasilkan manifest akhir yang akan diterapkan — inilah yang sebenarnya disinkronkan Argo CD.
Tip
Jadikan repo GitOps sebagai satu-satunya pintu perubahan konfigurasi gateway. Matikan akses tulis kubectl untuk resource gateway di produksi, misalnya lewat RBAC, sehingga tidak ada perubahan yang melewati review.
Episode 11 menempatkan konfigurasi Multigress di tempat yang benar: di Git. Kalian tahu cara menyusun base dan overlay, memvalidasi perubahan sebelum sync, serta menerapkan pola rollout yang aman untuk setiap jenis perubahan.
Inti yang harus dibawa pulang:
base dan overlays per environment.Di episode 12 selanjutnya kita akan membahas security policies & access control — gatekeeping akses dengan AuthorizationPolicy, JWT authentication dan integrasi external auth, serta pengamanan route dengan mutual TLS dan validasi sertifikat. Konfigurasi GitOps kalian adalah tempat yang tepat untuk menambahkan lapisan keamanan ini.