Episode 18 mengotomatiskan perubahan mesh: GitOps untuk CRD Istio, progressive delivery dengan Argo Rollouts dan Flagger, serta analisis otomatis istioctl analyze di pipeline untuk menggating perubahan traffic dengan aman.

Konfigurasi Istio yang baik tidak diterapkan lewat kubectl apply langsung di produksi. Episode 18 ini membahas cara yang benar: perubahan mengalir lewat pipeline, tervalidasi otomatis, dan traffic dipindah secara bertahap dengan progressive delivery. Ini puncak dari praktik yang kita bangun di episode 9.
Semua CRD Istio disimpan di repository sebagai YAML. Perubahan dilakukan lewat pull request; ArgoCD atau Flux menyinkronkan ke cluster:
istioctl analyze untuk validasi.istioctl analyze --all-namespaces
istioctl analyze -f changes/virtualservice.yamlistioctl analyze -f changes/virtualservice.yaml memvalidasi perubahan terhadap cluster saat ini sebelum merge. Gagalkan pipeline jika ada Error; anggap Warning sebagai kandidat review.
Satu repo, banyak environment:
istio-config/
├── base/
├── overlays/
│ ├── staging/
│ └── production/
└── app-manifests/ArgoCD Application per environment memakai path berbeda dengan nilai berbeda. Kunci secret (misalnya credentialName untuk TLS) disuntikkan dari Kubernetes Secret per cluster, bukan disimpan di repo.
Argo Rollouts menggantikan Deployment untuk canary yang dikontrol traffic weight:
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
name: productpage
spec:
strategy:
canary:
canaryService: productpage-canary
stableService: productpage
trafficRouting:
istio:
virtualService:
name: productpage-vsvc
routes:
- primary
steps:
- setWeight: 10
- pause: {duration: 5m}
- setWeight: 50
- pause: {duration: 5m}trafficRouting.istio memberi tahu Argo Rollouts untuk memodifikasi VirtualService productpage-vsvc sesuai weight. Setiap step menaikkan weight lalu berhenti untuk observasi — jika metrik memburuk, pipeline bisa membatalkan dan kembali ke versi stabil.
Flagger bekerja serupa, tetapi dengan pendekatan automated analysis: ia mengukur metrik (misalnya error rate dari Prometheus) dan memutuskan naik, tahan, atau rollback:
apiVersion: flagger.app/v1beta1
kind: Canary
metadata:
name: productpage
spec:
targetRef:
apiVersion: apps/v1
kind: Deployment
name: productpage
service:
port: 9080
analysis:
interval: 1m
threshold: 5
metrics:
- name: error-rate
templateRef:
name: error-rate
thresholdRange:
max: 2threshold: 5 berarti setelah lima evaluasi melanggar, canary di-rollback otomatis. Flagger memanggil metrik error rate dan memutuskan secara mandiri — lebih sedikit campur tangan manual daripada weight manual.
istioctl analyze atas perubahan.Jadikan istioctl analyze bagian dari pipeline CI, bukan hanya kebiasaan manual:
istioctl analyze -f manifest/ > analyze.txt || exit 1
grep -E "Error" analyze.txt && exit 1 || echo "konfigurasi aman"Script sederhana ini menolak pipeline saat ditemukan Error pada konfigurasi. Kombinasi analisis statis (sebelum deploy) dan analisis traffic (selama canary) memberikan dua lapis perlindungan.
Tip
Selalu kombinasikan analisis statis dengan observasi runtime. Konfigurasi yang valid secara sintaks bisa tetap salah secara logika — misalnya weight yang menuju subset tanpa Pod.
Episode 18 mengotomatiskan perubahan mesh: GitOps dengan ArgoCD atau Flux untuk CRD Istio, progressive delivery dengan Argo Rollouts dan Flagger, serta analisis otomatis istioctl analyze yang menggating perubahan traffic sebelum masuk produksi.
Inti yang harus dibawa pulang:
istioctl analyze di pipeline menolak perubahan rusak lebih awal.Di episode 19 selanjutnya kita akan menguji mesh secara menyeluruh: testing service mesh (integration dan e2e) — strategi integrasi dengan test cluster, simulasi traffic, contract testing, load testing, dan chaos experiments untuk membuktikan ketahanan.