Ingenieurwesen
Ein Job, eine VM: So isolieren wir CI-Workloads
Warum wir CI-Jobs nicht in Containern auf einem gemeinsam genutzten Kernel ausführen und was uns das kostet.
{Autor} · {Rolle} · {Datum} · {Minuten} {MinutenLabel}
Ein CI-Runner führt beliebigen Code aus Ihrem Repository aus und hat Zugriff auf Ihre Geheimnisse. Die Containerisolation auf einem gemeinsam genutzten Kernel ist hierfür keine ausreichende Grenze, da eine Kernel-Schwachstelle eine Schwachstelle der Mandantengrenze ist.
Was wir tun
- Jeder Job erhält eine eigene MicroVM mit eigenem Kernel
- Die VM wird zerstört, wenn der Job endet – nie wiederverwendet, nie recycelt
- Festplatten werden kryptografisch gelöscht, anstatt sie zu trennen und in einen Pool zurückzugeben
- Cache-Objekte werden pro Repository verschlüsselt, sodass ein Cache-Lesevorgang nicht mandantenübergreifend erfolgen kann
- Kein Bediener hat Shell-Zugriff auf eine laufende Job-VM
Was es kostet
Eine microVM bootet langsamer als ein Container. Wir investieren echten technischen Aufwand in warme Pools und die Snapshot-Wiederherstellung, um den Wert wieder auf etwa drei Sekunden zu bringen. Container wären einfacher und wir glauben, dass der Handel nicht eng ist.
Ihr nächster Build könnte doppelt so schnell sein — zum halben Preis
Kostenlos starten. Der Wechsel zurück ist dieselbe eine Zeile — auch dieses Diff veröffentlichen wir.