Incus layihəsinin ilk buraxılışı təqdim olundu, onun çərçivəsində Linux Konteynerlər icması bir vaxtlar LXD-ni yaradan köhnə inkişaf komandası tərəfindən yaradılmış LXD konteyner idarəetmə sisteminin çəngəlini inkişaf etdirir. Incus kodu Go proqramında yazılır və Apache 2.0 lisenziyası altında paylanır.
Xatırladaq ki, Canonical LXD-ni korporativ layihə kimi ayrıca inkişaf etdirməyə qərar verməmişdən əvvəl Linux Konteynerlər icması LXD-nin inkişafına nəzarət edirdi. Çəngəlin məqsədi Canonical tərəfindən idarə olunan LXD layihəsinə cəmiyyət tərəfindən idarə olunan müstəqil alternativ təmin etməkdir. Incus layihəsi həmçinin LXD-nin inkişafı zamanı buraxılmış və geriyə doğru uyğunluğu pozmadan əvvəllər düzəldilə bilməyən bəzi konseptual səhvləri aradan qaldırmağı planlaşdırır.
Incus həm tək bir hostda, həm də bir neçə klasterdə yerləşdirilən konteynerlərin və virtual maşınların mərkəzləşdirilmiş idarə olunması üçün alətlər təqdim edir. serverlərLayihə, REST API vasitəsilə şəbəkə sorğularını qəbul edən və müxtəlif saxlama arxa planlarını (qovluq ağacı, ZFS, Btrfs, LVM), vəziyyət dilimləri ilə anlıq görüntüləri, işləyən konteynerlərin bir maşından digərinə canlı miqrasiyasını və konteyner şəkillərini saxlamaq üçün alətləri dəstəkləyən fon prosesi kimi həyata keçirilir. LXC alət dəsti, liblxc kitabxanası, bir sıra kommunal xidmətlər (lxc-create, lxc-start, lxc-stop, lxc-ls və s.), konteynerlər qurmaq üçün şablonlar və müxtəlif proqramlaşdırma dilləri üçün bir sıra bağlamalar da daxil olmaqla konteynerləri işə salmaq üçün işləmə müddəti kimi istifadə olunur. İzolyasiya standart Linux nüvə mexanizmləri (ad boşluqları, cgroups, Apparmor, SELinux, Seccomp) istifadə edilərək əldə edilir.
Xüsusiyyət baxımından, ilk Incus buraxılışı bu yaxınlarda buraxılmış LXD 5.18 yeniləməsini izləyir və ilk növbədə kod bazasının adının dəyişdirilməsinə və yenidən təşkilinə, həmçinin köhnəlmiş xüsusiyyətlərin silinməsinə yönəlib. Eyni zamanda, yeni versiyada geriyə uyğunluq tələblərinə görə LXD-ə daxil edilə bilməyən komanda xətti interfeysi və API-də Incus-a xas dəyişikliklər də daxildir. Gələcəkdə tərtibatçılar LXD kod bazasından faydalı təkmilləşdirmələri və düzəlişləri köçürməyi, həmçinin Canonical istəsə LXD-yə köçürə bilən öz orijinal yeniliklərini əlavə etməyi planlaşdırırlar.
Ən diqqət çəkən dəyişikliklər:
- Daxili SQL mühərriki Cowsql-ə keçid edildi - Dqlite-nin orijinal müəllifi tərəfindən Incus ilə eyni səbəblərdən (Canonical-ın təsirindən çıxmaq) yaradılmış Dqlite çəngəlidir. Cowsql SQLite ilə uyğun gəlir, məlumatların təkrarlanmasını, nasazlıqların avtomatik bərpasını dəstəkləyir və işləyiciləri çoxsaylı qovşaqlar arasında paylayaraq xətaya dözümlülük təmin edir.
- Anlık görüntüləri idarə etmək üçün əmr xətti interfeysinə “incus snapshot” əmri əlavə edilmişdir (ayrıca snapshot dəyişdirmək və lxc əmrlərini bərpa etmək). “Incus snapshot” vasitəsilə siz snapshot yaratmaq, silmək, siyahı göstərmək, adını dəyişmək və bərpa etmək əməliyyatlarını icra edə bilərsiniz.
- “incus config trust add” və “incus cluster add” əmrlərinin işlənməsi məntiqi dəyişdirilib, indi adla bir arqument götürür və düzgün işarəni qaytarır. “incus config trust add” əmri ilə sertifikatla əməliyyatlar ayrıca “incus config trust add-certificate” əmrinə köçürüldü.
- Administratorun lxc və lxd əmrlərinə birbaşa daxil olması ehtiyacını aradan qaldıran "incus admin" əmri əlavə edildi. Aşağıdakı alt əmrlər mövcuddur:
- incus admin klaster
- incus admin init
- incus admin bərpa edin
- incus admin bağlanması
- incus admin gözləməyə hazırdır
- Köhnəlmiş API giriş nöqtələri /1.0/containers və /1.0/virtual-machines silindi, /1.0/instances ilə əvəz olundu.
- /dev/lxd cihazı /dev/incus ilə əvəz olundu, kodda lxd-ə istinadlar incus ilə əvəz olundu.
- Növü server konfiqurasiyaları "map[string]any" "map[string]string" ilə əvəz edildi. "map[string]string" növünün istifadəsinin qarşısını alan core.trust_password identifikasiya metodu (token əsaslı identifikasiya ilə əvəz edildi) köhnəldi.
- Köhnəlmiş *Konteyner funksiyaları API-dən silindi, onlar virtual maşın idarəetməsi həyata keçirildikdən sonra *Nümunə funksiyaları ilə əvəz olundu (məsələn, CreateContainer əvəzinə CreateInstance istifadə edilməlidir).
- LXD-dən Incus-a keçid üçün lxd-to-incus yardım proqramı əlavə edildi (konfiqurasiya fayllarının avtomatik çevrilməsi LXD 4.0-dan 5.18-ə qədər dəstəklənir). Klaster miqrasiyası hələ dəstəklənmir.
- Buraxılış 1.20 Go dilinin minimum dəstəklənən versiyası olaraq ifadə edilir.
- Ubuntu üçün doğma olan və ya köhnəlmiş və ya dəstəklənməyən proqram təminatına əsaslanan bəzi funksiyalar dayandırılıb:
- Yalnız Ubuntu-da istifadə edilən kernel yamaqlarından asılı olan Ubuntu Fan bağları (bridge.mode, fan.overlay_subnet, fan.underlay_subnet, fan.type) üçün dəstək silindi.
- Quraşdırma nöqtələrini istifadəçi ad məkanlarına uyğunlaşdırmaq üçün Ubuntu virtual fayl nüvəsi paketlərinə bağlı shiftflər üçün dəstək silindi.
- Canonical xüsusi Candid autentifikasiya sistemi üçün dəstək silindi.
- Macaroons və Candid əsasında Canonical tərəfindən yaradılmış RBAC (Rola Əsaslı Giriş Nəzarəti) autentifikasiya mexanizminin mülkiyyət hüququ ilə həyata keçirilməsi üçün dəstək silindi.
- Ubuntu konfiqurasiyalarını tez bir zamanda yerləşdirmək üçün alətlər dəsti olan MAAS (Xidmət kimi Metal) ilə inteqrasiya üçün komponentlər silindi.
- Etibarlı paroldan (core.trust_password) istifadə edərək serverə daxil olmaq konsepsiyası silindi.
Mənbə: opennet.ru
