Pular para o conteúdo principal

Firecracker Platform

Plataforma de microVMs inspirada na arquitetura da Fly.io, composta por tres componentes principais que rodam dentro de containers LXC no Proxmox com /dev/kvm passthrough.

Visao Geral

A Firecracker Platform permite criar, gerenciar e rotear trafego para microVMs Firecracker com boot em menos de 2 segundos, sub-100KB de overhead de memoria e isolamento completo via KVM.

ComponenteLinguagemFuncaoPorta
npool-proxyRust (Tokio/Hyper)Data plane -- reverse proxy HTTP + HTTP server dentro das microVMs:8088 (proxy), :8080 (serve)
npooldGoControl plane -- gestao de microVMs, networking, bridge, TAP:8089 API
npool (npool-cli)GoCluster management CLI -- placement engine, DNS syncCLI only
dashboardNext.js 16Web dashboard (apps, machines, stats):3000 (CT 101 Docker)
CorrosionRust (Fly.io OSS)State store distribuido -- SQLite + gossip + CRDT:4001 gossip, :4002 API

Fluxo de Request (Ponta a Ponta)

HTTP:  Internet → PVE:80 (iptables DNAT -i vmbr0) → CT 201:8088 (npool-proxy) → microVM:8080
HTTPS: Internet → PVE:443 (iptables DNAT -i vmbr0) → CT 201:8443 (npool-proxy TLS termination) → microVM:8080
  1. Usuario acessa https://test1.npool.cloud
  2. Cloudflare faz proxy (DNS-only para *.npool), npool-proxy faz TLS termination
  3. iptables DNAT no PVE redireciona porta 80 para CT 201:8088, porta 443 para CT 201:8443
  4. npool-proxy (Rust/Tokio) extrai Host header (HTTP) ou SNI (TLS)
  5. npool-proxy consulta Corrosion: SELECT backend FROM routes WHERE domain = ?
  6. npool-proxy faz forward para 172.16.1.2:8080 (microVM)
  7. npool-proxy (serve mode) dentro da microVM responde com conteudo estatico
  8. Response volta pelo mesmo caminho

Arquitetura Hexagonal

Todos os componentes seguem Arquitetura Hexagonal (Ports & Adapters):

  • domain/ -- Entidades e logica de negocio pura, sem I/O
  • ports/ -- Interfaces/traits que o domain espera (contratos)
  • adapters/ -- Implementacoes concretas (Corrosion, Firecracker, Hyper, Linux network)
Imutabilidade Estilo Fly.io

As microVMs sao imutaveis. Para atualizar uma VM, voce a destroi e recria. O rootfs com npool-proxy serve ja vem baked na imagem Alpine, garantindo que toda VM nova ja nasce pronta para servir trafego.

Infraestrutura

RecursoDetalhes
HostProxmox VE (OVH), IP 51.68.229.144
CT 201npool-node-1 (Ubuntu 24.04, 10.10.10.5, 4 cores, 10GB RAM, /dev/kvm)
CT 202npool-node-2 (Ubuntu 24.04, 10.10.10.6, 4 cores, 10GB RAM, /dev/kvm)
CT 203postgresql (Debian 13, 10.10.10.7, 2 cores, 2GB RAM) -- PG 17 + NATS
Subnet microVMsCT 201: 172.16.1.0/24, CT 202: 172.16.2.0/24 (bridge npool0, gateway .1)
Firecrackerv1.14.1, kernel 6.1.150, rootfs Alpine 3.21
Dominio*.npool.cloud (A record) + *.npool.cloud (NS delegation)