eab8df07
docs: the agent aspires to kubelet
a73x 2026-08-11 12:17
Commit message
docs/decisions.md
| Old | New | ||
|---|---|---|---|
| @@ -120,3 +120,21 @@ Agents trust the server's self-signed QUIC cert by fingerprint from the join | |||
| 120 | blob—not by CA path, not by expiry. Instead of a CA hierarchy or expiring | 120 | blob—not by CA path, not by expiry. Instead of a CA hierarchy or expiring |
| 121 | trust. An expired cert can never brick a fleet; rotation is deliberate hygiene, | 121 | trust. An expired cert can never brick a fleet; rotation is deliberate hygiene, |
| 122 | not an emergency. Details in [cert-rotation.md](cert-rotation.md). | 122 | not an emergency. Details in [cert-rotation.md](cert-rotation.md). |
| 123 | |||
| 124 | ### The agent aspires to kubelet | ||
| 125 | |||
| 126 | The eitri agent is deliberately kubelet-shaped and stays that way on purpose: | ||
| 127 | level-triggered reconcile with admission and per-VM workers; a small | ||
| 128 | runtime-agnostic Provisioner seam in the CRI mold, where cloud-hypervisor and | ||
| 129 | Virtualization.framework are two runtimes behind one set of verbs; capacity | ||
| 130 | reported against a user-declared quota the way a node reports capacity against | ||
| 131 | allocatable; and, when a host runs with no control plane, VMs from local | ||
| 132 | manifests that a later join adopts — kubelet's static pods. Instead of | ||
| 133 | inventing a new node-agent shape: a decade of prior art already made these | ||
| 134 | decisions, in public, under load. | ||
| 135 | |||
| 136 | Two disciplines ride the aspiration. The Provisioner seam stays in-process | ||
| 137 | until a genuinely foreign backend wants in — a versioned plugin wire is a | ||
| 138 | binding point, and this repo has already paid once for building a binding | ||
| 139 | point before its parties existed. And the deploy smoke is the seam's | ||
| 140 | conformance suite: a Provisioner is whatever passes it. | ||