HTTPRoute: Pengertian, Cara Kerja, Arsitektur, Komponen, Fungsi, Manfaat, Kelebihan, Kekurangan, dan Implementasinya | Dewa234

HTTPRoute: Pengertian, Cara Kerja, Arsitektur, Komponen, Fungsi, Manfaat, Kelebihan, Kekurangan, dan Implementasinya | Dewa234

HTTPRoute: Pengertian, Cara Kerja, Arsitektur, Komponen, Fungsi, Manfaat, Kelebihan, Kekurangan, dan Implementasinya

Ilustrasi HTTPRoute pada Kubernetes Gateway API

Pada artikel sebelumnya kita telah mempelajari Istio Traffic Management, yaitu kemampuan Istio untuk mengatur bagaimana request mengalir di dalam arsitektur microservices. Kita juga telah memahami bagaimana traffic dapat dibagi menggunakan traffic splitting, diarahkan menggunakan routing, hingga dikontrol menggunakan timeout dan retry.

Selanjutnya, kita akan membahas salah satu resource terpenting dalam Kubernetes Gateway API, yaitu HTTPRoute. Resource ini digunakan untuk menentukan bagaimana permintaan HTTP diproses sebelum diteruskan menuju backend service.

Seiring berkembangnya Kubernetes, Gateway API hadir sebagai pendekatan yang lebih modern dibandingkan Ingress tradisional. Salah satu resource utamanya adalah HTTPRoute yang memungkinkan administrator membuat aturan routing HTTP secara lebih fleksibel, mudah dipahami, dan vendor-neutral.

HTTPRoute didukung oleh berbagai implementasi Gateway API, termasuk Istio. Melalui resource ini administrator dapat melakukan path matching, header matching, redirect, rewrite URL, traffic splitting, hingga menghubungkan beberapa backend service dalam satu konfigurasi.

Pada artikel ini kita akan membahas HTTPRoute secara lengkap mulai dari pengertian, fungsi, arsitektur, cara kerja, komponen, implementasi, contoh konfigurasi YAML, hingga best practice yang umum digunakan pada lingkungan production.


Apa Itu HTTPRoute?

HTTPRoute merupakan resource pada Kubernetes Gateway API yang digunakan untuk menentukan bagaimana request HTTP diproses dan diteruskan menuju backend tertentu.

Jika Gateway dapat dianalogikan sebagai pintu masuk sebuah aplikasi Dewa234, maka HTTPRoute merupakan seperangkat aturan yang menentukan ke mana setiap request harus diarahkan berdasarkan host, path, header HTTP, query parameter, maupun metode HTTP yang digunakan.

Dengan adanya HTTPRoute, administrator tidak perlu lagi membuat logika routing di dalam aplikasi. Semua aturan dapat dikelola secara deklaratif menggunakan file YAML Kubernetes.


Mengapa HTTPRoute Dibutuhkan?

Pada aplikasi sederhana mungkin hanya terdapat satu service sehingga seluruh request dapat langsung diteruskan menuju backend.


Browser
   │
   ▼
Application

Namun pada arsitektur microservices situasinya jauh lebih kompleks.


                Client
                   │
                   ▼
               Gateway API
                   │
         ┌─────────┼─────────┐
         ▼         ▼         ▼
      Product    Order    Payment
      Service    Service   Service

Setiap request harus diarahkan menuju service yang benar sesuai URL yang diminta pengguna. HTTPRoute menyediakan mekanisme untuk melakukan proses tersebut secara terstruktur.


Posisi HTTPRoute pada Gateway API

Gateway API terdiri dari beberapa resource yang saling bekerja sama.


GatewayClass
      │
      ▼
 Gateway
      │
      ▼
 HTTPRoute
      │
      ▼
 Backend Service

Hubungan antar-resource tersebut dapat dijelaskan sebagai berikut:

  • GatewayClass menentukan implementasi Gateway yang digunakan.
  • Gateway menjadi pintu masuk traffic.
  • HTTPRoute menentukan aturan routing HTTP.
  • Backend Service menerima request yang telah diproses.

Dengan pemisahan tersebut konfigurasi menjadi lebih modular dibandingkan pendekatan Ingress klasik.


Bagaimana Cara Kerja HTTPRoute?

Ketika sebuah client mengirim request HTTP, Gateway akan menerima request tersebut terlebih dahulu. Selanjutnya Gateway akan mencari HTTPRoute yang sesuai berdasarkan aturan yang telah dibuat.

Apabila rule berhasil ditemukan, request akan diteruskan menuju backend service yang telah ditentukan.


Browser
    │
HTTP Request
    │
    ▼
Gateway
    │
Find HTTPRoute
    │
    ▼
Matching Rules
    │
    ▼
Backend Service

Proses tersebut berlangsung sangat cepat sehingga pengguna tidak merasakan adanya proses tambahan.


Arsitektur HTTPRoute

HTTPRoute berada di antara Gateway dan backend service.


                 Internet
                     │
                     ▼
                 Load Balancer
                     │
                     ▼
                  Gateway
                     │
             HTTPRoute Rules
                     │
      ┌──────────────┼──────────────┐
      ▼              ▼              ▼
 Product API     Order API     Payment API

Gateway bertugas menerima koneksi dari luar cluster, sedangkan HTTPRoute menentukan bagaimana request diproses berdasarkan rule yang tersedia.


Komponen HTTPRoute

Komponen Fungsi
parentRefs Menghubungkan HTTPRoute dengan Gateway.
hostnames Menentukan hostname yang dilayani.
rules Berisi seluruh aturan routing.
matches Mencocokkan request berdasarkan kondisi tertentu.
backendRefs Menentukan backend tujuan.
filters Melakukan redirect, rewrite, atau modifikasi request.

Fungsi HTTPRoute

HTTPRoute memiliki berbagai fungsi penting dalam pengelolaan lalu lintas HTTP pada Kubernetes.

  • Routing berdasarkan URL.
  • Routing berdasarkan hostname.
  • Routing berdasarkan HTTP Header.
  • Routing berdasarkan HTTP Method.
  • Routing berdasarkan Query Parameter.
  • Traffic Splitting.
  • Request Redirect.
  • URL Rewrite.
  • Menghubungkan Gateway dengan Backend Service.
  • Mengelola routing aplikasi microservices.

Hubungan HTTPRoute dengan Istio

Pada artikel sebelumnya kita membahas bahwa Istio mendukung Kubernetes Gateway API sebagai salah satu pendekatan modern untuk traffic management. Dalam implementasi tersebut, HTTPRoute menjadi resource utama untuk mengatur routing HTTP menuju workload yang berada di dalam service mesh.


Client
   │
   ▼
Gateway
   │
HTTPRoute
   │
Waypoint / Envoy
   │
Backend Service

Pada Ambient Mesh, apabila fitur Layer 7 digunakan, HTTPRoute dapat bekerja bersama Waypoint Proxy sehingga request HTTP tetap dapat diproses berdasarkan rule yang telah didefinisikan.


Keuntungan Menggunakan HTTPRoute

  • Konfigurasi lebih modular.
  • Mudah dibaca.
  • Mudah dipelihara.
  • Mendukung banyak backend.
  • Mendukung traffic splitting.
  • Mendukung URL Rewrite.
  • Mendukung Redirect.
  • Mendukung Header Matching.
  • Mendukung Path Matching.
  • Vendor Neutral.

Ilustrasi Sederhana HTTPRoute


              https://example.com

                     │

                     ▼

                 HTTPRoute

          ┌──────────┼──────────┐

          ▼          ▼          ▼

     /product     /order     /payment

          │          │           │

          ▼          ▼           ▼

     ProductSvc   OrderSvc   PaymentSvc

Dengan konfigurasi seperti di atas, setiap request akan diarahkan ke backend service yang berbeda berdasarkan path URL yang diminta pengguna.


Path Matching pada HTTPRoute

Salah satu kemampuan utama HTTPRoute adalah melakukan routing berdasarkan path URL. Dengan fitur ini, request dapat diarahkan ke backend yang berbeda tergantung jalur URL yang diminta pengguna.

Gateway API menyediakan beberapa jenis pencocokan path yang umum digunakan.

Jenis Match Contoh Keterangan
Exact /login Harus sama persis.
PathPrefix /products Mencocokkan semua path yang diawali prefix tersebut.

Contoh Exact Match:

apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute

metadata:
  name: login-route

spec:

  parentRefs:

  - name: web-gateway

  rules:

  - matches:

    - path:
        type: Exact
        value: /login

    backendRefs:

    - name: auth-service
      port: 8080

Request /login akan diteruskan ke auth-service, sedangkan /login/admin tidak cocok dengan rule tersebut.

Contoh Prefix Match:

apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute

metadata:
  name: product-route

spec:

  parentRefs:

  - name: web-gateway

  rules:

  - matches:

    - path:
        type: PathPrefix
        value: /products

    backendRefs:

    - name: product-service
      port: 8080

Rule tersebut akan mencocokkan:

  • /products
  • /products/1
  • /products/category/books

Header Matching

HTTPRoute juga dapat melakukan routing berdasarkan HTTP header. Fitur ini sangat berguna untuk canary deployment, A/B testing, atau pengujian internal.

apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute

metadata:
  name: beta-route

spec:

  parentRefs:

  - name: web-gateway

  rules:

  - matches:

    - headers:

      - name: x-version
        value: beta

    backendRefs:

    - name: product-v2
      port: 8080

  - backendRefs:

    - name: product-v1
      port: 8080

Dengan konfigurasi tersebut:

  • Request dengan header x-version: beta → product-v2.
  • Request tanpa header tersebut → product-v1.

Client
   │
   ├── x-version: beta ─────► product-v2
   │
   └── no header ───────────► product-v1


Query Parameter Matching

Request juga dapat diarahkan berdasarkan query parameter.

apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute

metadata:
  name: search-route

spec:

  parentRefs:

  - name: web-gateway

  rules:

  - matches:

    - queryParams:

      - name: lang
        value: id

    backendRefs:

    - name: search-id
      port: 8080

  - backendRefs:

    - name: search-default
      port: 8080

Contoh:

  • /search?q=book&lang=id → search-id.
  • /search?q=book → search-default.

HTTP Method Matching

HTTPRoute mendukung pencocokan berdasarkan metode HTTP.

apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute

metadata:
  name: order-route

spec:

  parentRefs:

  - name: web-gateway

  rules:

  - matches:

    - method: GET

    backendRefs:

    - name: order-read
      port: 8080

  - matches:

    - method: POST

    backendRefs:

    - name: order-write
      port: 8080

Dengan rule tersebut:

  • GET /orders → order-read.
  • POST /orders → order-write.

Host-Based Routing

HTTPRoute dapat melayani beberapa domain dalam satu cluster.

apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute

metadata:
  name: multi-host

spec:

  parentRefs:

  - name: web-gateway

  hostnames:

  - api.example.com
  - admin.example.com

  rules:

  - backendRefs:

    - name: api-service
      port: 8080

Request ke api.example.com atau admin.example.com akan diproses oleh route tersebut.


backendRefs

Bagian backendRefs menentukan service tujuan.

backendRefs:
- name: product-service
  port: 8080

HTTPRoute dapat memiliki lebih dari satu backend.

backendRefs:
- name: product-v1
  port: 8080
  weight: 90

- name: product-v2
  port: 8080
  weight: 10

Traffic Splitting dengan HTTPRoute

Salah satu fitur paling penting adalah weighted routing.


              HTTPRoute
                  │
          ┌───────┴───────┐
          ▼               ▼
      product-v1       product-v2
          90%              10%

Konfigurasi lengkap:

apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute

metadata:
  name: product-canary

spec:

  parentRefs:

  - name: web-gateway

  rules:

  - backendRefs:

    - name: product-v1
      port: 8080
      weight: 90

    - name: product-v2
      port: 8080
      weight: 10

Teknik ini umum digunakan untuk canary deployment.


Progressive Delivery

Traffic dapat dinaikkan secara bertahap.


Tahap 1: v1 95% | v2 5%
Tahap 2: v1 90% | v2 10%
Tahap 3: v1 75% | v2 25%
Tahap 4: v1 50% | v2 50%
Tahap 5: v2 100%

Jika versi baru bermasalah, traffic dapat dikembalikan ke versi lama hanya dengan mengubah nilai weight.


Request Redirect

HTTPRoute dapat melakukan redirect HTTP.

apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute

metadata:
  name: redirect-http

spec:

  parentRefs:

  - name: web-gateway

  rules:

  - filters:

    - type: RequestRedirect
      requestRedirect:
        scheme: https
        statusCode: 301

    backendRefs:

    - name: dummy-service
      port: 8080

Request HTTP akan diarahkan ke HTTPS.


URL Rewrite

URL juga dapat diubah sebelum diteruskan ke backend.

apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute

metadata:
  name: rewrite-route

spec:

  parentRefs:

  - name: web-gateway

  rules:

  - matches:

    - path:
        type: PathPrefix
        value: /api

    filters:

    - type: URLRewrite
      urlRewrite:
        path:
          type: ReplacePrefixMatch
          replacePrefixMatch: /

    backendRefs:

    - name: backend-api
      port: 8080

Request /api/users akan diteruskan ke backend sebagai /users.


Contoh Arsitektur E-Commerce


                 https://shop.example.com
                           │
                           ▼
                        Gateway
                           │
                        HTTPRoute
                           │
       ┌───────────────────┼───────────────────┐
       ▼                   ▼                   ▼
 /products             /orders             /payments
       │                   │                   │
       ▼                   ▼                   ▼
 Product Service      Order Service      Payment Service

Dengan satu Gateway dan satu atau beberapa HTTPRoute, seluruh aplikasi dapat dikelola secara terpusat.


HTTPRoute pada Ambient Mesh

Jika digunakan bersama Istio Ambient Mesh, alurnya dapat terlihat seperti berikut:


Client
   │
   ▼
Gateway
   │
HTTPRoute
   │
Waypoint Proxy
   │
Backend Service

HTTPRoute menentukan aturan routing, sedangkan Waypoint Proxy memproses traffic Layer 7 sebelum request mencapai workload tujuan.


Best Practice Menggunakan HTTPRoute

Agar implementasi HTTPRoute tetap mudah dikelola pada lingkungan production, terdapat beberapa praktik terbaik yang sebaiknya diterapkan sejak awal pengembangan. Konfigurasi yang rapi akan mempermudah proses troubleshooting, deployment, maupun scaling ketika jumlah service terus bertambah.

  • Gunakan satu HTTPRoute untuk satu domain atau satu kelompok layanan yang saling berkaitan.
  • Gunakan nama resource yang konsisten agar mudah dikenali.
  • Pisahkan environment Development, Staging, dan Production.
  • Gunakan Path Prefix untuk REST API.
  • Gunakan Header Matching hanya jika benar-benar diperlukan.
  • Dokumentasikan seluruh rule routing.
  • Gunakan Traffic Splitting ketika melakukan Canary Deployment.
  • Lakukan pengujian setiap perubahan sebelum diterapkan ke Production.
  • Gunakan HTTPS pada seluruh endpoint.
  • Monitor latency, error rate, dan throughput secara berkala.

Monitoring HTTPRoute

Setelah HTTPRoute diterapkan, administrator sebaiknya tidak hanya memastikan request berhasil diteruskan ke backend, tetapi juga memantau performa layanan secara menyeluruh.


HTTPRoute

      │

      ▼

Gateway

      │

      ▼

Metrics

 ├── Request Rate

 ├── Latency

 ├── Error Rate

 └── Response Time

Melalui observability, administrator dapat mengetahui apakah perubahan routing memberikan dampak terhadap performa aplikasi maupun pengalaman pengguna.


Troubleshooting HTTPRoute

1. Request Menghasilkan 404 Not Found

Masalah ini biasanya terjadi karena path yang diminta tidak cocok dengan rule pada HTTPRoute atau hostname yang digunakan tidak sesuai dengan konfigurasi.


Client

   │

404

   │

Check Path

Check Hostname

2. Backend Tidak Menerima Request

Pastikan backend service telah berjalan dengan baik dan nama service pada backendRefs sesuai dengan Service Kubernetes yang tersedia.


kubectl get svc

kubectl get endpoints

3. Traffic Tidak Terbagi Sesuai Weight

Traffic splitting bekerja berdasarkan probabilitas sehingga distribusi tidak selalu terlihat sama dalam jumlah request yang kecil. Lakukan pengujian menggunakan jumlah request yang lebih banyak agar distribusi lebih terlihat.

4. Hostname Tidak Cocok

Periksa kembali konfigurasi DNS maupun nilai hostnames pada HTTPRoute.


Kelebihan HTTPRoute

  • Standar resmi Kubernetes Gateway API.
  • Konfigurasi lebih fleksibel dibandingkan Ingress tradisional.
  • Mendukung routing berdasarkan Hostname.
  • Mendukung Path Matching.
  • Mendukung Header Matching.
  • Mendukung Query Parameter Matching.
  • Mendukung URL Rewrite.
  • Mendukung HTTP Redirect.
  • Mendukung Traffic Splitting.
  • Mudah diintegrasikan dengan Istio.
  • Skalabel untuk arsitektur Microservices.
  • Vendor Neutral sehingga tidak bergantung pada satu implementasi tertentu.

Kekurangan HTTPRoute

  • Membutuhkan Gateway API.
  • Belum seluruh implementasi Gateway memiliki dukungan fitur yang sama.
  • Konfigurasi dapat menjadi kompleks apabila jumlah service sangat banyak.
  • Membutuhkan pemahaman mengenai Kubernetes Networking.
  • Administrator perlu memahami hubungan Gateway, GatewayClass, dan HTTPRoute.

Contoh Implementasi pada E-Commerce

Bayangkan sebuah platform e-commerce memiliki beberapa layanan seperti Product, Cart, Order, Payment, dan User. Seluruh request dari pengguna masuk melalui satu Gateway.


                 Internet

                     │

                     ▼

                  Gateway

                     │

                 HTTPRoute

      ┌──────────┼──────────┬──────────┐

      ▼          ▼          ▼          ▼

 Product      Cart      Order     Payment

 Service     Service    Service    Service

Dengan pendekatan tersebut, administrator dapat mengelola seluruh routing dari satu titik konfigurasi tanpa perlu mengubah kode aplikasi pada masing-masing service.


Hubungan HTTPRoute dengan Artikel Sebelumnya

Apabila diurutkan berdasarkan pembahasan sebelumnya, hubungan antar teknologi menjadi seperti berikut.


Ambient Mesh

      │

      ▼

Waypoint Proxy

      │

      ▼

Istio Traffic Management

      │

      ▼

HTTPRoute

Ambient Mesh menyediakan data plane, Waypoint Proxy memberikan kemampuan Layer 7, Istio Traffic Management mengatur aliran traffic, sedangkan HTTPRoute mendefinisikan aturan routing HTTP yang digunakan oleh Gateway API.


Baca Juga

Silakan ganti tautan di atas dengan URL artikel yang sesuai pada Blogger Anda.


Artikel Selanjutnya

Setelah memahami HTTPRoute, pembahasan berikutnya akan berfokus pada bagaimana mengamankan komunikasi antar workload menggunakan kebijakan otorisasi pada Istio.


HTTPRoute

     │

     ▼

Authorization Policy

     │

     ▼

Authentication

     │

     ▼

PeerAuthentication (mTLS)

Melalui Authorization Policy, administrator dapat menentukan workload mana yang boleh mengakses service tertentu berdasarkan identitas, namespace, hingga metode HTTP yang digunakan.


Pertanyaan yang Sering Diajukan (FAQ)

Apa itu HTTPRoute?

HTTPRoute adalah resource pada Kubernetes Gateway API yang digunakan untuk mengatur bagaimana request HTTP diarahkan menuju backend service berdasarkan rule tertentu.

Apa fungsi utama HTTPRoute?

Fungsi utamanya adalah mengelola routing HTTP menggunakan aturan seperti path, hostname, header, query parameter, maupun metode HTTP.

Apakah HTTPRoute menggantikan Ingress?

Gateway API dirancang sebagai evolusi dari Ingress dengan kemampuan yang lebih fleksibel dan modular. Pada banyak skenario modern, HTTPRoute menjadi pilihan yang lebih kaya fitur.

Apakah HTTPRoute dapat digunakan bersama Istio?

Ya. Istio mendukung Gateway API sehingga HTTPRoute dapat digunakan sebagai salah satu resource untuk mengatur traffic HTTP pada service mesh.

Apa itu backendRefs?

backendRefs adalah bagian dari HTTPRoute yang menentukan backend service tujuan setelah request berhasil dicocokkan dengan rule yang tersedia.

Apa manfaat Traffic Splitting?

Traffic Splitting memungkinkan administrator membagi request ke beberapa backend berdasarkan persentase tertentu, misalnya untuk Canary Deployment atau A/B Testing.

Apakah HTTPRoute mendukung URL Rewrite?

Ya. HTTPRoute dapat melakukan rewrite path sebelum request diteruskan ke backend sesuai implementasi Gateway yang digunakan.

Apa perbedaan Gateway dan HTTPRoute?

Gateway bertugas menerima koneksi dari luar cluster, sedangkan HTTPRoute menentukan bagaimana request HTTP diproses dan diarahkan menuju backend.

Apakah HTTPRoute hanya dapat digunakan pada Kubernetes?

HTTPRoute merupakan bagian dari Kubernetes Gateway API sehingga digunakan pada lingkungan Kubernetes yang memiliki implementasi Gateway API.

Mengapa HTTPRoute penting pada arsitektur Microservices?

Karena HTTPRoute mempermudah pengelolaan routing HTTP ketika aplikasi terdiri dari banyak service yang saling berkomunikasi.


Kesimpulan

HTTPRoute merupakan salah satu resource utama dalam Kubernetes Gateway API yang berfungsi mengatur bagaimana request HTTP diproses sebelum diteruskan menuju backend service. Dengan dukungan fitur seperti Path Matching, Hostname Matching, Header Matching, URL Rewrite, Redirect, hingga Traffic Splitting, HTTPRoute menjadi fondasi penting dalam pengelolaan lalu lintas aplikasi modern.

Dibandingkan pendekatan Ingress tradisional, HTTPRoute menawarkan konfigurasi yang lebih modular dan fleksibel sehingga lebih mudah diterapkan pada arsitektur microservices berskala besar. Dukungan terhadap Gateway API juga membuatnya dapat digunakan oleh berbagai implementasi, termasuk Istio.

Bagi organisasi yang mulai membangun platform cloud-native, memahami HTTPRoute merupakan langkah penting sebelum mempelajari kebijakan keamanan seperti Authorization Policy, Authentication, maupun mTLS yang akan dibahas pada artikel berikutnya.

Postingan populer dari blog ini

Istio Egress Gateway: Pengertian, Cara Kerja, Arsitektur, Komponen, Fungsi, Manfaat, Kelebihan, Kekurangan, dan Implementasinya | Dewa234

Istio VirtualService: Pengertian, Cara Kerja, Arsitektur, Komponen, Fungsi, Manfaat, Kelebihan, Kekurangan, dan Implementasinya | Dewa234

Istio Ingress Gateway: Pengertian, Cara Kerja, Arsitektur, Komponen, Fungsi, Manfaat, Kelebihan, Kekurangan, dan Implementasinya | Dewa234