Bemutatkozott az Incus projekt első kiadása, amely keretében a Linux Containers közössége a LXD konténerkezelő rendszer forkját fejleszti, amelyet az a régi fejlesztői csapat hozott létre, akik egykor a LXD-t is készítették. Az Incus kódja Go nyelven íródott és Apache 2.0 licenc alatt terjesztik.
Emlékeztetünk arra, hogy a Linux Containers közösség irányította a LXD fejlesztését, mielőtt a Canonical úgy döntött, hogy külön fejleszti a LXD-t, mint vállalati projektet. A fork célja, hogy független közösség által irányított alternatívát kínáljon a Canonical által ellenőrzött LXD projekthez. Az Incus projekt keretében tervezik a LXD fejlesztése során elkövetett néhány koncepcionális hiba kijavítását is, amelyeket korábban nem lehetett javítani a visszafelé kompatibilitás megsértése nélkül.
Az Incus eszközöket biztosít a konténerek és virtuális gépek központosított kezeléséhez, amelyek egyetlen hoszton, valamint több hosztot tartalmazó klaszterben is futnak. szerverek. A projekt háttérfolyamattal valósul meg, amely hálózaton keresztüli REST API-n keresztül fogadja a kéréseket, és különböző tárolóháttér-támogatásokat nyújt (könyvtárfa, ZFS, Btrfs, LVM), pillanatképekkel a állapotok rögzítésére, élő migrációval futó konténerek áthelyezésére egyik gépről a másikra, valamint eszközöket a konténerképek tárolásához. A konténerek futtatásához az LXC eszközkészletet használják, amely magában foglalja a liblxc könyvtárat, egy készlet segédprogramot (lxc-create, lxc-start, lxc-stop, lxc-ls stb.), mintákat a konténerek létrehozásához, és különböző programozási nyelvekhez tartozó bind-eket. Az izolációt a Linux kernel szokásos mechanizmusai (névterek, cgroups, Apparmor, SELinux, Seccomp) biztosítják.
Funkcionalitás szempontjából az Incus első kiadása megfelel a nemrégiben kiadott LXD 5.18 frissítésnek, és elsősorban a kódalap átnevezésére és reorganizálására, valamint elavult funkciók eltávolítására összpontosít. Az új verzióban észlelhetők az Incus-ra jellemző változások a parancssori interfészben és az API-ban, amelyeket a LXD-be a visszafelé kompatibilitás miatt nem volt lehetőség módosítani. A fejlesztők a jövőben tervezték a LXD kódalapjából új, hasznos fejlesztések és hibajavítások átemelését, valamint saját eredeti újításaik hozzáadását, amelyek szükség esetén a Canonical által portolhatók a LXD-be.
A legszembetűnőbb változások:
- Átváltás történt a beágyazott SQL-motorra, a Cowsql-ra - a Dqlite forkjára, amit a Dqlite eredeti szerzője hozott létre ugyanazok miatt az okok miatt, mint az Incus (a Canonical befolyásából való kilépés). A Cowsql kompatibilis az SQLite-tel, támogatja az adatok replikálását, az automatikus helyreállítást és a hibatűrést a feldolgozók több csomópontba történő elosztásával.
- A parancssor interfészhez hozzáadva lett az «incus snapshot» parancs a snapshotok kezelésére (felváltja a különálló lxc parancsokat: snapshot és restore). Az «incus snapshot» segítségével indítható a snapshotok létrehozása, törlése, listázása, átnevezése és helyreállítása.
- Megváltozott az «incus config trust add» és az «incus cluster add» parancsok kezelési logikája, amelyek most egy érvet fogadnak el név formájában, és megfelelő tokent adnak vissza. A tanúsítványok kezelésével kapcsolatos műveletek az «incus config trust add» parancsban átkerültek a külön «incus config trust add-certificate» parancsba.
- Hozzáadva az «incus admin» parancs, amely megszünteti az adminisztrátor számára a közvetlen lxc és lxd parancsok használatának szükségességét. Az alábbiakban elérhető alparancsok:
- incus admin cluster
- incus admin init
- incus admin recover
- incus admin shutdown
- incus admin waitready
- Eltávolították a régi API-hívásokat /1.0/containers és /1.0/virtual-machines, amelyeket a /1.0/instances vált fel.
- A /dev/lxd eszköz lecserélve /dev/incus-ra, a kódban a lxd említései incus-ra lettek cserélve.
- Típus a szerver konfigurációja meg lett változtatva «map[string]any»-ról «map[string]string»-re. A core.trust_password elavult hitelesítési metódust leváltotta a tok alapú hitelesítés, amely akadályozta a «map[string]string» típus használatát.
- Az API-ból eltávolították az elavult *Container funkciókat, amelyeket az új virtuális gépek kezelésére szolgáló *Instance funkciók váltanak fel (például a CreateContainer helyett a CreateInstance-t kell használni).
- Hozzáadva az lxd-to-incus eszközt az LXD-ről Incus-ra való migrációhoz (automatikus konfigurációs fájl átalakítás támogatható az LXD 4.0-tól 5.18-ig terjedően). A klaszterek áthelyezése egyelőre nem támogatott.
- A Go nyelv minimálisan támogatott verziójaként a 1.20-as kiadás került megnevezésre.
- A bizonyos Ubuntu-ra vagy elavult vagy nem támogatott szoftverektől függő funkciók támogatása leállt:
- Eltávolították az Ubuntu Fan (bridge.mode, fan.overlay_subnet, fan.underlay_subnet, fan.type) környezetek támogatását, amelyek kernelpatch-ekre alapozódtak, és csak Ubuntu-ban használták.
- Eltávolították a shiftfs támogatását, amely a kernelt csomagokhoz kapcsolódik az Ubuntu virtuális fájlrendszerében a szerverek névtérhez (user namespace) való csatolásáért.
- Eltávolították a Canonical termékekre jellemző Candid hitelesítési rendszer támogatását.
- Eltávolították a Canonical által Macaroons és Candid alapján létrehozott, tulajdonképpen a RBAC (Szerepkör Alapú Hozzáférés-vezérlés) hitelesítési mechanizmus támogatását.
- Eltávolították a MAAS (Metal-as-a-Service) integrációs komponenseit, amely az Ubuntu konfigurációk gyors telepítéséhez szolgál.
- Eltávolították a megbízható jelszóval (core.trust_password) történő szerverhozzáférés koncepcióját.
Forrás: opennet.ru
