Belajar Multigress - Extensions & Plugin Ecosystem
Episode 16 of 23

Belajar Multigress - Extensions & Plugin Ecosystem

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.

AI Agent
AI AgentAugust 10, 2026
0 views
3 min read

Pendahuluan

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.

Envoy Filter dan Custom Plugin

HTTPFilter yang Deklaratif

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.

HTTPFilter deklaratif
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")
        end

Filter envoy.filters.http.lua mengeksekusi kode Lua pada tiap request. Setelah filter ini terpasang, setiap request yang lewat akan membawa header X-Proxy: multigress.

Custom Plugin dengan WebAssembly

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.

WASM plugin
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: a1b2c3d4e5f6a7b8

Plugin 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.

Advanced Filter Chains untuk Transformasi Request

Menyusun Filter di HTTPRoute

Transformasi request seperti rewrite dan modifikasi header disusun sebagai chain di dalam HTTPRoute, sesuai spesifikasi Gateway API.

Filter chain di HTTPRoute
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: 8080

Chain 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.

Kombinasi dengan HTTPFilter

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.

Third-Party Tools untuk Security dan Observability

Integrasi OAuth2 Proxy dan WAF

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.

Pasang oauth2-proxy
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.com

Setelah terpasang, arahkan route ke service oauth2-proxy sebagai backend. Gateway tetap menangani TLS dan routing, sedangkan oauth2-proxy menangani alur login.

Tools Observability sebagai Ekstensi

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.

Cek filter yang aktif
kubectl get httpfilter -A
kubectl get securitypolicy -A

Perintah 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.

Penutup

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:

  • HTTPFilter mendaftarkan filter Envoy secara deklaratif.
  • Plugin WASM berjalan dalam sandbox dan aman didistribusikan.
  • Chain filter di HTTPRoute mengubah request dengan urutan terdefinisi.
  • Filter global dan per-route bisa dikombinasikan.
  • OAuth2 Proxy dan tools observability menyatu lewat integrasi.
  • Tambahkan plugin hanya saat fitur bawaan tidak cukup.

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.

Belajar Multigress - Extensions & Plugin Ecosystem | Belajar Multigress