Pierwsze wydanie Incus, forka systemu zarządzania kontenerami LXD

Zostało przedstawione pierwsze wydanie projektu Incus, w ramach którego społeczność Linux Containers rozwija forka systemu zarządzania kontenerami LXD, stworzonego przez dawny zespół deweloperów, który niegdyś stworzył LXD. Kod Incus napisany jest w języku Go i jest dystrybuowany na licencji Apache 2.0.

Przypomnijmy, że społeczność Linux Containers nadzorowała rozwój LXD, zanim firma Canonical postanowiła rozwijać LXD jako oddzielny projekt komercyjny. Celem forka jest zapewnienie zarządzanej przez niezależne społeczeństwo alternatywy dla projektu LXD, kontrolowanego przez firmę Canonical. W ramach projektu Incus planuje się także usunięcie niektórych błędów koncepcyjnych, które były wcześniej niemożliwe do naprawienia bez naruszenia zgodności wstecznej.

Incus zapewnia narzędzia do centralnego zarządzania kontenerami i maszynami wirtualnymi, wdrażanymi zarówno na jednym hoście, jak i w klastrze złożonym z kilku. serwerów. Projekt jest zrealizowany w formie procesu roboczego, który przyjmuje żądania przez sieć za pośrednictwem REST API i obsługuje różne backendy pamięci (drzewa katalogów, ZFS, Btrfs, LVM), migawki stanu, live-migrację działających kontenerów z jednej maszyny na drugą oraz narzędzia do przechowywania obrazów kontenerów. Jako runtime do uruchamiania kontenerów wykorzystuje się narzędzia LXC, w skład których wchodzi biblioteka liblxc, zestaw narzędzi (lxc-create, lxc-start, lxc-stop, lxc-ls itp.), szablony do budowania kontenerów oraz zestaw powiązań dla różnych języków programowania. Izolacja jest realizowana za pomocą wbudowanych mechanizmów jądra Linux (przestrzenie nazw, cgroups, Apparmor, SELinux, Seccomp).

Funkcjonalnie pierwsze wydanie Incus odpowiada niedawno wydanej aktualizacji LXD 5.18 i koncentruje się głównie na zmianie nazewnictwa oraz reorganizacji kodu, jak również na usunięciu przestarzałych funkcji. Nowa wersja zawiera również specyficzne dla Incus zmiany w interfejsie wiersza poleceń i API, które nie mogły być wprowadzone do LXD z powodu wymagań dotyczących zapewnienia zgodności wstecznej. Deweloperzy planują w przyszłości przenieść przydatne ulepszenia i poprawki z bazy kodu LXD, a także dodać swoje oryginalne innowacje, które w razie potrzeby mogą być przeniesione do LXD przez firmę Canonical.

Najbardziej zauważalne zmiany:

  • Dokonano przejścia na wbudowany silnik SQL Cowsql — fork Dqlite, stworzony przez pierwotnego autora Dqlite z tych samych powodów, co Incus (wyjście spod wpływu Canonical). Cowsql jest kompatybilny z SQLite, obsługuje replikację danych, automatyczne odzyskiwanie po awariach oraz zapewnienie odporności na awarie poprzez rozdzielenie obsługi na kilka węzłów.
  • Do interfejsu wiersza poleceń dodano polecenie „incus snapshot” do zarządzania migawkami (zastępuje osobne polecenia lxc snapshot i restore). Poprzez „incus snapshot” można uruchamiać operacje tworzenia, usuwania, wyświetlania listy, zmiany nazwy i przywracania migawki.
  • Zmieniono logikę przetwarzania poleceń „incus config trust add” i „incus cluster add”, które teraz przyjmują jeden argument z nazwą i zwracają poprawny token. Operacje związane z certyfikatem poprzez polecenie „incus config trust add” przeniesiono do osobnego polecenia „incus config trust add-certificate”.
  • Dodano polecenie „incus admin”, które zwolniło administratora z konieczności bezpośredniego korzystania z poleceń lxc i lxd. Dostępne są następujące podpolecenia:
    • incus admin cluster
    • incus admin init
    • incus admin recover
    • incus admin shutdown
    • incus admin waitready
  • Usunięto przestarzałe punkty dostępu do API /1.0/containers i /1.0/virtual-machines, które zostały zastąpione przez /1.0/instances.
  • Urządzenie /dev/lxd zostało zastąpione przez /dev/incus, a w wzmiankach w kodzie lxd zamieniono na incus.
  • Typ konfiguracji serwera Zmieniono z „map[string]any” na „map[string]string”. Przestarzała metoda uwierzytelniania core.trust_password została zastąpiona uwierzytelnianiem opartym na tokenach, co uniemożliwiało użycie typu „map[string]string”.
  • Z API usunięto przestarzałe funkcje *Container, które po wdrożeniu zarządzania maszynami wirtualnymi zostały zastąpione funkcjami *Instance (na przykład, zamiast CreateContainer należy używać CreateInstance).
  • Dodano narzędzie lxd-to-incus do migracji z LXD na Incus (wsparcie dla automatycznego konwertowania plików konfiguracyjnych, począwszy od wersji LXD 4.0 do 5.18). Przenoszenie klastrów obecnie nie jest wspierane.
  • Jako minimalnie wspierana wersja języka Go ogłoszono wydanie 1.20.
  • Wsparcie dla niektórych funkcji związanych z Ubuntu lub zależnych od przestarzałego lub nieobsługiwanego oprogramowania zostało zakończone:
    • Usunięto wsparcie dla opakowań Ubuntu Fan (bridge.mode, fan.overlay_subnet, fan.underlay_subnet, fan.type), które były zależne od łat do jądra, używanych tylko w Ubuntu.
    • Usunięto wsparcie dla shiftfs, powiązanego z pakietami jądra dla Ubuntu, dla wirtualnego systemu plików do mapowania punktów montowania na przestrzenie nazw identyfikatorów użytkowników (user namespace).
    • Usunięto wsparcie dla systemu uwierzytelniania Candid, charakterystycznego dla produktów Canonical.
    • Usunięto wsparcie dla proprietary implementacji mechanizmu uwierzytelniania RBAC (Role Based Access Control), stworzonej przez Canonical na podstawie Macaroons i Candid.
    • Usunięto komponenty do integracji z MAAS (Metal-as-a-Service), narzędziem do szybkiego wdrażania konfiguracji Ubuntu.
    • Usunięto koncepcję dostępu do serwera przy użyciu zaufanego hasła (core.trust_password).

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster