Esitati esimene versioon projekti Incus, kus Linux Containersi kogukond arendab LXD konteinerihaldussüsteemi fork'i, mille lõi endine arendajate meeskond, kes kunagi LXD välja töötas. Incuse kood on kirjutatud Go keeles ja levitatakse Apache 2.0 litsentsi alusel.
Kä Erinner, et Linux Containers kogukond oli LXD arenduse eestvedaja, kuni Canonical otsustas arendada LXD-d eraldi ettevõtte projektina. Haru eesmärk on pakkuda sõltumatu kogukonna haldatud alternatiivi Canonicali kontrolli all olevale LXD projektile. Incus projekti raames on plaanis lahendada ka mõned LXD arendamisel tehtud kontseptuaalsed vead, mida ei saanud varem parandada vastavust rikkumata.
Incus pakub vahendeid konteinerite ja virtuaalmasinate keskseks haldamiseks, mis on paigaldatud nii ühele hostile kui ka mitme hosti klastrisse. serverid. Projekt on realiseeritud taustaprotsessina, mis aktsepteerib päringuid üle võrgu REST API kaudu ja toetab erinevaid salvestusbackende (kaustapuu, ZFS, Btrfs, LVM), seisundilõike snäpšoteid, töötavate konteinerite elumigratsiooni ühest seadmest teise ning konteineripiltide salvestusvahendeid. Konteinerite käitamiseks kasutatakse LXC tööriistakomplekti, mille koosseisu kuulub liblxc raamatukogu, utiliidid (lxc-create, lxc-start, lxc-stop, lxc-ls jne), konteinerite loomiseks mõeldud mallid ja erinevatele programmeerimiskeeltele mõeldud liidesed. Isolatsiooni teostatakse Linuxi tuuma standardmehhanismide (nimetuste ruumid, cgroups, AppArmor, SELinux, Seccomp) abil.
Funksionaalselt vastab esimene Incuse versioon hiljuti välja antud LXD 5.18 uuendusele, keskendudes peamiselt koodibaasi ümbernimetamisele ja korraldamisele, samuti vananenud funktsioonide eemaldamisele. Samuti märgitakse, et Incuse uues versioonis on käskude rea ja API-d täiendavad muudatused, mida ei saanud LXD-sse lisada tagurpidi ühilduvuse nõuete tõttu. Edasi kavatsevad arendajad tuua LXD koodibaasist kasulikke täiustusi ja parandusi, lisades ka oma originaalsed uuendused, mis vajadusel saavad Canonicali poolt LXD-sse edastatud.
Kõige olulisemad muudatused:
- Muutus on toimunud Cowsqli, sisseehitatud SQL-mootori, mis on Dqlite fork ja mille lõi Dqlite originaalauthor sama põhjusel nagu Incus (vabanev Canonicali mõjust). Cowsql on SQLite'iga ühilduv, toetab andmete replikatsiooni, automaatset taastumist ja tagab tõrke taluvuse, jagades töötlejad erinevatele sõlmede.
- Käskude reas on lisatud käsk "incus snapshot" sprieks snope, asendades eraldi lxc käskude snapshot ja restore. „Incus snapshot“ kaudu saab alustada tegevusi, nagu loomine, kustutamine, nimekirja kuvamine, ümbernimetamine ja taastamine.
- Muudetud on käskude "incus config trust add" ja "incus cluster add" töötlusloogikat, mis nüüd võtavad vastu ühe argumento nimega ja tagastavad korrektsed tokenid. Sertifikaadiga seotud toimingud käskluse "incus config trust add" kaudu on viidud eraldi käsku "incus config trust add-certificate".
- Lisatud on käsk „incus admin“, mis vabastab administraatori vajadusest otse lxc ja lxd käskude loomise järele. Saadaval on järgmised alammehed:
- incus admin cluster
- incus admin init
- incus admin recover
- incus admin shutdown
- incus admin waitready
- Kustutatud on vananenud API juurde pääsemise punktid "/1.0/containers" ja "/1.0/virtual-machines", mis on asendatud "/1.0/instances".
- Seade "/dev/lxd" on asendatud "/dev/incus", koodis esinevad lxd-ist viidatud on asendatud incus-iga.
- Tüüp serveri konfiguratsiooni asendatud «map[string]any» peale «map[string]string». Eemaldatud vananenud autentimise meetod core.trust_password (asendatud tokenipõhise autentimisega), mis takistas «map[string]string» tüübi kasutamist.
- API-st on eemaldatud vananenud funktsioonid *Container, mille asemel on virtuaalmasinate haldamise rakendamise järel tulnud funktsioonid *Instance (näiteks CreateContainer asemel tuleb kasutada CreateInstance).
- Lisatud utiliit lxd-to-incus migratsiooniks LXD-st Incus-esse (toetatakse automaatset konfiguratsioonifailide ümberkonverteerimist alates LXD versioonist 4.0 kuni 5.18). Klastri üleviimist praegu ei toetata.
- Minimaalse toetatud Go keele versioonina on välja kuulutatud 1.20.
- Mõnede Ubuntu-ga seotud või vananenud või mitte toetatud tarkvaraga seotud võimaluste tugi on lõpetatud:
- Eemaldatud on Ubuntu Fan-i wrapper'id (bridge.mode, fan.overlay_subnet, fan.underlay_subnet, fan.type), mis sõltusid kernelipatch'idest, mida kasutati ainult Ubuntu's.
- Eemaldatud on shiftfs-i tugi, mis oli seotud Ubuntu tuumapaketiga, et kaardistada mount-punktid kasutaja ruumide identifikaatorite (user namespace) vahel.
- Eemaldatud on autentimissüsteemi Candid tugi, mis on spetsiifiline Canonicali toodetele.
- Eemaldatud on Cannonicali loodud omandiõiguslik rakendus RBAC (Role Based Access Control) autentimismehhanismi, mis põhineb Macaroons'il ja Candid'il.
- Eemaldatud on MAAS (Metal-as-a-Service) integreerimise komponendid, tööriistade kogum Ubuntu konfiguratsioonide kiireks juurutamiseks.
- Eemaldatud on usaldusväärset parooli (core.trust_password) kasutades serverisse sisenemise kontseptsioon.
Allikas: opennet.ru
