Episode ini membahas orkestrasi microVM: firectl sebagai CLI sederhana untuk launch Firecracker dari image OCI, Flintlock dari liquidmetal untuk mengelola banyak microVM sebagai service, serta integrasi Kubernetes via containerd dan runtime class microvm dengan pola sandbox per user/job.

Di episode 11 kita menjalankan container di dalam microVM dengan firecracker-containerd. Tapi mengelola microVM satu per satu tidak akan pernah menjadi produksi. Episode 12 memperkenalkan lapisan orchestrator: firectl untuk kemudahan, Flintlock untuk skala, dan Kubernetes sebagai control plane — supaya ratusan microVM bisa dilahirkan dan dimatikan seperti container biasa.
Mengapa episode ini penting? Firecracker hanyalah mesin; tanpa orchestrator, ia tidak bisa menjadi platform. Memahami firectl memberi kalian cara tercepat menyalakan microVM untuk eksperimen; memahami Flintlock dan runtime class microvm memberi kalian arsitektur untuk melayani ribuan pengguna dengan sandbox isolasi penuh.
firectl adalah CLI sederhana yang membungkus API Firecracker sehingga microVM bisa di-launch tanpa menulis puluhan baris curl. Ia mengambil image OCI container, membongkarnya menjadi rootfs microVM, dan mem-boot Firecracker:
firectl \
--firecracker-binary=/usr/local/bin/firecracker \
--kernel=vmlinux.bin \
--root-drive=rootfs.ext4 \
--kernel-opts="console=ttyS0 reboot=k panic=1 pci=off" \
--vcpus=2 \
--memory=1024Dengan firectl, alur yang di episode 4-5 kita lakukan lewat 5 curl berubah menjadi satu perintah. Ia bahkan bisa memakai image container sebagai sumber rootfs:
firectl --firecracker-binary=/usr/local/bin/firecracker \
--kernel=vmlinux.bin \
--root-drive=docker:alpine:latest \
--vcpus=1 --memory=512Kapan memakai firectl? Untuk lab, eksperimen, dan script — kapan pun kalian butuh microVM cepat tanpa boilerplate API. Ia bukan control plane produksi, tapi pintu masuk yang sempurna untuk memahami apa yang sebenarnya dilakukan orchestrator besar di belakang layar.
Flintlock (dari liquidmetal — proyek microVMs dari CNCF) adalah service yang mengelola siklus hidup banyak microVM di satu atau banyak host. Ia menawarkan MicroVM as a Service (MVMaaS): API untuk create, delete, dan mengelola microVM, dengan Firecracker (atau Cloud Hypervisor) sebagai VMM di belakangnya.
Alur Flintlock:
Karena Flintlock adalah service (bukan proses per VM), ia menjadi lapisan yang bisa dipegang orchestrator di atasnya — termasuk Kubernetes. Desainnya meniru container runtime: API konsisten, state terpusat, dan tiap microVM punya identitas yang bisa di-track.
curl -s -X POST http://flintlock:9090/v1/microvms \
-H 'Content-Type: application/json' \
-d '{
"namespace": "default",
"spec": {
"kernel": { "image": "registry.example.com/kernel:1.16", "filename": "vmlinux.bin" },
"rootVolume": { "image": "registry.example.com/rootfs:latest", "filename": "rootfs.ext4" },
"vcpus": 2,
"memoryMb": 1024,
"interfaces": [{ "deviceId": "eth0", "type": "tap" }]
}
}'microvmPola paling nyaman untuk menempatkan microVM di production adalah lewat Kubernetes. Dengan containerd + plugin microVM, tiap Pod bisa berjalan di dalam microVM sendiri. Kuncinya adalah RuntimeClass:
apiVersion: node.k8s.io/v1
kind: RuntimeClass
metadata:
name: microvm
handler: firecrackerLalu Pod meminta isolasi microVM lewat runtimeClassName:
apiVersion: v1
kind: Pod
metadata:
name: sandbox-a
spec:
runtimeClassName: microvm
containers:
- name: app
image: docker.io/library/nginx:latestKonsekuensinya: Pod sandbox-a dijalankan di dalam microVM Firecracker — kernel guest sendiri, isolasi penuh dari node. Ini sama dengan pola firecracker-containerd di episode 11, tapi sekarang diangkat ke API Kubernetes: Pod = microVM.
Keuntungan pola ini di Kubernetes:
Important
RuntimeClass microvm di Kubernetes memerlukan containerd dengan plugin microVM (misal firecracker-containerd atau Kata Containers dengan VMM Firecracker). Tanpa runtime handler yang benar, runtimeClassName akan membuat Pod gagal di-schedule. Pastikan handler terdaftar di konfigurasi containerd node.
Dengan Kubernetes + runtime class microvm, pola bisnis yang memakai Firecracker menjadi mudah diwujudkan: sandbox per user atau per job. Setiap pengguna (atau setiap tugas) mendapat microVM sendiri yang terisolasi total:
runtimeClassName: microvm → microVM khusus, dihapus setelah selesai.Keuntungan dibanding berbagi VM: satu pengguna yang men-download malware atau menghabiskan resource tidak berdampak pada pengguna lain. Ini pola yang sama dengan AWS Lambda MicroVMs (episode 18) — isolasi VM-level per user — sekarang tersedia untuk platform kalian sendiri.
Peta perbandingan yang berguna:
| Tool | Fungsi | Kapan dipakai |
|---|---|---|
firectl | Launch satu microVM dari CLI | Eksperimen, lab, script |
firecracker-containerd | Container OCI dalam microVM | Runtime per-container |
Flintlock | MicroVM as a Service | Service yang dikelola orchestrator |
| Kubernetes + runtime class | Pod = microVM | Platform produksi, sandbox per user |
Semuanya memakai API Firecracker di bawahnya; yang membedakan adalah tingkat abstraksi dan skala. Mulailah dari firectl untuk belajar, lalu naik ke Flintlock atau Kubernetes saat butuh kontrol terpusat.
Inti yang harus dibawa pulang:
firectl menyederhanakan launch microVM jadi satu perintah — ideal untuk belajar.Flintlock menawarkan MicroVM as a Service dengan API terpusat.microvm menjadikan Pod = microVM, isolasi per Pod.Di episode 13 selanjutnya kita akan memperdalam keamanan jaringan: Network Isolation & Filtering — membangun bridge dan TAP per guest, memfilter traffic dengan eBPF dan iptables, memblokir outbound yang tidak perlu, serta tuning virtio-net dengan vhost, TSO/GSO, dan ukuran ring untuk performa puncak.