U publikua versioni i parë i projektit Incus, në kuadër të të cilit komuniteti i Linux Containers zhvillon një fork të sistemit të menaxhimit të kontejnerëve LXD, i krijuar nga ekipi i vjetër i zhvilluesve që njëherë kishte krijuar LXD. Kodi i Incus është shkruar në gjuhën Go dhe shpërndahet nën licencën Apache 2.0.
Kujtojmë se komuniteti i Linux Containers ka drejtuar zhvillimin e LXD para se kompanisë Canonical t'i vendosë që ta zhvillojë LXD si një projekt të veçantë përndryshe. Qëllimi i forkut është ofrimi i një alternative të menaxhuar nga një komunitet të pavarur për projektin LXD, i cili është nën kontrollin e kompanisë Canonical. Në kuadër të projektit Incus, planifikohet gjithashtu të korrigjohen disa gabime konceptuale që ishin bërë gjatë zhvillimit të LXD, të cilat më parë ishin të pamundura për t'u rregulluar pa ndikuar në përputhshmërinë mbrapa.
Incus ofron mjete për menaxhim të centralizuar të kontejnerëve dhe makinerive virtuale të vendosura si në një host ashtu edhe në një klaster prej disa. servera. Projekti është implementuar si një proces në sfond, duke pranuar kërkesat përmes rrjetit përmes REST API dhe duke mbështetur blloqet e ndryshme të ruajtjes (tree directories, ZFS, Btrfs, LVM), snapshot me prerjen e gjendjes, migrimin live të kontejnerëve në funksionim nga një makinë në tjetrën dhe mjete për ruajtjen e imazheve të kontejnerëve. Si runtime për ekzekutimin e konteinerëve përdoret mjeti LXC, i cili përfshin bibliotekën liblxc, një grup mjetesh (lxc-create, lxc-start, lxc-stop, lxc-ls, etj.), shabllona për ndërtimin e kontejnerëve dhe një grup lidhjesh për gjuhë të ndryshme programuese. Izolimi realizohet duke përdorur mekanizmat standard të kernelit Linux (hapësirat e emrave, cgroups, Apparmor, SELinux, Seccomp).
Funksionaliteti i versionit të parë të Incus, i cili është në përputhje me përditësimin e fundit të LXD 5.18 dhe është fokusuar kryesisht në rinovimin dhe riorganizimin e bazës së kodit, si dhe në heqjen e mundësive të vjetra. Ndërkohë, në versionin e ri vërehen ndryshime të veçanta për Incus në ndërfaqen e komandës dhe API, të cilat nuk mund të ishin përfshirë në LXD për shkak të kërkesave për të siguruar përputhshmërinë mbrapa. Në të ardhmen, zhvilluesit planifikojnë të transferojnë në bazën e kodit të LXD përmirësime të dobishme dhe korrigjime, duke shtuar gjithashtu inovacione të tyre origjinale, të cilat, nëse dëshiron kompania Canonical, mund të transferohen në LXD.
Ndryshimet më të dukshme:
- ĂshtĂ« realizuar kalimi nĂ« motorin SQL tĂ« integruar Cowsql - njĂ« fork i Dqlite, i krijuar nga autori origjinal i Dqlite pĂ«r tĂ« njĂ«jtat arsye si Incus (dalja nga nĂ«n ndikimin e Canonical). Cowsql Ă«shtĂ« nĂ« pĂ«rputhje me SQLite, mbĂ«shtet replikimin e tĂ« dhĂ«nave, rikuperimin automatik nga dĂ«shtimet dhe sigurimin e qĂ«ndrueshmĂ«risĂ« pĂ«rmes shpĂ«rndarjes sĂ« trajtuesve nĂ« disa nyje.
- NĂ« ndĂ«rfaqen e komandĂ«s u shtua komanda âincus snapshotâ pĂ«r menaxhimin e snapshot-Ă«ve (zĂ«vendĂ«son komandat e veçanta lxc snapshot dhe restore). NĂ«pĂ«rmjet âincus snapshotâ mund tĂ« fillonim operacione tĂ« krijimit, fshirjes, tregimit tĂ« listĂ«s, rinovimit dhe rikthimit tĂ« njĂ« snapshot-i.
- Logjika e trajtimit tĂ« komandave âincus config trust addâ dhe âincus cluster addâ Ă«shtĂ« ndryshuar, tĂ« cilat tani pranojnĂ« njĂ« argument me emrin dhe kthejnĂ« njĂ« token korrekt. Operacionet e punĂ«s me certifikatĂ«n pĂ«rmes komandĂ«s âincus config trust addâ janĂ« transferuar nĂ« njĂ« komandĂ« tĂ« veçantĂ« âincus config trust add-certificateâ.
- U shtua komanda âincus adminâ, e cila e çliron administratorin nga nevoja pĂ«r t'iu drejtuar drejtpĂ«rdrejt komandave lxc dhe lxd. JanĂ« tĂ« disponueshme nĂ«ntĂ«komanda tĂ« siguientes:
- incus admin cluster
- incus admin init
- incus admin recover
- incus admin shutdown
- incus admin waitready
- U hoqën piketat e vjetruara të aksesit në API /1.0/containers dhe /1.0/virtual-machines, të cilat janë zëvendësuar nga /1.0/instances.
- Dispositivi /dev/lxd është zëvendësuar me /dev/incus, referencat në kodin lxd janë zëvendësuar me incus.
- Tipo konfigurimin e serverit zĂ«vendosur nga âmap[string]anyâ nĂ« âmap[string]stringâ. U anulua metoda e vjetruar e autentifikimit core.trust_password (e cila Ă«shtĂ« zĂ«vendĂ«suar me autentifikimin bazuar nĂ« token), qĂ« pengonte pĂ«rdorimin e tipit âmap[string]stringâ.
- U hoqën funksionet e vjetruara të API-së *Container, të cilat janë zëvendësuar nga funksionet *Instance pas implementimit të menaxhimit të makinerive virtuale (për shembull, në vend të CreateContainer duhet përdorur CreateInstance).
- U shtua një utilitar lxd-to-incus për migrimin nga LXD në Incus (mbështetet konvertimi automatik i skedarëve të konfigurimit, duke filluar nga versioni LXD 4.0 deri në 5.18). Transferimi i klasterëve aktualisht nuk mbështetet.
- Si versioni minimal i mbështetur i gjuhës Go është shpallur versioni 1.20.
- U ndalua mbështetja për disa funksione të lidhura me Ubuntu ose të varura nga softueri i vjetruar ose i pa mbështetur:
- U hoq mbështetja për lidhjet Ubuntu Fan (bridge.mode, fan.overlay_subnet, fan.underlay_subnet, fan.type), të cilat varen nga patches për kernel, të përdorura vetëm në Ubuntu.
- Mbështetja për shiftfs, e lidhur me paketat e bërthamës për Ubuntu, virtualizimi i sistemit të skedave për të lidhur pikët e montimit me hapësirat e emrave të identifikuesve të përdoruesve (user namespace), është hequr.
- Mbështetja për sistemin e autentikimit Candid, specifik për produktet Canonical, është hequr.
- Mbështetja për implementimin pronar të mekanizmit të autentikimit RBAC (Kontrolli i Qasjes mbi Bazën e Roli), të krijuar nga Canonical në bazë të Macaroons dhe Candid, është hequr.
- Komponentët për integrimin me MAAS (Metal-as-a-Service), mjetin për shpërndarjen e shpejtë të konfigurimeve të Ubuntu, janë hequr.
- Koncepti i qasjes në server përmes një passwordi të besueshëm (core.trust_password) është hequr.
Burimi: opennet.ru
