Linux Containers topluluğunun, bir zamanlar LXD'yi yaratan eski geliştirme ekibi tarafından oluşturulan LXD konteyner yönetim sisteminin bir çatalını geliştirdiği Incus projesinin ilk sürümü sunuldu. Incus kodu Go'da yazılmıştır ve Apache 2.0 lisansı altında dağıtılmaktadır.
Canonical, LXD'yi kurumsal bir proje olarak ayrı olarak geliştirmeye karar vermeden önce Linux Containers topluluğunun LXD'nin gelişimini denetlediğini hatırlayın. Çatalın amacı, Canonical kontrollü LXD projesine bağımsız, topluluk odaklı bir alternatif sunmaktır. Incus projesi aynı zamanda LXD'nin geliştirilmesi sırasında yapılan ve daha önce geriye dönük uyumluluğu bozmadan düzeltilemeyen bazı kavramsal hataları da ele almayı planlıyor.
Incus, hem tek bir sunucuda hem de birden fazla sunucudan oluşan bir kümede konuşlandırılmış konteynerlerin ve sanal makinelerin merkezi yönetimi için araçlar sağlar. sunucularProje, REST API aracılığıyla ağ isteklerini alan ve çeşitli depolama arka uçlarını (dizin ağacı, ZFS, Btrfs, LVM), durum dilimleri içeren anlık görüntüleri, çalışan konteynerlerin bir makineden diğerine canlı geçişini ve konteyner imajlarını depolama araçlarını destekleyen bir arka plan işlemi olarak uygulanmıştır. Konteynerleri başlatmak için çalışma zamanı olarak LXC araç seti kullanılır; bu set liblxc kütüphanesini, bir dizi yardımcı programı (lxc-create, lxc-start, lxc-stop, lxc-ls, vb.), konteyner oluşturma şablonlarını ve çeşitli programlama dilleri için bir dizi bağlayıcıyı içerir. İzolasyon, standart Linux çekirdek mekanizmaları (ad alanları, cgrupları, Apparmor, SELinux, Seccomp) kullanılarak sağlanır.
Özellik açısından Incus'un ilk sürümü, yakın zamanda yayımlanan LXD 5.18 güncellemesini takip ediyor ve öncelikle kod tabanını yeniden adlandırmaya ve yeniden düzenlemeye, ayrıca kullanımdan kaldırılan özellikleri kaldırmaya odaklanıyor. Yeni sürüm aynı zamanda komut satırı arayüzünde ve API'de geriye dönük uyumluluk gereksinimleri nedeniyle LXD'ye dahil edilemeyen Incus'a özgü değişiklikleri de içeriyor. Gelecekte geliştiriciler, LXD kod tabanından yararlı iyileştirmeler ve düzeltmeler aktarmayı ve ayrıca Canonical'in isteği üzerine LXD'ye taşınabilecek kendi orijinal yeniliklerini de eklemeyi planlıyor.
En dikkat çekici değişiklikler:
- Dqlite'nin orijinal yazarı tarafından Incus ile aynı nedenlerle (Canonical'in etkisinden çekilme) oluşturulan, Dqlite'nin bir çatalı olan gömülü SQL motoru Cowsql'e geçiş yapıldı. Cowsql, SQLite ile uyumludur, veri çoğaltmayı, hatalardan otomatik kurtarmayı destekler ve işleyicileri birden fazla düğüme dağıtarak hata toleransı sağlar.
- Anlık görüntüleri yönetmek için komut satırı arayüzüne “incus anlık görüntüsü” komutu eklendi (ayrı anlık görüntü ve geri yükleme lxc komutlarının yerine). “Incus anlık görüntüsü” aracılığıyla anlık görüntü oluşturma, silme, liste görüntüleme, yeniden adlandırma ve geri yükleme işlemlerini gerçekleştirebilirsiniz.
- "Incus config Trust Add" ve "Incus Cluster Add" komutlarını işleme mantığı değiştirildi; bu, artık bir adla birlikte bir argüman alıyor ve doğru jetonu döndürüyor. "incus config Trust add" komutu aracılığıyla sertifikayla yapılan işlemler, ayrı bir "incus config Trust add-certificate" komutuna taşındı.
- Yöneticinin lxc ve lxd komutlarına doğrudan erişme ihtiyacını ortadan kaldıran "incus admin" komutu eklendi. Aşağıdaki alt komutlar mevcuttur:
- incus yönetici kümesi
- incus yönetici girişi
- incus admin kurtar
- incus yönetici kapatma
- incus yönetici beklemeye hazır
- Eski API erişim noktaları /1.0/containers ve /1.0/virtual-machines kaldırıldı, yerini /1.0/instances aldı.
- /dev/lxd aygıtı /dev/incus ile değiştirildi, koddaki lxd referansları incus ile değiştirildi.
- Tip sunucu yapılandırmaları "map[string]any" yerine "map[string]string" kullanıldı. "map[string]string" türünün kullanımını engelleyen core.trust_password kimlik doğrulama yöntemi kullanımdan kaldırıldı (token tabanlı kimlik doğrulama ile değiştirildi).
- Eski *Container işlevleri API'den kaldırıldı ve bunların yerini, sanal makine yönetiminin uygulanmasından sonra *Instance işlevleri aldı (örneğin, CreateContainer yerine CreateInstance kullanılmalıdır).
- LXD'den Incus'a geçiş için lxd-to-incus yardımcı programı eklendi (yapılandırma dosyalarının otomatik dönüştürülmesi LXD 4.0'dan 5.18'e kadar desteklenmektedir). Küme geçişi henüz desteklenmiyor.
- Sürüm 1.20, Go dilinin desteklenen minimum sürümü olarak belirtiliyor.
- Ubuntu'ya özgü olan veya güncelliğini kaybetmiş ya da desteklenmeyen yazılımlara dayanan bazı özellikler kullanımdan kaldırılmıştır:
- Yalnızca Ubuntu'da kullanılan çekirdek yamalarına bağlı olan Ubuntu Fan bağlamaları (bridge.mode, fan.overlay_subnet, fan.underlay_subnet, fan.type) desteği kaldırıldı.
- Bağlama noktalarını kullanıcı ad alanlarıyla eşlemek için Ubuntu sanal dosya çekirdek paketlerine bağlı vardiyalara yönelik destek kaldırıldı.
- Kanonik'e özgü Candid kimlik doğrulama sistemi desteği kaldırıldı.
- Canonical tarafından Macaroons ve Candid'e dayalı olarak oluşturulan RBAC (Rol Tabanlı Erişim Kontrolü) kimlik doğrulama mekanizmasının özel uygulamasına yönelik destek kaldırıldı.
- Ubuntu yapılandırmalarını hızlı bir şekilde dağıtmaya yönelik bir araç seti olan MAAS (Hizmet Olarak Metal) ile entegrasyon için bileşenler kaldırıldı.
- Güvenilir bir parola (core.trust_password) kullanarak sunucuya erişme kavramı kaldırıldı.
Kaynak: opennet.ru
