Microsoft fügt ein neues Linux hinzu: CBL-Mariner

Denken Sie an Microsoft und Linux, und Sie werden wahrscheinlich darüber nachdenken, wie ein optimierter Linux-Kernel für das Windows-Subsystem für Linux (WSL) erstellt wird. Microsoft unterstützt alle WSL2-Linux-Distributionen, einschließlich Ubuntu und SUSE.

Der Kernel von WSL2 ist jedoch nicht das einzige Linux-Angebot von Microsoft. Wir haben uns in der Vergangenheit einige der anderen hier angesehen, einschließlich des sicheren Linux für Azure Sphere. Andere umfassen die SONiC-Netzwerkdistribution, die für die Verwendung mit Open Compute Project-Hardware entwickelt wurde und von vielen öffentlichen Clouds und wichtigen Onlinediensten verwendet wird, sowie die Hosts für Azure ONE (Open Network Emulator), mit denen neue Netzwerkimplementierungen für Azure validiert werden.

Microsoft Linux Systems Group

Mit einer ständig wachsenden Anzahl von Microsoft Linux-Kerneln und -Distributionen gibt es jetzt eine offizielle Linux Systems Group, die einen Großteil der Linux-Arbeit des Unternehmens übernimmt. Dies umfasst einen von Azure optimierten Kernel, der als Patches für viele gängige Linux-Distributionen verfügbar ist und diese für die Verwendung mit dem Hyper-V-Hypervisor von Microsoft optimiert, sowie eine Reihe von Tools, mit denen die richtlinienbasierte Durchsetzung der Systemintegrität, die Sicherheit von Distributionen und die Verwaltung verbessert werden können Updates und Patches für große Bereiche von Linux-Servern und virtuellen Maschinen.

Das Team hat kürzlich eine neue Linux-Distribution veröffentlicht: CBL-Mariner. Obwohl die Version öffentlich ist, wird ein Großteil ihrer Verwendung nicht verwendet, da sie Teil der Azure-Infrastruktur ist, für ihre Edge-Netzwerkdienste und als Teil ihrer Cloud-Infrastruktur verwendet wird. Das Ergebnis ist eine eng fokussierte Distribution mit geringem Overhead, bei der es weniger darum geht, was darin enthalten ist, als vielmehr darum, was darauf ausgeführt wird.

Einführung in CBL-Mariner: Microsofts Linux-Container-Host

Die Investition in ein leichtes Linux wie CBL-Mariner ist angesichts der Investitionen von Microsoft in containergestützte Technologien sehr sinnvoll. In der Cloud-Wirtschaft müssen Hosts so wenig Ressourcen wie möglich verwenden, damit Dienste wie Azure eine hohe Auslastung erhalten. Gleichzeitig benötigen Kubernetes-Container so wenig Overhead wie möglich, sodass so viele Knoten pro Pod wie möglich verfügbar sind und neue Knoten so schnell wie möglich gestartet werden können.

Gleiches gilt für Edge-Hardware, insbesondere für die nächste Generation von Edge-Knoten, die für die Verwendung mit 5G-Netzwerken vorgesehen sind. Hier wie in der öffentlichen Cloud sind Workloads am wichtigsten, da sie und Daten näher an die Benutzer verschoben werden. Microsoft nutzt seinen wachsenden Bestand an Edge-Hardware als Teil des Azure Content Delivery-Netzwerks außerhalb seiner wichtigsten Azure-Rechenzentren und speichert Inhalte von Azure-Webanwendungen sowie von gehosteten Video- und Dateiservern zwischen, um die Latenz nach Möglichkeit zu verringern. Das Azure-CDN ist eine Schlüsselkomponente seines Jamstack-basierten Azure Static Websites-Dienstes, der Seiten und JavaScript hostet, sobald sie von GitHub veröffentlicht wurden.

In der Vergangenheit war CoreOS von Red Hat der bevorzugte Host für Linux-Container, aber aufgrund der jüngsten Ablehnung wird es nicht mehr unterstützt. Jeder, der es benutzt, musste eine Alternative finden. Microsoft bietet den Flatcar Linux CoreOS-Fork für Azure-Benutzer als Teil einer Partnerschaft mit den Entwicklern Kinvolk an. Eine eigene Distribution für seine eigenen Dienste stellt jedoch sicher, dass die Host- und Containerinstanzen nach eigenem Zeitplan aktualisiert und verwaltet werden können. Die öffentliche Entwicklung steht jedem zur Verfügung, der eigene Builds erstellen und verwenden oder neue Funktionen und Optimierungen einbringen möchte, z. B. Unterstützung für neue Netzwerkfunktionen.

Betrieb von CBL-Mariner und Containern

CBL-Mariner verfügt standardmäßig nur über die Basispakete, die zur Unterstützung und Ausführung von Containern erforderlich sind, und verfolgt einen ähnlichen Ansatz wie CoreOS. Im Kern sind Linux-Container isolierter Benutzerbereich. Wenn Sie die gemeinsam genutzten Ressourcen auf ein Minimum beschränken, wird das Sicherheitsrisiko des Host-Betriebssystems verringert, indem sichergestellt wird, dass Anwendungscontainer keine Abhängigkeiten davon annehmen können. Wenn Sie CBL-Mariner in Ihren eigenen Containern verwenden, stellen Sie sicher, dass Sie alle öffentlichen Docker-Images vor der Bereitstellung getestet haben, da diese möglicherweise nicht die entsprechenden Pakete enthalten. Möglicherweise müssen Sie Ihre eigenen Basisimages als Teil Ihrer Docker-Dateien für Anwendungen haben.

CBL-Mariner verwendet vertraute Linux-Tools, um Pakete hinzuzufügen und Sicherheitsupdates zu verwalten. Updates werden entweder als RPM-Pakete oder als vollständige Images angeboten, die bei Bedarf bereitgestellt werden können. Mit RPM können Sie einem CBL-Mariner-Basisimage Ihre eigenen Pakete hinzufügen, um bei Bedarf zusätzliche Funktionen und Dienste zu unterstützen.

Der Einstieg in CBL-Mariner kann so einfach sein wie das Starten eines Azure-Dienstes. Wenn Sie jedoch praktische Erfahrungen sammeln oder einen Beitrag zum Projekt leisten möchten, befindet sich der gesamte Quellcode derzeit auf GitHub, zusammen mit Anweisungen zum Erstellen eigener Installationen. Zu den Voraussetzungen für einen Build auf Ubuntu 18.04 gehören die Sprache Go, die Dienstprogramme QEMU (Quick EMUlator) sowie RPM.

Erstellen Sie Ihre eigene Installation mit dem GitHub-Repository

Sie haben verschiedene Möglichkeiten, aus der Quelle zu erstellen. Überprüfen Sie zunächst die Quelle von GitHub und erstellen Sie einen lokalen Klon des Projekt-Repositorys. Es stehen verschiedene Zweige zur Verfügung. Für einen ersten Build sollten Sie jedoch den aktuellen stabilen Zweig auswählen. Von hier aus können Sie die Go-Tools für das Projekt erstellen, bevor Sie die Quellen herunterladen.

Für schnelle Builds haben Sie zwei Optionen, die beide vorgefertigte Pakete verwenden und daraus eine Distribution zusammenstellen. Die erste Option für Bare-Metal-Installationen erstellt eine ISO-Datei, die zur Installation bereit ist. Die zweite Methode zur Verwendung von CBL-Mariner als Container-Host erstellt eine gebrauchsfertige VHDX-Datei mit einer virtuellen Maschine zur Verwendung mit Hyper-V. Eine alternative Option erstellt ein Container-Image, das als Quelle für Ihre Mariner-basierten Docker-Dateien verwendet werden kann und Ihnen alles bietet, was Sie zum Erstellen und Ausführen kompatibler Container mit Ihren Anwendungen benötigen.

Wenn Sie lieber aus dem Quellcode erstellen möchten, ist die Option verfügbar, obwohl Builds erheblich langsamer sind als vorkompilierte Pakete. Auf diese Weise können Sie jedoch auf alternative CPUs abzielen, z. B. eine Version erstellen, die mit der neuen Generation von ARM-basierter Edge-Hardware funktioniert, die der für Graviton-Instanzen von AWS verwendeten ähnelt. Sie können die gesamte Build-Toolchain booten, um sicherzustellen, dass Sie die Kontrolle über den gesamten Build-Prozess haben. Der vollständige Erstellungsprozess kann sogar zum Erstellen unterstützter Pakete verwendet werden, wobei die Kerndateien in einer JSON-Konfigurationsdatei aufgeführt sind.

Nach der Erstellung können Sie mit der Konfiguration der Funktionen von CBL-Mariner beginnen. Dazu gehören eine iptables-basierte Firewall, Unterstützung für signierte Updates und ein gehärteter Kernel. Gleichzeitig können optionale Funktionen eingerichtet werden, mit Tools zur Verbesserung der Prozessisolation und zur Verschlüsselung des lokalen Speichers. Dies sind wichtige Funktionen für einen Container-Host in einer Umgebung mit mehreren Mandanten, in der Sie lokale Daten schützen müssen.

Das Ergebnis ist ein effektiver Ersatz für CoreOS, der sowohl Azure-Benutzern als auch Microsoft-eigenen Teams zur Verfügung gestellt werden soll. CBL-Mariner hat möglicherweise nicht die Reife anderer auf Container ausgerichteter Linuxes, aber es hat sicherlich genug Unterstützung, um es zu einem glaubwürdigen Tool für die Verwendung in Hybrid-Cloud- und Edge-Netzwerkarchitekturen zu machen, in denen Sie Code auf Ihren eigenen Edge-Servern ausführen und in der Microsoft Cloud. Wenn Microsoft es nicht zu einer Option macht, können Sie es zumindest selbst erstellen.