Den første udgivelse af Incus-projektet er blevet præsenteret, inden for hvilken fællesskabet Linux Containers er en forgrening af LXD-containerstyringssystemet, skabt af det oprindelige team af udviklere, der skabte LXD. Containers er skrevet i Go og licenseret under Apache 2.0-licensen.
Lad os minde dig om, at fællesskabet Linux Containere overvågede LXD-udviklingen, før Canonical besluttede at udvikle LXD separat som et virksomhedsprojekt. Målet med fork'en er at tilbyde et uafhængigt, community-drevet alternativ til det Canonical-kontrollerede LXD-projekt. Incus-projektet planlægger også at adressere nogle konceptuelle fejl, der blev begået under LXD's udvikling, som tidligere var umulige at rette uden at bryde bagudkompatibiliteten.
Incus leverer værktøjer til centraliseret styring af containere og virtuelle maskiner, der er installeret både på en enkelt vært og i en klynge af flere servereProjektet implementeres som en baggrundsproces, der modtager netværksanmodninger via en REST API og understøtter forskellige storage-backends (mappetræ, ZFS, Btrfs, LVM), snapshots med state-slices, live-migrering af kørende containere fra en maskine til en anden og værktøjer til lagring af containerbilleder. LXC-værktøjssættet bruges som en runtime til at starte containere, hvilket inkluderer liblxc-biblioteket, et sæt værktøjer (lxc-create, lxc-start, lxc-stop, lxc-ls osv.), skabeloner til at bygge containere og et sæt bindinger til forskellige programmeringssprog. Isolering opnås ved hjælp af standard kernemekanismer. Linux (navnerum, c-grupper, Apparmor, SELinux, Seccomp).
Funktionsmæssigt er dette den første udgivelse af Incus, der matcher den nyligt udgivne LXD 5.18-opdatering, og som primært fokuserer på at omdøbe og reorganisere kodebasen samt fjerne forældede funktioner. Samtidig bemærker den nye version også Incus-specifikke ændringer af kommandolinjegrænsefladen og API'en, som ikke kunne inkluderes i LXD på grund af krav til bagudkompatibilitet. I fremtiden planlægger udviklerne at portere nyttige forbedringer og rettelser fra LXD-kodebasen samt tilføje deres egne originale innovationer, som Canonical, hvis det ønskes, kan portere til LXD.
De mest bemærkelsesværdige ændringer:
- Overgangen til den indlejrede SQL-motor Cowsql er blevet implementeret - en fork af Dqlite, skabt af den oprindelige forfatter af Dqlite af samme årsager som Incus (tilbagetrækning fra Canonicals indflydelse). Cowsql er kompatibel med SQLite, understøtter datareplikering, automatisk gendannelse efter fejl og fejltolerance ved at distribuere handlers på tværs af flere noder.
- Kommandolinjegrænsefladen er blevet opdateret med kommandoen "incus snapshot" til håndtering af snapshots (erstatter de separate lxc snapshot- og restore-kommandoer). Ved at bruge "incus snapshot" kan du starte operationerne med at oprette, slette, vise listen, omdøbe og gendanne et snapshot.
- Logikken til behandling af kommandoerne "incus config trust add" og "incus cluster add" er blevet ændret, som nu accepterer ét argument med et navn og returnerer det korrekte token. Handlinger til at arbejde med et certifikat via kommandoen "incus config trust add" er blevet flyttet til en separat kommando "incus config trust add-certificate".
- Kommandoen "incus admin" er blevet tilføjet, hvilket eliminerer behovet for, at administratoren har direkte adgang til kommandoerne lxc og lxd. Følgende underkommandoer er tilgængelige:
- incus admin klynge
- incus admin init
- incus admin genoprette
- incus admin lukning
- incus admin venter klar
- De forældede API-adgangspunkter /1.0/containers og /1.0/virtual-machines er blevet fjernet og erstattet af /1.0/instances.
- Enheden /dev/lxd er blevet erstattet af /dev/incus, referencer til lxd i koden er blevet erstattet af incus.
- Type serverkonfigurationer Erstattede "map[string]any" med "map[string]string". Forældet godkendelsesmetoden core.trust_password (erstattet af tokenbaseret godkendelse), hvilket forhindrede brugen af typen "map[string]string".
- De forældede *Container-funktioner er blevet fjernet fra API'en og erstattet af *Instance-funktioner efter implementeringen af administration af virtuelle maskiner (for eksempel bør CreateInstance bruges i stedet for CreateContainer).
- Tilføjet lxd-to-incus-værktøj til migrering fra LXD til Incus (understøtter automatisk konvertering af konfigurationsfiler fra LXD 4.0 og frem til 5.18). Migrering af klynger understøttes endnu ikke.
- Release 1.20 er angivet som den mindst understøttede version af Go-sproget.
- Understøttelse af nogle funktioner relateret til Ubuntu eller afhængig af forældet eller ikke-understøttet software:
- Fjernet understøttelse af bindinger Ubuntu Fan (bridge.mode, fan.overlay_subnet, fan.underlay_subnet, fan.type), afhængig af kernelpatches, bruges kun i Ubuntu.
- Fjernede understøttelse af shiftfs bundtet med kernepakker til Ubuntu virtuelt filsystem til at knytte monteringspunkter til brugernavnerum.
- Fjernet understøttelse af det Canonical-specifikke Candid-godkendelsessystem.
- Fjernet understøttelse af den proprietære implementering af RBAC-godkendelsesmekanismen (Role Based Access Control) skabt af Canonical baseret på Macaroons og Candid.
- Fjernede komponenter til integration med MAAS (Metal-as-a-Service), et værktøj til hurtig implementering af konfigurationer Ubuntu.
- Fjernede konceptet med at få adgang til serveren ved hjælp af en betroet adgangskode (core.trust_password).
Kilde: opennet.ru
