Den første udgave af projektet Incus er blevet præsenteret, hvor Linux Containers-fællesskabet udvikler en fork af containersystemet LXD, skabt af det tidligere udviklingsteam, der engang skabte LXD. Koden til Incus er skrevet i Go og distribueres under Apache 2.0 licensen.
Vi minder om, at Linux Containers-fællesskabet styrede udviklingen af LXD, indtil Canonical besluttede at udvikle LXD separat som et kommercielt projekt. Formålet med fork'en er at tilbyde et styret alternativ til LXD-projektet, som er under kontrol af Canonical. I rammerne af projektet Incus er målet også at rette nogle konceptuelle fejl, der blev begået under udviklingen af LXD, og som tidligere ikke kunne rettes uden at krænke bagudkompatibiliteten.
Incus tilbyder værktøjer til centralt at administrere containere og virtuelle maskiner, der er implementeret både på en enkelt vært og i et cluster af flere. servere. Projektet er implementeret som en baggrundsproces, der modtager netværksanmodninger via REST API og understøtter forskellige lagerbackends (mappetræ, ZFS, Btrfs, LVM), snapshots af tilstande, live-migrering af kørende containere fra én maskine til en anden samt værktøjer til opbevaring af containerbilleder. Som runtime til at køre containere anvendes LXC-værktøjer, som inkluderer liblxc-biblioteket, en række værktøjer (lxc-create, lxc-start, lxc-stop, lxc-ls osv.), skabeloner til bygge containere og et sæt bindinger til forskellige programmeringssprog. Isolation opnås ved hjælp af de indbyggede mekanismer i Linux-kernen (navnerum, cgroups, Apparmor, SELinux, Seccomp).
Funktionelt svarer den første udgave af Incus til den nyligt frigivne opdatering LXD 5.18, med fokus primært på omdøbning og reorganisering af kodebasen samt fjernelse af forældede funktioner. Denne nye version indeholder også specifikke ændringer for Incus i kommandolinje- og API-interfacet, som ikke kunne inkluderes i LXD på grund af kravene til at sikre bagudkompatibilitet. I fremtiden planlægger udviklerne at overføre nyttige forbedringer og rettelser fra LXD's kodebase, samt tilføje deres egne originale innovationer, der med Canonicals ønske kan porteres til LXD.
De mest iøjefaldende ændringer:
- Overgangen til den indbyggede SQL-motor Cowsql er gennemført — en fork af Dqlite, skabt af den oprindelige forfatter af Dqlite af samme grunde som Incus (udtræden af indflydelsen fra Canonical). Cowsql er kompatibel med SQLite, understøtter datareplication, automatisk genopretning efter fejl og sikring af fejltolerance ved at distribuere behandlere på flere noder.
- Kommandoen «incus snapshot» er blevet tilføjet til kommandolinjegrænsefladen for at administrere snapshots (erstatte de separate lxc-kommandoer snapshot og restore). Gennem «incus snapshot» kan man udføre operationer til oprettelse, sletning, visning af liste, omdøbning og genopretning af snapshots.
- Logikken i behandling af kommandoerne «incus config trust add» og «incus cluster add» er ændret, så de nu accepterer et enkelt argument med navnet og returnerer et korrekt token. Operationer relateret til certifikatet gennem 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 befrier administratoren fra at skulle henvende sig direkte til kommandoerne lxc og lxd. Følgende underkomandoer er tilgængelige:
- incus admin cluster
- incus admin init
- incus admin recover
- incus admin shutdown
- incus admin waitready
- De forældede API-endepunkter /1.0/containers og /1.0/virtual-machines er blevet fjernet, og er blevet erstattet af /1.0/instances.
- Enheden /dev/lxd er blevet erstattet med /dev/incus, og omtaler i koden fra lxd er blevet ændret til incus.
- Type serverkonfiguration er ændret fra «map[string]any» til «map[string]string». Den forældede godkendelsesmetode core.trust_password er blevet fjernet (og er blevet erstattet med token-baseret godkendelse), som forhindrer brugen af typen «map[string]string».
- De forældede funktioner *Container er blevet fjernet fra API'et, og er blevet erstattet med funktionerne *Instance efter implementeringen af virtuel maskinehåndtering (for eksempel bør CreateContainer erstattes med CreateInstance).
- Værktøjet lxd-to-incus er blevet tilføjet til migrering fra LXD til Incus (automatisk konvertering af konfigurationsfiler understøttes fra version LXD 4.0 til 5.18). Overførsel af klynger understøttes dog ikke endnu.
- Version 1.20 af Go-sprog er erklæret som den minimum understøttede version.
- Understøttelsen af visse funktioner, der er afhængige af Ubuntu eller afhængige af forældet eller ikke-understøttet software, er blevet afsluttet:
- Understøttelsen af Ubuntu Fan-bindings (bridge.mode, fan.overlay_subnet, fan.underlay_subnet, fan.type), der er afhængige af patches til kernen, der kun bruges i Ubuntu, er blevet fjernet.
- Understøttelsen af shiftfs, der er knyttet til pakker med kerne for Ubuntu, en virtuel filsystem til at kortlægge monteringspunkter til bruger-ID-navnerum, er blevet fjernet.
- Understøttelsen af Candid-autentificeringssystemet, specifikt for Canonical-produkter, er blevet fjernet.
- Understøttelsen af den proprietære implementering af RBAC (Role Based Access Control) autentificeringsmekanismen, udviklet af Canonical baseret på Macaroons og Candid, er blevet fjernet.
- Komponenter til integration med MAAS (Metal-as-a-Service), værktøjet til hurtig udrulning af Ubuntu-konfigurationer, er blevet fjernet.
- Konceptet med adgang til serveren via et betroet password (core.trust_password) er blevet fjernet.
Kilde: opennet.ru
