Kubernetes mit Rust: Microsoft setzt für Cloud-Entwicklung auf Rust

Krustlet ist eine Kubernetes-App, die in Rust geschrieben wurde. Langfristig könnten sich in der Cloud-native-Entwicklung weitere Sprachen neben Go etablieren.

In Pocket speichern vorlesen Druckansicht 20 Kommentare lesen
Kubernetes mit Rust: Microsoft setzt für Cloud-Entwicklung auf Rust
Lesezeit: 3 Min.
Von
  • Silke Hahn

Anfang April 2020 hat ein Entwicklerteam von Microsoft Azure Krustlet vorgestellt, ein Open-Source-Tool für Cloud-native-Entwickler. Krustlet steht laut Azure DeisLabs für "Kubernetes-rust-kubelet" und soll das Deployment von WebAssembly-Modulen in der Containerverwaltung Kubernetes ermöglichen. Das Revolutionäre daran ist offenbar, dass hier die Programmiersprache Rust zugrunde liegt – obwohl Kubernetes in Go geschrieben wurde. Ein Ziel des Projekts ist es laut Release Notes, Entwickler dazu anzuregen, für Kubernetes auch andere Programmiersprachen als Go auszuprobieren.

Go war bisher die dominierende Sprache für Cloud-Anwendungen, neuerdings setzt Microsoft aber verstärkt auf Rust – auch als mögliche Alternative für Komponenten, die ursprünglich in C und C++ geschrieben waren. So hat Microsoft experimentell einige Low-Level-Komponenten für Windows von C/C++ zu Rust portiert und verwendet Rust-Elemente in seinem Projekt Verona zur Entwicklung einer sicheren Infrastruktursprache. Neuerdings gibt es mit Rust/WinRT auch ein Tool für die Windows Runtime in Rust.

Microsoft begründet in einem aktuellen Blogbeitrag die Entscheidung für Rust in der Cloud ausführlicher und führt dabei vor allem Sicherheitsaspekte der Programmiersprache an. Nach einer Lernphase von rund einem Monat habe das Entwicklerteam mit Rust ähnlich effizient wie zuvor mit Go arbeiten und etwa gleichviel Code schreiben können, der aber im Ergebnis sicherer geworden sei. Die Produktivität sei dabei signifikant gestiegen, da weniger Zeit für manuelles Überprüfen spezieller Bedingungen und das Debugging benötigt werde. Besonders der Borrow-Checker von Rust leiste gute Dienste, da er auf Concurrency-Probleme hinweist und vermeidbare Doppelungen von Objekten im Code aufzeigt.

Den fehlenden Garbage Collector gibt das Entwicklerteam als Manko an. Andererseits erleichtern die strengen Regeln des Rust-Compilers an anderer Stelle die Arbeit offenbar, speziell beim Cloning, Borrowing und der Ownership. Krustlet habe bei einem anderen Projekt mit Kubernetes-Bezug (Helm) ein Data-Race-Problem erkannt, das zuvor den Race-Checker in Go ohne Warnung durchlaufen hatte. Der dort aufgetretene Fehler hätte aufgrund der Regeln des Rust-Compilers in Rust so nie auftreten können. Alles in allem werde der Aufwand beim Erlernen von Rust und die erforderliche Disziplin bei den Compiler-Regeln sowie der fehlende Garbage Collector durch die Sicherheit des produzierten Codes aufgewogen, lautet das Fazit des Entwicklerteams, und sagt Rust in der Cloud "eine strahlende Zukunft" voraus.

Weitere Hintergrundinformationen lassen sich der Stellungnahme zu Krustlet im Microsoft-Blog entnehmen. Die Ankündigung von Krustlet steht im Blog von DeisLabs. Hintergründe zu WebAssembly (WASM) finden Interessierte auf der Projekt-Website. (sih)