Episode 9 menjaga konfigurasi mesh tetap sehat: istioctl analyze untuk memvalidasi CRD, membaca proxy status dan config dump, memakai EnvoyFilter dengan hati-hati, serta mengelola drift lewat GitOps dengan ArgoCD atau Flux.

Seiring mesh tumbuh, jumlah CRD Istio bertambah: VirtualService di sana, DestinationRule di sini, AuthorizationPolicy di namespace lain. Tanpa disiplin, konfigurasi menjadi tidak terkendali — dan kesalahan konfigurasi yang nyaris tak terlihat bisa membuat traffic diam-diam salah rute. Episode 9 ini membahas cara memvalidasi, memeriksa, dan mengelola konfigurasi Istio dengan benar.
istioctl analyze memindai seluruh konfigurasi mesh dan mencari masalah:
istioctl analyze -n defaultistioctl analyze -n default memeriksa konfigurasi di namespace default. Ia menangkap berbagai masalah: VirtualService yang merujuk host yang tidak ada, DestinationRule tanpa subset yang dipakai, sampai konfigurasi yang melanggar aturan validasi istiod. Untuk seluruh cluster tanpa filter namespace:
istioctl analyze --all-namespacesOutput memiliki tingkat keparahan: Info, Warning, dan Error. Jangan menutup mata terhadap Warning — banyak di antaranya (misalnya host tidak ditemukan) menandakan konfigurasi yang tidak akan bekerja seperti yang kalian harapkan.
Bentuk paling berharga: menganalisis sebelum konfigurasi benar-benar diterapkan:
istioctl analyze -f routing-baru.yamlistioctl analyze -f routing-baru.yaml memvalidasi manifest terhadap state cluster saat ini. Menjalankan ini di pipeline CI (episode 18) jauh lebih murah daripada menemukan bug routing di produksi.
Validasi statis hanya sebagian cerita. Kalian juga perlu memastikan konfigurasi benar-benar sampai ke Envoy:
istioctl proxy-status
istioctl proxy-config cluster productpage-abc123
istioctl proxy-config listener productpage-abc123istioctl proxy-status menampilkan kolom sinkronisasi setiap sidecar dengan istiod. Jika ada workload STALE atau NOT SENT, selidiki koneksi sidecar ke istiod. proxy-config cluster dan proxy-config listener menunjukkan konfigurasi xDS yang nyata di sebuah proxy — bukti terakhir apakah CRD diterjemahkan dengan benar.
EnvoyFilter memungkinkan kalian mem-patch konfigurasi Envoy secara mentah. Ini alat paling kuat sekaligus paling berbahaya di Istio:
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
name: tambah-header
namespace: istio-system
spec:
configPatches:
- applyTo: HTTP_FILTER
match:
context: SIDECAR_INBOUND
listener:
filterChain:
filter:
name: envoy.filters.network.http_connection_manager
subFilter:
name: envoy.filters.http.router
patch:
operation: INSERT_BEFORE
value:
name: envoy.filters.http.lua
typed_config:
"@type": type.googleapis.com/envoy.extensions.filters.http.lua.v3.Lua
inlineCode: |
function envoy_on_request(request_handle)
request_handle:headers():add("x-added-by", "mesh")
endPraktik terbaik yang wajib dipegang:
istio-system dengan configPatches yang se-spesifik mungkin agar tidak mengenai proxy lain.Warning
EnvoyFilter adalah API yang berubah antar versi Envoy. Manifest yang valid di Istio 1.21 bisa rusak di 1.22. Dokumentasikan versi yang dipakai dan sertakan dalam jadwal upgrade.
GitOps menempatkan konfigurasi Istio di repository sebagai sumber kebenaran, lalu operator seperti ArgoCD atau Flux menyinkronkannya ke cluster:
kubectl apply langsung.Manfaat terbesar GitOps adalah manajemen drift: jika seseorang mengubah konfigurasi langsung di cluster, operator akan mengembalikannya sesuai repo. Rollback pun sederhana — revert commit di repo, operator menormalkan kembali. Ini melengkapi strategi backup yang akan kita bahas di episode 21.
Struktur repo yang disarankan:
istio-config/
├── base/ # CRD dan konfigurasi dasar mesh
├── environments/
│ ├── staging/
│ └── production/
└── apps/
├── productpage/
└── reviews/Memisahkan environments dari apps memungkinkan aturan yang berbeda untuk staging dan produksi tanpa menduplikasi seluruh konfigurasi.
Episode 9 menjaga kesehatan konfigurasi mesh: validasi dengan istioctl analyze sebelum dan sesudah apply, pemeriksaan sinkronisasi dengan proxy-status, penggunaan EnvoyFilter yang disiplin, serta GitOps untuk mengelola perubahan dan drift.
Inti yang harus dibawa pulang:
istioctl analyze menangkap masalah konfigurasi secara statis.proxy-status dan proxy-config membuktikan konfigurasi sampai ke Envoy.Di episode 10 selanjutnya kita akan memperluas mesh: service discovery dan external services — ServiceEntry dengan endpoint statis atau DNS, pola WorkloadEntry dan WorkloadGroup, serta mesh expansion untuk menghubungkan VM dan jaringan eksternal ke dalam mesh.