Episode ini membahas integrasi dengan Envoy filters dan custom plugin, advanced filter chain untuk transformasi request, serta pemanfaatan tools pihak ketiga untuk keamanan dan observability.

Kebutuhan gateway tidak pernah berhenti di routing dan keamanan standar. Episode 16 membahas extensions dan plugin ecosystem Multigress: memperluas data plane dengan Envoy filters dan custom plugin, menyusun advanced filter chain untuk transformasi request, serta menggabungkan tools pihak ketiga untuk keamanan dan observability.
Kuncinya adalah tahu kapan memakai fitur bawaan dan kapan menambah plugin. Ekstensi yang berlebihan justru menjadi beban operasional.
Multigress mengekspos kemampuan Envoy lewat CRD HTTPFilter, sehingga filter bisa didaftarkan secara deklaratif tanpa menyentuh konfigurasi bootstrap. Contoh di bawah menambahkan header lewat filter Lua.
apiVersion: gateway.multigress.io/v1
kind: HTTPFilter
metadata:
name: custom-header-filter
spec:
type: Envoy
envoy:
name: envoy.filters.http.lua
typedConfig:
inlineCode: |
function envoy_on_request(request_handle)
request_handle:headers():add("X-Proxy", "multigress")
endFilter envoy.filters.http.lua mengeksekusi kode Lua pada tiap request. Setelah filter ini terpasang, setiap request yang lewat akan membawa header X-Proxy: multigress.
Untuk logika yang lebih kompleks, gunakan plugin WebAssembly yang dikompilasi dari bahasa seperti Rust atau Go. Plugin WASM dieksekusi dalam sandbox, sehingga bug di plugin tidak mem-boom seluruh proxy.
apiVersion: gateway.multigress.io/v1
kind: HTTPFilter
metadata:
name: wasm-rewrite
spec:
type: Wasm
wasm:
url: oci://registry.example.com/multigress/plugins/rewrite:v1
sha256: a1b2c3d4e5f6a7b8Plugin WASM di-pull dari registry OCI dan diverifikasi dengan sha256 sebelum dimuat. Ukuran WASM yang kecil membuat distribusi plugin cepat dan update bisa dilakukan tanpa merombak gateway.
Transformasi request seperti rewrite dan modifikasi header disusun sebagai chain di dalam HTTPRoute, sesuai spesifikasi Gateway API.
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: api-route
namespace: platform
spec:
parentRefs:
- name: multigress-gateway
hostnames:
- api.example.com
rules:
- filters:
- type: URLRewrite
urlRewrite:
path:
type: ReplacePrefixMatch
replacePrefixMatch: /v1
- type: RequestHeaderModifier
requestHeaderModifier:
set:
- name: X-Client
value: mobile
backendRefs:
- name: api-svc
port: 8080Chain di atas menghapus prefix lama dan menggantinya dengan /v1, lalu menambahkan header X-Client: mobile. Urutan filter penting: rewrite dijalankan sebelum header dimodifikasi, dan hasil akhir yang dilihat backend adalah hasil semua transformasi.
Filter global dan chain di route bisa digabung. Filter global menangani kebutuhan lintas semua route, sementara chain di route menangani kebutuhan spesifik satu hostname. Pemisahan ini membuat konfigurasi mudah dipahami dan di-review.
Alih-alih menulis filter sendiri, kalian bisa menempatkan tools mapan di depan atau di belakang gateway. OAuth2 Proxy, misalnya, menangani alur OIDC tanpa perlu menulis kode.
helm repo add oauth2-proxy https://oauth2-proxy.github.io/manifests
helm install oauth2-proxy oauth2-proxy/oauth2-proxy \
--namespace oauth2-proxy --create-namespace \
--set config.oidcIssuerUrl=https://auth.example.comSetelah terpasang, arahkan route ke service oauth2-proxy sebagai backend. Gateway tetap menangani TLS dan routing, sedangkan oauth2-proxy menangani alur login.
Ekosistem di luar gateway juga layak disambungkan: vector atau fluent-bit untuk log shipping, Loki untuk agregasi, dan OPA untuk policy. Semuanya dipasang sebagai service terpisah dan dihubungkan ke gateway lewat konfigurasi yang sudah kita bahas di episode 12 dan 14.
kubectl get httpfilter -A
kubectl get securitypolicy -APerintah kubectl get httpfilter -A menampilkan semua filter global yang terdaftar. Ringkasnya: tambahkan plugin hanya jika fitur bawaan sudah terbukti tidak cukup.
Warning
Setiap plugin menambah permukaan kegagalan dan beban pemeliharaan. Daftarkan alasan pemasangan setiap ekstensi pada dokumentasi agar tidak menjadi konfigurasi yatim.
Episode 16 membuka cara memperpanjang gateway: HTTPFilter untuk kemampuan Envoy, WASM untuk plugin sandbox, chain filter di HTTPRoute untuk transformasi, serta tools pihak ketiga yang menyatu dengan ekosistem.
Inti yang harus dibawa pulang:
Di episode 17 selanjutnya kita akan membahas multi-cluster & hybrid deployments — routing lintas cluster, pola ekspos service multi-cluster, dan pertimbangan networking untuk cloud hybrid. Kemampuan gateway yang kalian perpanjang akan dipakai di topologi yang lebih luas.