Knative #

Knative adalah platform open-source untuk membangun, menjalankan, dan mengelola aplikasi serverless berbasis container di atas Kubernetes. Knative tidak menggantikan Kubernetes, melainkan melapisinya dengan abstraksi serverless agar developer tidak perlu berurusan langsung dengan kompleksitas resource Kubernetes sehari-hari.

Berbeda dengan serverless tradisional (seperti AWS Lambda) yang berbasis function, Knative menggunakan container sebagai unit eksekusi, sehingga sangat cocok untuk:

  • Microservices
  • API backend
  • Event-driven services
  • Aplikasi yang membutuhkan kontrol runtime lebih besar

Bagan Konseptual Knative (High-Level) #

Bagan berikut membantu memahami posisi Knative di antara user, Kubernetes, dan workload aplikasi:

+-------------------+
|      Developer    |
| (Code & Container)|
+-------------------+
          |
          v
+-------------------+
|      Knative      |
|  - Serving        |
|  - Eventing       |
|  - Autoscaling    |
+-------------------+
          |
          v
+-------------------+
|    Kubernetes     |
| Pod, Service, HPA |
+-------------------+
          |
          v
+-------------------+
| Infrastructure    |
| VM / Bare Metal   |
| Cloud / On-Prem   |
+-------------------+

Dengan bagan ini, pembaca dapat langsung memahami bahwa Knative = Serverless Experience + Kubernetes Power.


Kenapa Knative Disebut Serverless? #

Knative memenuhi karakteristik utama serverless:

  1. No Server Management

    • Developer tidak mengatur node, pod count, atau autoscaler manual.
  2. Auto Scaling (Termasuk Scale-to-Zero)

    • Saat tidak ada traffic → pod = 0
    • Saat traffic datang → pod otomatis dibuat
  3. Pay-per-Use Friendly

    • Sangat efisien di environment cloud karena resource hanya aktif saat digunakan.
  4. Event-Driven Native

    • Event bukan sekadar trigger, tapi citizen utama dalam arsitektur.
  5. Fully Managed oleh Control Plane

    • Routing, revisioning, dan scaling diurus Knative.

Kesimpulannya: Knative memberikan serverless behavior, meskipun tetap berjalan di Kubernetes.


Arsitektur dan Komponen Utama Knative #

Knative terdiri dari dua komponen inti yang saling melengkapi, yaitu Knative Serving dan Knative Eventing.


Knative Serving #

Knative Serving bertanggung jawab menjalankan HTTP-based workloads secara serverless.

Objek Utama Knative Serving #

  1. Service

    • Entry point utama aplikasi
    • Abstraksi tertinggi
  2. Configuration

    • Mendefinisikan bagaimana aplikasi dibangun dan dijalankan
  3. Revision

    • Immutable snapshot dari Configuration
    • Setiap perubahan config → revision baru
  4. Route

    • Mengatur traffic ke satu atau lebih revision

Alur Kerja Knative Serving #

Request Masuk
     |
     v
Knative Route
     |
     v
Revision (v1 / v2 / vN)
     |
     v
Pod Kubernetes

Fitur Penting Knative Serving #

  • Autoscaling berbasis request
  • Scale-to-zero
  • Canary deployment
  • Blue-green deployment
  • Traffic splitting berbasis persentase

Knative Eventing #

Knative Eventing menyediakan sistem event abstraction yang decoupled, scalable, dan extensible.

Konsep Dasar Eventing #

  • Producer: penghasil event
  • Broker: event hub
  • Trigger: filter dan routing event
  • Consumer: Knative Service

Alur Eventing #

Event Source
     |
     v
Broker
     |
     v
Trigger (filter)
     |
     v
Knative Service

Event Sources yang Didukung #

  • Kafka
  • Google Pub/Sub
  • GitHub Webhook
  • CloudEvents
  • Custom event source

Konfigurasi Penting di Knative #

Autoscaling Configuration #

  • minScale: minimum pod
  • maxScale: maksimum pod
  • targetConcurrency
  • targetCPU

Request Handling #

  • containerConcurrency
  • timeoutSeconds

Resource Management #

  • CPU request & limit
  • Memory request & limit

Traffic Management #

  • Weight-based routing
  • Revision pinning

Monitoring & Observability #

Apa yang Bisa Dimonitor? #

  • Request rate
  • Latency (P50, P90, P99)
  • Pod scaling events
  • Cold start frequency
  • Event delivery success/failure

Tool Observability #

  • Prometheus
  • Grafana
  • Fluentd / Loki
  • Jaeger / OpenTelemetry

Pros & Cons Knative #

Pros #

  • Serverless experience di Kubernetes
  • Autoscaling hingga nol
  • Event-driven native
  • Traffic management advanced
  • Portable & cloud-agnostic

Cons #

  • Kompleks untuk pemula
  • Cold start latency
  • Debugging lebih sulit
  • Eventing setup cukup verbose

Best Practices #

  1. Gunakan minScale > 0 untuk service latency-sensitive
  2. Gunakan traffic splitting untuk production rollout
  3. Aktifkan monitoring sejak awal
  4. Gunakan dead letter sink di eventing
  5. Optimalkan ukuran container image
  6. Pisahkan service berdasarkan domain/event
  7. Gunakan CI/CD (Tekton, ArgoCD)

Penutup #

Knative adalah solusi serverless tingkat lanjut bagi tim yang sudah atau ingin serius menggunakan Kubernetes. Dengan Knative, organisasi mendapatkan:

  • Fleksibilitas container
  • Efisiensi serverless
  • Arsitektur event-driven modern
  • Kontrol penuh tanpa vendor lock-in

Jika digunakan dengan benar, Knative dapat menjadi fondasi platform internal serverless (Internal PaaS) yang sangat kuat dan scalable.

About | Author | Content Scope | Editorial Policy | Privacy Policy | Disclaimer | Contact