U prezantua numri i parë i projektit Incus, në kuadër 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ë dikur ka 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 kishte mbikëqyrur zhvillimin e LXD deri në momentin kur kompania Canonical vendosi të zhvillonte LXD si një projekt të veçantë për sipërmarrje. Qëllimi i fork-ut është të ofrojë një alternativë të menaxhuar nga një komunitet të pavarur për projektin LXD, i cili është në kontroll të kompanisë Canonical. Në kuadër të projektit Incus planifikohet gjithashtu të eliminohen disa gabime konceptuale që ishin bërë gjatë zhvillimit të LXD, të cilat më parë ishte e pamundur t'i korrigjoni pa shkelur përputhshmërinë e prapme.
Incus ofron mjete për menaxhimin e centralizuar të konteinerëve dhe makinave virtuale, të instaluara si në një host ashtu edhe në një klaster të disa. serverësh. Projekti realizohet si një proces në sfond, që pranon kërkesa përmes rrjetit përmes REST API dhe mbështet blloqe të ndryshme ruajtjeje (strukturat e dosjeve, ZFS, Btrfs, LVM), snapshot-et e gjendjeve, migrimin e drejtpërdrejtë të konteinerëve të punës nga një makinë në tjetrën, dhe mjete për ruajtjen e imazheve të konteinerëve. Si runtime për ekzekutimin e konteinerëve, përdoret instrumenti LXC, i cili përfshin bibliotekën liblxc, një grup utilitarësh (lxc-create, lxc-start, lxc-stop, lxc-ls etj.), shabllonë për ndërtimin e konteinerëve dhe një grup lidhjesh për gjuhë të ndryshme programimi. Izolimi realizohet nëpërmjet mekanizmave standardë të bërthamës Linux (hapësirat e emrave, cgroups, Apparmor, SELinux, Seccomp).
Në aspektin e funksionalitetit, numri i parë i Incus, i cili përputhet me azhurnimin e fundit të lëshuar LXD 5.18 dhe është përqendruar kryesisht në ribërjen dhe organizimin e kodit, si dhe në heqjen e funksionaliteteve të vjetra. Megjithatë, në versionin e ri janë shënuar ndryshime specifike për Incus në ndërfaqen e komandës dhe API-së, të cilat nuk ishin të mundshme të përfshihen në LXD për shkak të kërkesave për ruajtjen e pjesëmarrjes pasuese. Në të ardhmen, zhvilluesit planifikojnë të transferojnë nga baza e kodit të LXD përmirësime të dobishme dhe riparime, duke shtuar gjithashtu inovacione të tyre origjinale, të cilat nëse dëshiron kompania Canonical, mund të portohen në LXD.
Ndryshimet më të dukshme:
- Eka bĂ«rĂ« kalimin nĂ« motorin SQL tĂ« integruar Cowsql â njĂ« fork i Dqlite, krijuar nga autori origjinal i Dqlite pĂ«r tĂ« njĂ«jtat arsye si Incus (dalja nga ndikimi i Canonical). Cowsql Ă«shtĂ« nĂ« pĂ«rputhje me SQLite, mbĂ«shtet replikimin e tĂ« dhĂ«nave, rikthimin automatik pas dĂ«shtimeve dhe sigurinĂ« e tillĂ« pĂ«rmes shpĂ«rndarjes sĂ« pĂ«rshtatĂ«sve nĂ« disa node.
- Në ndërfaqen e komandës u shtua komandën «incus snapshot» për menaxhimin e snapshot-eve (zëvendëson komandat e ndara lxc snapshot dhe restore). Përmes «incus snapshot» mund të kryhen operacione për krijimin, fshirjen, shfaqjen e listës, ribërjen dhe rikthimin e snapshot-eve.
- Logjistika e përpunimit të komandave «incus config trust add» dhe «incus cluster add» është ndryshuar, të cilat tani pranojnë një argument me emrin dhe kthejnë një token të saktë. Operacionet e punës me certifikat 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'u drejtuar drejtpërdrejt te komandat lxc dhe lxd. Të dërguara janë komandat e mëposhtme:
- incus admin cluster
- incus admin init
- incus admin recover
- incus admin shutdown
- incus admin waitready
- U hoqën pikë të vjetra të qasjes në API /1.0/containers dhe /1.0/virtual-machines, të cilat u zëvendësuan me /1.0/instances.
- Disku /dev/lxd u zëvendësua me /dev/incus, përmendjet në kodin e lxd u zëvendësuan me incus.
- Lloji konfigurimit tĂ« serverit kĂ«to janĂ« zĂ«vendĂ«suar me «map[string]any» nĂ« «map[string]string». ĂshtĂ« lĂ«nĂ« pas metodat e vjetra tĂ« autentikimit core.trust_password (tĂ« cilat janĂ« zĂ«vendĂ«suar me autentikimin e bazuar nĂ« tokenet), qĂ« pengonin pĂ«rdorimin e tipit «map[string]string».
- Funksionet e vjetra *Container janë hequr nga API, dhe pas implementimit të menaxhimit të makinave virtuale, janë prezantuar funksionet *Instance (për shembull, në vend të CreateContainer duhet të përdorni CreateInstance).
- ĂshtĂ« shtuar utilitari lxd-to-incus pĂ«r migrimin nga LXD nĂ« Incus (konverzimi automatizuar i skedave tĂ« konfigurimeve mbĂ«shtetet nga versione LXD 4.0 deri nĂ« 5.18). Akti i transferimit tĂ« klasterĂ«ve pĂ«r momentin nuk mbĂ«shtetet.
- Versioni minimal i mbështetur i gjuhës Go është shpallur si 1.20.
- Mbështetja për disa funksionalitete që varen nga Ubuntu ose që janë të lidhura me softuer të vjetër ose të papërdorshëm është ndalur:
- ĂshtĂ« hequr mbĂ«shtetja pĂ«r mbĂ«shtetje Ubuntu Fan (bridge.mode, fan.overlay_subnet, fan.underlay_subnet, fan.type), qĂ« varen nga patch-et e bĂ«rthamĂ«s qĂ« pĂ«rdoren vetĂ«m nĂ« Ubuntu.
- ĂshtĂ« hequr mbĂ«shtetja pĂ«r shiftfs, e lidhur me pakete tĂ« bĂ«rthamĂ«s pĂ«r Ubuntu qĂ« Ă«shtĂ« njĂ« sistem virtual i dosjeve pĂ«r ndĂ«rlidhjen e pikave tĂ« montimit me hapĂ«sirat e identitetit 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 Bazuar nĂ« Roli), tĂ« krijuar nga Canonical mbi bazĂ«n e Macaroons dhe Candid.
- Janë hequr komponentet për integrimin me MAAS (Metal-as-a-Service), një mjet për shpërndarjen e shpejtë të konfigurimeve Ubuntu.
- ĂshtĂ« hequr koncepti i aksesit nĂ« server pĂ«rmes njĂ« fjalĂ«kalimi tĂ« besueshĂ«m (core.trust_password).
Burimi: opennet.ru
