Kubernetes Diport ke Browser dalam TypeScript
Judul asli: I ported Kubernetes to the browser
Mengapa Ini Penting
Demonstrasi bahwa sistem kompleks dapat disederhanakan untuk lingkungan browser, membuka kemungkinan baru untuk pembelajaran, prototyping, dan debugging Kubernetes tanpa infrastruktur eksternal.
Sam Rose dari ngrok merilis webernetes, port parsial Kubernetes ke TypeScript yang memungkinkan menjalankan cluster di browser. Proyek 2 bulan menghasilkan 100.000 baris kode, ukuran 140KiB gzip, mensimulasikan pod lifecycle, DNS, networking, dan garbage collection container.
Sam Rose, Senior Developer Educator di ngrok, telah merilis webernetes, sebuah port parsial Kubernetes ke TypeScript yang memungkinkan pengguna menjalankan cluster Kubernetes secara langsung di browser web. Proyek ini memerlukan waktu 2 bulan dan menghasilkan hampir 100.000 baris kode dalam 552 commit di 629 file.
Webernetes bukan kompilasi Kubernetes ke WebAssembly. Rose menjelaskan bahwa program "hello, world" Go yang dikompilasi ke WebAssembly mencapai ~540KiB gzip, sementara webernetes hanya ~140KiB gzip. Mengompilasi seluruh Kubernetes ke WebAssembly akan memerlukan pengiriman megabyte data melalui jaringan, dan Kubernetes juga memanggil API tingkat sistem yang tidak tersedia di browser.
Sebaliknya, webernetes adalah port parsial dari kubelet Kubernetes (cukup untuk menjalankan pod dan probe), port dari beberapa controller Kubernetes (scheduler pod, namespace controller, kube-proxy, deployment controller), implementasi berbasis browser dari container network interface (CNI) untuk komunikasi antar pod, dan runtime container berbasis browser yang berkomunikasi dengan kubelet melalui container runtime interface (CRI).
Proyektini mengimplementasikan pod lifecycle, cluster DNS dan networking, garbage collection container, alokasi IP, tracking Deployment dan ReplicaSet. Cluster yang berjalan di browser sepenuhnya dapat mensimulasikan request HTTP antar pod. Karena fokus menjaga ukuran kecil, webernetes tidak menarik image nyata dari registry seperti Docker Hub, tetapi menggunakan registry berbasis browser sendiri dengan image yang didefinisikan menggunakan API TypeScript.