Flatcar - Was es kann und wieso du es nutzen solltest!

26.06.2023Ricky Elfner
Cloud Cloud Native Computing Foundation Kubernetes

Flatcar Container Linux ist eine vollständig unterstützte, quelloffene Linux-Distribution, die für den Einsatz in Containerumgebungen optimiert ist. Sie wurde von der Berliner Consulting- und Entwicklungsfirma Kinvolk entwickelt und basiert auf CoreOS. Flatcar wird häufig für Container-Orchestrierungssysteme wie Kubernetes oder Docker Swarm verwendet. Daher ist es ein Betriebssystem, das speziell für die Ausführung von Containern und Cloud-native Anwendungen konzipiert wurde. Es stellt eine Alternative zu anderen Betriebssystemen wie CoreOS Container Linux oder RancherOS dar, die ebenfalls für Container-Workloads ausgelegt sind.

Wie bereits erwähnt, basiert Flatcar auf CoreOS. Der Grund für diese Entscheidung war, dass CoreOS 2018 von Red Hat übernommen wurde, woraus Red Hat Core OS (RHCOS) entstand. Diese neue Version war auf lange Sicht nicht mehr kompatibel mit der ursprünglichen Version, was viele Benutzer dazu zwang, ihr Setup anzupassen. Aus diesem Grund hat Kinvolk die letzte stabile Version von CoreOS geforked und begonnen, daraus Flatcar zu entwickeln (Ende 2019).

Im April 2021 wurde offiziell bekannt gegeben, dass Flatcar von Microsoft übernommen wird. Microsoft und Kinvolk möchten jedoch sicherstellen, dass Flatcar Container Linux für die Benutzergemeinschaft ein offenes und community-getriebenes Projekt bleibt. Microsoft agiert hierbei offiziell als Sponsor und möchte von der Open-Source-Community rund um Flatcar lernen. Es ist jedoch nicht das Ziel, eine Art “Microsoft Linux” bereitzustellen.

Der Community-Gedanke wird auch in der externen Kommunikation des Unternehmens deutlich. Es gibt entsprechende Kanäle über Matrix und Slack, um direkt mit den Maintainern zu kommunizieren. Dies bezieht sich auf Release-Informationen oder auch technische Themen. Darüber hinaus veranstalten sie regelmäßige Office Hours, Release-Planungen, Bug Smashing-Sitzungen oder Docs-Writing-Tage. Bei all diesen handelt es sich um öffentliche Online-Meetings.

Bei der Übernahme war es ebenfalls das Ziel, die gleichen Features wie bei CoreOS mitzuliefern. Dazu gehören insbesondere die Terminal-Umgebung sowie etcd, um einen zentralen Konfigurationsspeicher im Cluster-Modus zwischen den verschiedenen Flatcar-Instanzen aufzubauen. Ein weiteres wichtiges Feature, das erhalten bleibt, sind die Mikro-Updates für die einzelnen Komponenten, die auch während der Laufzeit ausgeführt werden können. Da es immer noch viele Benutzer gibt, die CoreOS nutzen, besteht die Möglichkeit, direkt auf Flatcar zu aktualisieren, da beide Systeme weiterhin kompatibel sind. Dies kann ebenfalls zur Laufzeit durchgeführt werden.

Abschließend kann man sagen, dass es sich im Grunde genommen um ein CoreOS mit Update-Garantie handelt.

Versionierung

Flatcar wird mittlerweile in vier verschiedenen Versionen veröffentlicht. Zunächst gibt es die Alpha-Version, die hauptsächlich für Entwickler gedacht ist. Darüber hinaus gibt es die Beta-Version, die meistens als Canary Release herausgegeben wird. Durch dieses Verfahren wird eine neue Version zuerst an eine kleinere Gruppe von Benutzern ausgeliefert, um mögliche Probleme frühzeitig zu erkennen und das Risiko von Ausfällen zu verringern. Für den produktiven Betrieb sollte jedoch die Stable-Version genutzt werden.

Zuletzt gibt es noch eine LTS-Version, die über ein Jahr hinweg mit Patches aktualisiert wird. Diese Updates werden über Nebraska bereitgestellt, ein FOSS-Update-Server von Kinvolk selbst. Alle 12 Monate wird eine neue Release-Version zur Verfügung gestellt, während jede Version eine Lebensdauer von 18 Monaten hat. Somit ist sichergestellt, dass man 6 Monate Zeit hat, um das entsprechende Update durchzuführen. Zum Vergleich: Bei CoreOS gab es eine solche LTS-Version nicht.

Flatcars erstes Merkmal ist, dass es sich um eine unveränderliche Infrastruktur handelt. Dabei ist das Ziel, das Betriebssystem bereits während der Provisionierung mit den gewünschten Einstellungen zu definieren oder dies dynamisch zur Laufzeit geschehen zu lassen. Da es nicht möglich sein soll, eigene Änderungen zur Laufzeit vorzunehmen, kann sichergestellt werden, dass der Zustand des Betriebssystems so gering wie möglich gehalten wird. Dies wird durch Isolation erreicht, um keine Abhängigkeiten zwischen dem Betriebssystem und der Anwendung entstehen zu lassen. Statt dessen existiert eine saubere API, die über Konfigurationsdateien dokumentiert wird. Dadurch ist es möglich, Betriebssystem-Updates ohne gefährliche Nebeneffekte durchzuführen. Durch die zuvor beschriebenen Eigenschaften handelt es sich um ein imagebasiertes Betriebssystem, das eine automatische und zustandslose Installation ermöglicht. Dies wird durch eine deklarative Konfiguration mittels Ignition erreicht. Auch vollautomatisierte Roll-Outs sowie eine einfache Integration in Orchestrierungsumgebungen wie Kubernetes sind dadurch möglich, mittels Terraform Provider.

Aufbau und Updates

Generell wurde, wie bereits beschrieben, Flatcar auf der Basis von CoreOS entwickelt, um speziell für Container-Workloads optimiert zu sein. Dieses wiederum basiert auf den Prinzipien von Gentoo, mit dem Ziel, mit einem minimalen Set an Packages zu arbeiten. Der Update-Mechanismus wurde dabei von ChromeOS übernommen.

Gehen wir nun genauer auf den Aufbau und die Update-Funktion ein. Natürlich sind auch automatische Updates und Rollbacks des Betriebssystems selbst möglich. Dies kann sichergestellt werden, indem zwei Partitionen für das Betriebssystem bereitgestellt werden. Es gibt OS-A, welches aktiv und schreibgeschützt (read-only) ist. Dies wird aus Sicherheitsgründen so eingestellt, dass keine Binaries geändert werden können. Die zweite Partition namens OS-B, ist bei der Provisionierung leer, um Speicherplatz für ein Update bereitzustellen. Beide sind mit einem Gigabyte Speicherplatz versehen. Zusätzlich gibt es noch einen kleinen Boot-Bereich und am Ende gibt es den Root-Bereich.

Durch den beschriebenen Aufbau ist es nun möglich, automatische Updates durchzuführen. Dabei wird die neue Version im Hintergrund heruntergeladen und auf der freien OS-Partition installiert. Anschließend findet ein Neustart statt, ohne dass die Root-Partition geändert wird. Dabei wird die Dependency-Chain überprüft, um festzustellen, ob die Node gesund ist. In dieser Chain wird festgelegt, welche Applikationen oder Services gestartet werden müssen, um den gewünschten Status zu erreichen. Sollten beim Neustart während des Updates Fehler auftreten, wird automatisch ein Rollback durchgeführt, um Fehler zu verhindern. Wird die Node jedoch als gesund markiert, wird die neue Partition als neue Root-Partition gekennzeichnet. Um bei automatischen Updates sicherzustellen, dass nicht zu viele Nodes gleichzeitig neustarten, kann dies entweder über etcd gesteuert werden oder über FLUO (Flatcar Linux Update Operator), wenn eine Control Plane zur Verfügung steht. Bei FLUO handelt es sich um einen Kubernetes-Operator, der speziell für die automatisierte Verwaltung von Software-Updates auf Flatcar Container Linux-Systemen entwickelt wurde. Dieser automatisiert und vereinfacht den Update-Prozess durch Überwachung, Vorbereitung und Durchführung. Auch FLUO stammt aus dem Hause Kinvolk.

Installation

Flatcar ist bei der Installation variabel, sei es bei Cloud-Anbietern, virtuellen Maschinen oder auch bei der Installation auf unterschiedlichen Bare-Metal-Systemen. Für jeden aufgelisteten Anwendungsfall gibt es eine Installationsanleitung.

  • Cloud-Anbieter

    • AWS EC2: Flatcar bietet vorkonfigurierte AMIs für seine Container-Linux-Plattform auf Amazon Web Services an, die in verschiedenen Regionen verfügbar sind und über verschiedene Methoden bereitgestellt werden können.

    • Equinix Metal: Equinix Metal bietet Bare-Metal-Cloud-Hosting an und Flatcar Container Linux ist eine der verfügbaren Betriebssystemoptionen.

      • Microsoft Azure: Flatcar Container Linux bietet offizielle Images im Azure Marketplace an und kann automatisch aktualisiert werden.

      • OpenStack: Offizielle Images verfügbar.

    • VMware

    • Google Compute Engine: Offizielle Images verfügbar.

    • Google Cloud Launcher: Bietet eine schnelle Möglichkeit, FCL in der Google Cloud zu starten und zu verwenden.

      • Digital Ocean: Als Custom Image möglich.
    • Hetzner

  • Custom Images

  • Virtuelle Maschinen

    • libvirt

    • QEMU

    • Vagrant

    • VirtualBox

  • Bare Metal

    • ISO

    • iPXE / PXE

    • Raspberry Pi 4

    • Installationsskript

Fazit

Zusammenfassend kann man sagen, dass Flatcar eine Open-Source-Container-Linux-Distribution ist, die auf CoreOS basiert und von Kinvolk entwickelt wird. Die Distribution konzentriert sich darauf, ein schlankes, performantes, sicheres und zuverlässiges Betriebssystem für die Verwaltung von Containern bereitzustellen. Ein wichtiges Merkmal von Flatcar ist die automatische Aktualisierungsfunktion, die sicherstellt, dass das Betriebssystem immer auf dem neuesten Stand ist und potentielle Sicherheitsbedrohungen minimiert werden. Besonders für Nutzer, die immer noch CoreOS verwenden, ist dies eine gute Gelegenheit, auf Flatcar zu wechseln, da man dieselben Funktionen hat und zudem aktuelle Updates erhält. Der Einstieg wird mit einer Anleitung direkt von Flatcar zusätzlich erleichtert.

Ricky Elfner

Ricky Elfner – Denker, Überlebenskünstler, Gadget-Sammler. Dabei ist er immer auf der Suche nach neuen Innovationen, sowie Tech News, um immer über aktuelle Themen schreiben zu können.