Erster Release von Incus, einem Fork des Container-Verwaltungssystems LXD

Die erste Ausgabe des Projekts Incus wurde vorgestellt, im Rahmen dessen die Linux-Container-Community einen Fork des Containerverwaltungssystems LXD entwickelt, das von einem frĂŒheren Entwicklerteam erstellt wurde, das einst LXD entwickelt hat. Der Code von Incus ist in Go geschrieben und wird unter der Apache 2.0-Lizenz vertrieben.

Erinnern wir uns daran, dass die Gemeinschaft der Linux-Container die Entwicklung von LXD beaufsichtigt hat, bis das Unternehmen Canonical beschloss, LXD separat als Unternehmensprojekt weiterzuentwickeln. Ziel des Forks ist es, eine von einer unabhÀngigen Gemeinschaft verwaltete Alternative zum LXD-Projekt, das unter der Kontrolle von Canonical steht, bereitzustellen. Im Rahmen des Projekts Incus ist auch geplant, einige konzeptionelle Fehler zu beheben, die bei der Entwicklung von LXD gemacht wurden und zuvor nicht behoben werden konnten, ohne die AbwÀrtskompatibilitÀt zu verletzen.

Incus bietet Werkzeuge fĂŒr das zentrale Management von Containern und virtuellen Maschinen, die sowohl auf einem einzelnen Host als auch in einem Cluster von mehreren bereitgestellt werden. Server. Das Projekt wird als Hintergrundprozess implementiert, der Anfragen ĂŒber das Netzwerk ĂŒber eine REST API entgegennimmt und verschiedene Backend-Speicher (Verzeichnishierarchie, ZFS, Btrfs, LVM) unterstĂŒtzt, Snapshots des Zustands, die Live-Migration von laufenden Containern von einem Rechner zu einem anderen und Werkzeuge zur Speicherung von Container-Images. Als Runtime zum Starten der Container wird das LXC-Toolkit verwendet, das die Bibliothek liblxc, eine Sammlung von Dienstprogrammen (lxc-create, lxc-start, lxc-stop, lxc-ls usw.), Vorlagen zum Erstellen von Containern und eine Sammlung von Bindungen fĂŒr verschiedene Programmiersprachen umfasst. Die Isolierung erfolgt mittels der Standardmechanismen des Linux-Kernels (NamensrĂ€ume, cgroups, Apparmor, SELinux, Seccomp).

In Bezug auf die FunktionalitĂ€t entspricht die erste Ausgabe von Incus dem kĂŒrzlich veröffentlichten Update von LXD 5.18 und konzentriert sich in erster Linie auf die Umbenennung und Neustrukturierung der Codebasis sowie auf die Entfernung veralteter Funktionen. In der neuen Version sind auch spezifische Änderungen in der OberflĂ€che der Kommandozeile und der API zu vermerken, die aufgrund der Anforderungen an die GewĂ€hrleistung der AbwĂ€rtskompatibilitĂ€t nicht in LXD aufgenommen werden konnten. In Zukunft planen die Entwickler, nĂŒtzliche Verbesserungen und Korrekturen aus der Codebasis von LXD zu ĂŒbertragen, sowie eigene originale Neuerungen hinzuzufĂŒgen, die im Falle des Wunsches der Firma Canonical in LXD portiert werden können.

Die auffĂ€lligsten Änderungen:

  • Der Übergang zu der eingebetteten SQL-Engine Cowsql wurde vollzogen – ein Fork von Dqlite, erstellt vom ursprĂŒnglichen Autor von Dqlite aus den gleichen GrĂŒnden wie Incus (Abkopplung von Canonical). Cowsql ist mit SQLite kompatibel, unterstĂŒtzt Datenreplikation, automatisches Wiederherstellen nach AusfĂ€llen und sorgt fĂŒr Fehlertoleranz durch die Verteilung von Bearbeitern auf mehrere Knoten.
  • Im Befehlszeilen-Interface wurde der Befehl „incus snapshot“ hinzugefĂŒgt, um Snapshots zu verwalten (ersetzt die separaten lxc-Befehle snapshot und restore). Über „incus snapshot“ können Operationen zum Erstellen, Löschen, Anzeigen von Listen, Umbenennen und Wiederherstellen von Snapshots durchgefĂŒhrt werden.
  • Die Logik zur Verarbeitung der Befehle „incus config trust add“ und „incus cluster add“ wurde geĂ€ndert, sie akzeptieren jetzt ein Argument mit dem Namen und geben ein korrektes Token zurĂŒck. Die Arbeiten mit dem Zertifikat ĂŒber den Befehl „incus config trust add“ wurden in den separaten Befehl „incus config trust add-certificate“ ĂŒbertragen.
  • Der Befehl „incus admin“ wurde hinzugefĂŒgt, wodurch der Administrator von der Notwendigkeit befreit wird, direkt auf die Befehle lxc und lxd zuzugreifen. Die folgenden Unterbefehle sind verfĂŒgbar:
    • incus admin cluster
    • incus admin init
    • incus admin recover
    • incus admin shutdown
    • incus admin waitready
  • Veraltete API-Endpunkte /1.0/containers und /1.0/virtual-machines wurden entfernt, welche durch /1.0/instances ersetzt wurden.
  • Das GerĂ€t /dev/lxd wurde durch /dev/incus ersetzt, Verweise im Code auf lxd wurden durch incus ersetzt.
  • Typ Serverkonfiguration hinzugefĂŒgt. wurde von „map[string]any“ auf „map[string]string“ geĂ€ndert. Die veraltete Authentifizierungsmethode core.trust_password wurde abgelöst (es kam eine Token-basierte Authentifizierung), die die Verwendung des Typs „map[string]string“ behinderte.
  • Veraltete Funktionen *Container wurden aus der API entfernt, die nach der Implementierung der Verwaltung von virtuellen Maschinen durch die Funktionen *Instance ersetzt wurden (z. B. sollte statt CreateContainer nun CreateInstance verwendet werden).
  • Das Tool lxd-to-incus wurde hinzugefĂŒgt, um die Migration von LXD zu Incus zu erleichtern (automatische Konvertierung von Konfigurationsdateien wird unterstĂŒtzt, beginnend mit LXD 4.0 bis 5.18). Der Transfer von Clustern wird zurzeit nicht unterstĂŒtzt.
  • Die minimal unterstĂŒtzte Version der Programmiersprache Go wurde auf 1.20 festgelegt.
  • Die UnterstĂŒtzung fĂŒr bestimmte Funktionen, die an Ubuntu gebunden sind oder von veralteter oder nicht unterstĂŒtzter Software abhĂ€ngen, wurde eingestellt:
    • Die UnterstĂŒtzung fĂŒr die Ubuntu Fan-Wrapper (bridge.mode, fan.overlay_subnet, fan.underlay_subnet, fan.type), die von Kernel-Patches abhĂ€ngt und nur in Ubuntu verwendet wird, wurde entfernt.
    • Die UnterstĂŒtzung fĂŒr shiftfs, das an Kernel-Pakete fĂŒr Ubuntu und das virtuelle Dateisystem zum Zuordnen von EinhĂ€ngepunkten mit Benutzer-ID-NamensrĂ€umen gekoppelt ist, wurde entfernt.
    • Die UnterstĂŒtzung fĂŒr das spezifische Authentifizierungssystem Candid von Canonical wurde entfernt.
    • Die UnterstĂŒtzung fĂŒr die proprietĂ€re Implementierung des Authentifizierungsmechanismus RBAC (Role Based Access Control), die von Canonical auf Basis von Macaroons und Candid erstellt wurde, wurde entfernt.
    • Die Komponenten fĂŒr die Integration mit MAAS (Metal-as-a-Service), einem Werkzeug fĂŒr die schnelle Bereitstellung von Ubuntu-Konfigurationen, wurden entfernt.
    • Das Konzept des Serverzugriffs mit einem vertrauenswĂŒrdigen Passwort (core.trust_password) wurde entfernt.

Quelle: opennet.ru

60GB SSD 8Gb DDR4