Episode ini membahas kasus penggunaan paling panas Kata Containers: menjalankan LLM inference dan AI agent untrusted di microVM, dengan GPU via VFIO. Kalian mempelajari pola sandbox per agent/session dan isolasi untuk CI/CD yang mengeksekusi artefak pihak ketiga.

Dari semua kasus penggunaan yang dibahas sepanjang series ini, tidak ada yang lebih relevan dengan tahun-tahun terakhir selain AI agents. Agent-agen ini menjalankan tool, mengakses file, dan mengeksekusi perintah dari sumber yang tidak bisa dipercaya penuh. Setiap agent adalah potensi sandbox escape. Kata Containers memberi jawaban yang alami: jalankan setiap agent di microVM sendiri.
Episode 19 membahas pola ini secara nyata: menjalankan LLM inference di microVM dengan GPU via VFIO, membuat sandbox per agent dan per session, serta isolasi CI/CD yang mengeksekusi artefak pihak ketiga. Ini adalah topik yang sudah dibicarakan di OpenInfra Summit dan diadopsi platform seperti Northflank.
AI agent modern bekerja seperti ini: model (LLM) memutuskan langkah, lalu mengeksekusi — menjalankan kode, memanggil API, membaca file, menginstall paket. Input yang memandu keputusan ini datang dari pengguna, dari konten web, atau dari tool yang berinteraksi dengan dunia nyata. Satu prompt jailbroken atau satu dokumen berbahaya bisa membuat agent menjalankan perintah yang merugikan.
Risikonya bukan teori — sudah banyak insiden di mana agent mengeksekusi kode berbahaya yang disisipkan di halaman web atau dokumen yang dibacanya. Container biasa memberi agent akses ke kernel bersama; satu escape berarti seluruh node berisiko.
Sandbox biasa mengisolasi input: menjalankan file yang tidak dikenal dan membuang hasilnya. Agent berbeda — ia aktif dan persisten: menjelajah, berinteraksi, dan bertahan lama. Isolasi yang dibutuhkan lebih ketat, dan microVM adalah jawaban yang paling sesuai.
Keuntungan microVM untuk agent:
LLM inference adalah workload komputasi yang menuntut GPU. Dengan Kata, kalian bisa menjalankan inference server (misalnya vLLM atau TGI) di dalam microVM dengan GPU yang di-passthrough via VFIO — kombinasi yang dibahas di episode 10.
Pola ini menarik karena dua alasan: input inference tidak bisa dipercaya (prompt dari pengguna berpotensi berbahaya), dan model itu sendiri bernilai (aset intelektual yang harus dilindungi). MicroVM mengisolasi keduanya: runtime model terlindungi dari prompt jahat, dan model terlindungi dari node.
Pod inference dengan GPU:
apiVersion: v1
kind: Pod
metadata:
name: kata-llm
spec:
runtimeClassName: kata
containers:
- name: inference
image: vllm/vllm-openai:latest
command: ["vllm", "serve", "/models/llama", "--port", "8000"]
resources:
limits:
nvidia.com/gpu: 1
memory: 32Ginvidia.com/gpu: 1 memberikan GPU ke microVM, dan seluruh server inference berjalan di dalam guest. Egress policy membatasi akses model ke endpoint yang diizinkan saja.
Note
Ada dua arah isolasi di workload inference: melindungi runtime dari prompt berbahaya (guest tidak bisa menyerang host), dan melindungi model dari pengintipan. Untuk perlindungan model tingkat maksimal, kombinasikan microVM dengan confidential computing (episode 11).
Pola paling sederhana: setiap agent mendapat pod/microVM sendiri. Satu agent, satu microVM, satu lifecycle. Ketika agent selesai atau mencurigakan, microVM dihancurkan — tidak ada state yang tersisa.
Pola ini dipakai oleh platform seperti Northflank dan divisualisasikan di OpenInfra Summit: sandbox per agent adalah unit isolasi paling natural. Agent tidak pernah berbagi kernel atau resource dengan agent lain.
Variasi yang lebih granular: setiap session interaksi mendapat sandbox baru. Sebuah agent yang berjalan lama bisa memulai session baru untuk setiap tugas yang melibatkan input tidak tepercaya — session yang mencurigakan dibuang tanpa mempengaruhi agent utama.
Keuntungannya: granularity isolasi mengikuti tingkat risiko input. Input tepercaya bisa diproses agent langsung; input mencurigakan masuk ke session sandbox baru.
Implementasi praktisnya tetap sederhana — pod baru per session:
kubectl apply -f - <<'EOF'
apiVersion: v1
kind: Pod
metadata:
name: agent-session-42
namespace: sandbox
spec:
runtimeClassName: kata
containers:
- name: executor
image: sandbox-runner:latest
env:
- name: SESSION_ID
value: "42"
EOFkubectl apply -f - membuat pod sandbox session baru. Namespace sandbox sudah dijamin memakai Kata oleh admission policy (episode 15), jadi tidak ada risiko berjalan di runc.
Sandbox per session menuntut pengelolaan resource yang disiplin:
CI/CD mengeksekusi kode yang tidak dipercaya secara fundamental — artefak dari kontributor, dependency dari internet, skrip build pihak ketiga. Menjalankan build di container biasa berarti setiap build punya akses ke kernel bersama. Satu dependency compromised bisa menyerang runner host.
Kata menyelesaikan masalah ini dengan pola yang sama: setiap build job berjalan di microVM. Build pipeline yang memakai Kubernetes (misalnya dengan Runner Kubernetes) cukup menandai pod sebagai sandboxed:
apiVersion: v1
kind: Pod
metadata:
name: ci-job-1234
spec:
runtimeClassName: kata
restartPolicy: Never
containers:
- name: build
image: builder:latest
command: ["/build.sh"]restartPolicy: Never — job sekali jalan, microVM dibuat untuk job ini, dihancurkan setelah selesai. Pola ini memberi isolasi penuh antar build tanpa mengorbankan kecepatan yang memadai (boot 150-300 ms).
Build membutuhkan akses ke registry dan repository — tapi tidak ke jaringan internal. Egress policy yang ketat (episode 14) membatasi build hanya ke endpoint yang dibutuhkan: registry image, package manager, dan source repo. Jika build mencurigakan mencoba akses lain, traffic di-block.
Inti yang harus dibawa pulang:
Di episode 20 selanjutnya kita akan membahas performance & optimization — hugepages, CPU pinning, memory balloon, optimasi boot time dengan Dragonball/CH, serta cara benchmarking boot time dan overhead per pod dibanding runc. Semua konsep dari episode 5 dan 6 akan dipakai untuk membuat microVM seefisien mungkin.