Pierwsze wydanie Incusa, rozwidlenia systemu zarządzania kontenerami LXD

Zaprezentowano pierwszą wersję projektu Incus, w ramach którego społeczność Linux Containers to rozwinięcie systemu zarządzania kontenerami LXD, stworzonego przez zespół programistów, którzy stworzyli LXD. Containers jest napisany w języku Go i licencjonowany na podstawie licencji Apache 2.0.

Przypomnijmy, że społeczność Linux Firma Containers nadzorowała rozwój LXD, zanim Canonical zdecydował się rozwijać LXD oddzielnie, jako projekt korporacyjny. Celem forka jest stworzenie niezależnej, opartej na społeczności alternatywy dla kontrolowanego przez Canonical projektu LXD. Projekt Incus planuje również usunięcie niektórych błędów koncepcyjnych popełnionych podczas rozwoju LXD, których wcześniej nie dało się naprawić bez naruszenia wstecznej kompatybilności.

Incus dostarcza narzędzia do scentralizowanego zarządzania kontenerami i maszynami wirtualnymi wdrożonymi zarówno na pojedynczym hoście, jak i w klastrze składającym się z kilku hostów. serweryProjekt jest realizowany jako proces w tle, który odbiera żądania sieciowe za pośrednictwem interfejsu REST API i obsługuje różne zaplecza pamięci masowej (drzewo katalogów, ZFS, Btrfs, LVM), migawki z wycinkami stanu, migrację na żywo działających kontenerów z jednej maszyny na drugą oraz narzędzia do przechowywania obrazów kontenerów. Zestaw narzędzi LXC służy jako środowisko wykonawcze do uruchamiania kontenerów, które obejmuje bibliotekę 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. Izolację osiągnięto za pomocą standardowych mechanizmów jądra. Linux (przestrzenie nazw, grupy c, Apparmor, SELinux, Seccomp).

Jeśli chodzi o funkcje, pierwsze wydanie Incusa jest następstwem niedawno wydanej aktualizacji LXD 5.18 i koncentruje się przede wszystkim na zmianie nazwy i reorganizacji bazy kodu, a także usuwaniu przestarzałych funkcji. Jednocześnie nowa wersja zawiera także specyficzne dla Incusa zmiany w interfejsie wiersza poleceń i API, których nie można było uwzględnić w LXD ze względu na wymagania kompatybilności wstecznej. W przyszłości programiści planują przenieść przydatne ulepszenia i poprawki z bazy kodu LXD, dodając także własne, oryginalne innowacje, które na życzenie Canonical można przenieść do LXD.

Najbardziej zauważalne zmiany:

  • Dokonano przejścia na wbudowany silnik SQL Cowsql – rozwidlenie Dqlite, stworzone przez pierwotnego autora Dqlite z tych samych powodów co Incus (wycofanie się spod wpływu Canonical). Cowsql jest kompatybilny z SQLite, obsługuje replikację danych, automatyczne odzyskiwanie po awariach i zapewnia odporność na awarie poprzez dystrybucję procedur obsługi do wielu węzłów.
  • Do interfejsu wiersza poleceń dodano polecenie „incus snapshot” służące do zarządzania migawkami (zastępując oddzielne polecenia migawki i przywracania lxc). Za pomocą „incus snapshot” możesz 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óra teraz pobiera jeden argument z nazwą i zwraca poprawny token. Operacje na certyfikacie za pomocą polecenia „incus config trust add” zostały przeniesione do osobnego polecenia „incus config trust add-certificate”.
  • Dodano polecenie „incus admin”, eliminując potrzebę bezpośredniego dostępu administratora do poleceń lxc i lxd. Dostępne są następujące podpolecenia:
    • klaster administracyjny incus
    • incus inicjalizacja administratora
    • incus administrator odzyskuje siły
    • zamknięcie administratora incus
    • Administrator incus czeka
  • Przestarzałe punkty dostępu API /1.0/containers i /1.0/virtual-machines zostały usunięte i zastąpione przez /1.0/instances.
  • Urządzenie /dev/lxd zostało zastąpione przez /dev/incus, odniesienia do lxd w kodzie zostały zastąpione przez incus.
  • Typ konfiguracje serwera Zastąpiono „map[string]any” metodą „map[string]string”. Wycofano metodę uwierzytelniania core.trust_password (zastąpiono uwierzytelnianiem opartym na tokenie), która uniemożliwiała korzystanie z 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 (np. zamiast CreateContainer należy użyć funkcji CreateInstance).
  • Dodano narzędzie lxd-to-incus do migracji z LXD do Incus (obsługiwana jest automatyczna konwersja plików konfiguracyjnych począwszy od LXD 4.0 do 5.18). Migracja klastra nie jest jeszcze obsługiwana.
  • Wersja 1.20 jest określana jako minimalna obsługiwana wersja języka Go.
  • Wsparcie dla niektórych funkcji związanych z Ubuntu lub zależne od przestarzałego lub nieobsługiwanego oprogramowania:
    • Usunięto obsługę powiązań Ubuntu Wentylator (bridge.mode, fan.overlay_subnet, fan.underlay_subnet, fan.type), zależny od poprawek jądra, używany tylko w Ubuntu.
    • Usunięto obsługę shiftfs dołączonego do pakietów jądra dla Ubuntu wirtualny system plików służący do mapowania punktów montowania na przestrzenie nazw użytkowników.
    • Usunięto obsługę systemu uwierzytelniania Candid specyficznego dla firmy Canonical.
    • Usunięto obsługę autorskiej implementacji mechanizmu uwierzytelniania RBAC (Role Based Access Control) stworzonego przez firmę Canonical w oparciu o 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 niezawodny hosting dla stron z ochroną DDoS, serwery VPS VDS 🔥 Kup niezawodny hosting stron internetowych z ochroną DDoS, serwery VPS VDS | ProHoster