Episode 19 membuktikan mesh bekerja sebelum produksi: strategi integrasi dengan test cluster, simulasi traffic dan contract testing, load testing dengan k6 atau fortio, serta chaos experiments untuk menguji ketahanan terhadap network faults.

Konfigurasi yang valid secara statis belum tentu benar secara perilaku. Episode 19 ini membahas cara menguji mesh secara nyata — dari integrasi di test cluster, simulasi dan contract testing, load testing, sampai chaos experiments yang membuktikan sistem tetap hidup saat sesuatu rusak.
Setiap perubahan penting pada konfigurasi mesh harus diuji di cluster yang menyerupai produksi: versi Istio yang sama, profile yang sama, dan jumlah service yang representatif. Jenis cluster yang biasa dipakai:
kind create cluster --name mesh-e2e --config cluster-e2e.yaml
istioctl install --set profile=default -y
kubectl apply -f samples/bookinfo/Uji kebijakan yang sama di cluster ini sebelum menyentuh staging produksi.
Setelah service terpasang, hasilkan traffic nyata untuk memastikan routing bekerja:
kubectl exec deploy/productpage-v1 -c istio-proxy -- curl -s http://reviews:9080/reviews/0
kubectl exec deploy/productpage-v1 -c istio-proxy -- curl -s http://details:9080/details/0kubectl exec ... -c istio-proxy -- curl menjalankan request dari sisi sidecar, memastikan traffic benar-benar lewat mesh dan bukan shortcut.
Contract test memastikan service pemanggil dan penerima sepakat pada kontrak (path, header, payload). Ini krusial saat routing diubah: request yang valid di sisi klien harus tetap valid di sisi server. Contoh paling sederhana: snapshot virtualservice yang diharapkan lalu dibandingkan dengan yang terpasang.
Di test cluster, pastikan setiap perubahan benar-benar sampai ke proxy:
istioctl proxy-status | grep SYNCED
istioctl analyze --all-namespacesistioctl analyze --all-namespaces menjadi gate otomatis: tidak boleh ada Error sebelum test lanjut. Kombinasi dengan proxy-status membuktikan konfigurasi tersebar.
Load testing di dalam mesh memerlukan perhatian khusus: sidecar menambah latensi dan resource. Ukur baseline tanpa mesh lalu dengan mesh agar overheadnya terlihat:
fortio load -c 100 -qps 1000 -t 60s http://productpage:9080/productpagefortio load -c 100 -qps 1000 mengirim 1000 request per detik selama 60 detik. Perhatikan metrik: p50/p99 latency, error rate, dan istio_requests_total di Prometheus. Overhead 1-5 persen latency adalah normal; lonjakan besar menandakan tuning yang buruk (episode 14).
Setelah load test, cek distribusi hasil:
rate(istio_requests_total{destination_service="productpage.default.svc.cluster.local",response_code="500"}[5m])Jika muncul 500 selama beban tinggi, periksa connection pool dan outlier detection — bukan langsung menaikkan resource.
Chaos experiments memakai fault injection (episode 7) untuk membuktikan sistem pulih:
fault.abort 50 persen pada satu subset.Selain fault di level mesh, uji kegagalan di level infrastruktur: restart istiod, matikan node, atau hentikan satu backend Pod:
kubectl delete pod -l version=v1
kubectl rollout restart deployment/reviews-v2
kubectl get pods -l app=reviews -o widekubectl delete pod -l version=v1 mensimulasikan kehilangan backend. Perhatikan bagaimana outlier detection mengarahkan traffic dan berapa cepat konvergensi kembali. Catat semua hasil dalam runbook — episode 22 akan memakai bukti ini.
Warning
Jangan pernah menjalankan chaos experiment di produksi tanpa jendela waktu yang disepakati, monitoring yang menyala, dan rencana rollback yang siap. Mulai dari staging dulu.
Episode 19 membuktikan mesh bekerja: strategi integrasi dengan test cluster dan simulasi traffic, contract testing dan verifikasi sinkronisasi, load testing dengan fortio atau k6, serta chaos experiments untuk membuktikan pemulihan dari kegagalan.
Inti yang harus dibawa pulang:
istioctl analyze dan proxy-status adalah gate otomatis di test cluster.Di episode 20 selanjutnya kita akan memanjakan mata di skala besar: observability at scale dan correlation — menangani metrik ber-kardinalitas tinggi, strategi sampling trace, agregasi log, serta SLO, SLI, dan alerting yang disetel untuk perilaku mesh.