Gateway API: Pengertian, Cara Kerja, Arsitektur, Komponen, Manfaat, Kelebihan, Kekurangan, dan Implementasinya | Dewa234

Gateway API: Pengertian, Cara Kerja, Arsitektur, Komponen, Manfaat, Kelebihan, Kekurangan, dan Implementasinya | Dewa234

Gateway API: Pengertian, Cara Kerja, Arsitektur, Komponen, Manfaat, Kelebihan, Kekurangan, dan Implementasinya

Ilustrasi Gateway API Kubernetes untuk mengatur routing traffic dari client menuju Service dan aplikasi dalam cluster.

Setelah memahami Service Mesh dan Linkerd, pembahasan berikutnya adalah Gateway API. Teknologi ini menjadi bagian penting dalam perkembangan networking Kubernetes karena menyediakan mekanisme yang lebih ekspresif dan terstruktur untuk mengatur traffic menuju aplikasi Dewa234.

Dalam aplikasi modern berbasis Kubernetes, kebutuhan networking tidak hanya sebatas membuka akses menuju Service. Administrator dan developer juga membutuhkan routing berdasarkan hostname, path, header, pembagian traffic, pengelolaan listener, serta pemisahan tanggung jawab antara infrastructure provider, cluster operator, dan application developer.

Gateway API dirancang untuk memenuhi kebutuhan tersebut. Gateway API merupakan kumpulan API Kubernetes yang menyediakan provisioning infrastruktur dinamis dan advanced traffic routing dengan pendekatan yang extensible, role-oriented, dan protocol-aware. :contentReference[oaicite:1]{index=1}

Apa Itu Gateway API?

Gateway API adalah kumpulan resource API untuk Kubernetes yang digunakan untuk mengatur akses dan routing traffic jaringan menuju aplikasi dan Service di dalam cluster.

Gateway API dikembangkan sebagai API yang lebih ekspresif dibandingkan pendekatan Ingress tradisional. Resource Gateway API memungkinkan konfigurasi networking dipisahkan berdasarkan peran sehingga infrastructure provider, cluster operator, dan application developer dapat memiliki tanggung jawab yang berbeda.

Gateway API didefinisikan sebagai Custom Resource Definition (CRD) dan dapat didukung oleh berbagai implementasi atau controller. Artinya, Gateway API bukan sebuah proxy tunggal, melainkan spesifikasi API yang dapat diimplementasikan oleh berbagai solusi networking. :contentReference[oaicite:2]{index=2}

Mengapa Gateway API Dibutuhkan?

Kubernetes telah menyediakan Ingress untuk mengatur akses HTTP dan HTTPS menuju Service. Namun, kebutuhan aplikasi modern sering kali lebih kompleks.

Administrator dapat membutuhkan:

  • Routing berdasarkan hostname.
  • Routing berdasarkan path.
  • Routing berdasarkan HTTP header.
  • Traffic splitting.
  • Pengelolaan listener.
  • Pemisahan tanggung jawab antar-role.
  • Cross-namespace routing.
  • HTTP dan HTTPS routing.
  • GRPC routing.
  • TCP dan TLS routing.
  • Integrasi dengan load balancer.

Gateway API dirancang agar kebutuhan tersebut dapat dikonfigurasi melalui resource Kubernetes yang lebih terstruktur dan extensible. :contentReference[oaicite:3]{index=3}

Gateway API dan Kubernetes

Gateway API tidak menggantikan Kubernetes. Gateway API justru berjalan sebagai bagian dari ekosistem Kubernetes networking.

                    Kubernetes
                        │
            ┌───────────┴───────────┐
            │                       │
         Service                 Gateway API
                                    │
                   ┌────────────────┼────────────────┐
                   ▼                ▼                ▼
              GatewayClass       Gateway         HTTPRoute
                   │                │                │
                   └────────────────┼────────────────┘
                                    ▼
                                  Service
                                    │
                                    ▼
                                   Pod

Kubernetes menyediakan workload, Pod, Service, dan networking dasar. Gateway API menambahkan model API untuk mengelola traffic masuk dan routing secara lebih fleksibel.

Gateway API dan Ingress

Gateway API sering dibandingkan dengan Ingress karena keduanya dapat digunakan untuk mengatur traffic HTTP menuju aplikasi Kubernetes.

Namun, Gateway API memiliki model resource yang lebih kaya dan dirancang dengan prinsip role-oriented serta extensible.

Aspek Ingress Gateway API
Model Resource Ingress. Beberapa resource dengan tanggung jawab berbeda.
Routing HTTP/HTTPS dengan kemampuan terbatas. Lebih ekspresif.
Role separation Terbatas. Dirancang berdasarkan role.
Header matching Sering membutuhkan anotasi implementasi. Didukung sebagai bagian dari model routing.
Traffic weighting Sering membutuhkan konfigurasi khusus. Didukung oleh model Gateway API.
Extensibility Terbatas. Dirancang extensible.
Cross namespace Lebih terbatas. Dapat dikontrol dengan mekanisme trust seperti ReferenceGrant.

Gateway API merupakan penerus konsep API Ingress, tetapi bukan resource Ingress itu sendiri. Migrasi dari Ingress ke Gateway API membutuhkan konversi resource. :contentReference[oaicite:4]{index=4}

Prinsip Desain Gateway API

Gateway API dibangun berdasarkan beberapa prinsip utama.

1. Role-Oriented

Resource Gateway API dirancang berdasarkan peran yang berbeda dalam pengelolaan jaringan.

  • Infrastructure Provider.
  • Cluster Operator.
  • Application Developer.

2. Portable

Spesifikasi Gateway API dirancang agar dapat digunakan oleh berbagai implementasi, bukan hanya satu vendor.

3. Expressive

Gateway API menyediakan kemampuan routing seperti header matching dan traffic weighting yang sebelumnya sering membutuhkan anotasi khusus pada Ingress.

4. Extensible

Gateway API dapat diperluas untuk kebutuhan dan implementasi tertentu tanpa harus mengubah keseluruhan model API.

Keempat prinsip tersebut merupakan bagian penting dari desain Gateway API. :contentReference[oaicite:5]{index=5}

Arsitektur Gateway API

Arsitektur Gateway API dapat dipahami dengan melihat hubungan antara GatewayClass, Gateway, Route, dan backend seperti Kubernetes Service.

                    Client
                       │
                       ▼
                Gateway Endpoint
                       │
                       ▼
                 +-----------+
                 |  Gateway  |
                 +-----------+
                       │
                       ▼
                 +-----------+
                 | HTTPRoute |
                 +-----------+
                       │
                       ▼
                 +-----------+
                 |  Service  |
                 +-----------+
                       │
                       ▼
                     Pods

GatewayClass
      │
      ▼
Mengatur controller
yang menangani Gateway

GatewayClass menentukan kelas Gateway yang digunakan, Gateway merepresentasikan instance infrastruktur traffic handling, sedangkan HTTPRoute menentukan bagaimana request HTTP diarahkan menuju backend. :contentReference[oaicite:6]{index=6}

Komponen Utama Gateway API

Komponen Fungsi
GatewayClass Menentukan kelas Gateway dan controller yang mengelolanya.
Gateway Merepresentasikan instance infrastruktur untuk menangani traffic.
HTTPRoute Mengatur routing request HTTP menuju backend.
GRPCRoute Mengatur routing untuk traffic gRPC.
TLSRoute Mengatur routing berbasis TLS.
TCPRoute Mengatur routing TCP pada implementasi yang mendukungnya.
UDPRoute Mengatur routing UDP pada implementasi yang mendukungnya.
ReferenceGrant Mengatur izin reference lintas namespace.

Model resource Gateway API terus berkembang. Dokumentasi resmi Gateway API saat ini menjelaskan beberapa tipe Route standar seperti HTTPRoute, GRPCRoute, TLSRoute, TCPRoute, dan UDPRoute dengan tingkat stabilitas yang dapat berbeda sesuai jenis resource. :contentReference[oaicite:7]{index=7}

Apa Itu GatewayClass?

GatewayClass adalah resource cluster-scoped yang mendefinisikan kelompok Gateway dengan konfigurasi dan perilaku umum.

GatewayClass biasanya disediakan atau dikelola oleh infrastructure provider dan menunjuk controller yang bertanggung jawab terhadap implementasinya.

GatewayClass
     │
     ▼
Gateway Controller
     │
     ├─────────────┐
     ▼             ▼
Gateway A       Gateway B

GatewayClass memiliki fungsi yang mirip dengan konsep IngressClass, tetapi digunakan dalam model Gateway API. :contentReference[oaicite:8]{index=8}

Contoh GatewayClass

apiVersion: gateway.networking.k8s.io/v1
kind: GatewayClass
metadata:
  name: example-gateway-class
spec:
  controllerName: example.com/gateway-controller

Nilai controllerName menunjukkan controller yang bertanggung jawab menangani GatewayClass tersebut.

Apa Itu Gateway?

Gateway merepresentasikan instance infrastruktur yang digunakan untuk menangani traffic.

Gateway dapat merepresentasikan berbagai bentuk infrastructure seperti load balancer cloud atau reverse proxy yang dikonfigurasi untuk menerima traffic.

                  Gateway
                     │
            ┌────────┼────────┐
            ▼        ▼        ▼
          HTTP     HTTPS     TLS
            │        │        │
            └────────┼────────┘
                     ▼
                   Routes

Gateway dikaitkan dengan satu GatewayClass yang menentukan controller atau implementasi yang menangani Gateway tersebut. :contentReference[oaicite:9]{index=9}

Contoh Gateway

apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
  name: example-gateway
spec:
  gatewayClassName: example-gateway-class

  listeners:

  - name: http
    protocol: HTTP
    port: 80

Pada contoh tersebut, Gateway dikonfigurasi untuk menerima traffic HTTP pada port 80.

Apa Itu Listener?

Listener menentukan bagaimana Gateway menerima traffic.

Konfigurasi listener dapat mencakup:

  • Nama listener.
  • Protocol.
  • Port.
  • Hostname.
  • Konfigurasi TLS.
  • Aturan Route yang diperbolehkan.
Gateway
   │
   ├── Listener HTTP :80
   │
   ├── Listener HTTPS :443
   │
   └── Listener HTTPS :443
            │
            └── Hostname
                api.example.com

Apa Itu HTTPRoute?

HTTPRoute adalah resource Gateway API yang digunakan untuk mendefinisikan aturan routing request HTTP dari Gateway listener menuju backend.

HTTPRoute dapat menggunakan:

  • Hostname.
  • Path.
  • Header.
  • Query parameter.
  • Filters.
  • Backend references.
  • Traffic weighting.

HTTPRoute merupakan salah satu resource utama Gateway API dan telah berada pada Standard Channel sejak Gateway API v0.5.0. :contentReference[oaicite:10]{index=10}

Contoh HTTPRoute

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

metadata:
  name: example-route

spec:

  parentRefs:
  - name: example-gateway

  hostnames:
  - "www.example.com"

  rules:

  - matches:

    - path:
        type: PathPrefix
        value: /app

    backendRefs:

    - name: example-service
      port: 8080

Pada contoh tersebut, request dengan hostname www.example.com dan path yang diawali /app diarahkan menuju Service example-service pada port 8080.

Hubungan GatewayClass, Gateway, dan HTTPRoute

                 GatewayClass
                      │
                      ▼
                 Gateway Controller
                      │
                      ▼
                   Gateway
                      │
                ┌─────┴─────┐
                ▼           ▼
            HTTPRoute    HTTPRoute
                │           │
                ▼           ▼
             Service A    Service B

Hubungan tersebut merupakan inti dari model resource Gateway API. GatewayClass menentukan implementasi, Gateway menentukan titik infrastruktur traffic handling, dan Route menentukan aturan pemetaan traffic menuju backend. :contentReference[oaicite:11]{index=11}

Bagaimana Cara Kerja Gateway API?

Cara kerja Gateway API dapat dipahami melalui aliran request dari client hingga backend Service.

  1. Client meminta URL aplikasi.
  2. DNS Resolver menemukan alamat Gateway.
  3. Client mengirim request menuju Gateway.
  4. Gateway menerima request melalui listener.
  5. Gateway mencocokkan HTTPRoute yang sesuai.
  6. HTTPRoute memeriksa hostname, path, header, atau rule lainnya.
  7. Gateway meneruskan request ke backend.
  8. Service Kubernetes meneruskan traffic menuju Pod.
  9. Pod menghasilkan response.
  10. Response dikembalikan melalui Gateway menuju client.

Ilustrasi Request Flow Gateway API

Client
  │
  │ HTTP Request
  ▼
DNS Resolver
  │
  ▼
Gateway Address
  │
  ▼
Gateway
  │
  ▼
Listener
  │
  ▼
HTTPRoute
  │
  ▼
Kubernetes Service
  │
  ▼
Pod
  │
  ▼
Application

Alur tersebut sesuai dengan model request flow Gateway API, di mana request dapat dicocokkan berdasarkan konfigurasi Gateway dan HTTPRoute sebelum diteruskan ke backend. :contentReference[oaicite:12]{index=12}

Gateway API dan DNS

Gateway API juga memiliki hubungan dengan DNS karena client biasanya membutuhkan hostname untuk menemukan endpoint Gateway.

www.example.com
       │
       ▼
   DNS Resolver
       │
       ▼
Gateway IP / Address
       │
       ▼
    Gateway

Dengan demikian, pembahasan Gateway API berhubungan dengan artikel sebelumnya mengenai DNS Resolver dan konsep DNS secara keseluruhan.

Gateway API dan HTTP

Gateway API sangat erat dengan protokol HTTP karena HTTPRoute menyediakan aturan untuk memproses request HTTP.

Routing dapat dilakukan berdasarkan:

  • Hostname.
  • Path.
  • HTTP Method.
  • Header.
  • Query Parameter.

Gateway API dan HTTPS

Gateway API juga dapat digunakan untuk mengelola traffic HTTPS melalui listener dengan konfigurasi TLS yang sesuai dengan implementasi Gateway.

Client
  │
  │ HTTPS
  ▼
Gateway :443
  │
  │ TLS
  ▼
HTTPRoute
  │
  ▼
Service

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