Zum Inhalt springen

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.