تم تقديم الإصدار الأول من مشروع Incus، والذي في إطاره المجتمع Linux نظام الحاويات هو نسخة معدلة من نظام إدارة الحاويات LXD، وقد أنشأه الفريق الأصلي من المطورين الذين أنشأوا LXD. نظام الحاويات مكتوب بلغة Go ومرخص بموجب رخصة Apache 2.0.
دعونا نذكركم بأن المجتمع Linux أشرفت شركة Containers على تطوير LXD قبل أن تقرر Canonical تطويره بشكل منفصل كمشروع خاص بها. يهدف مشروع Incus إلى توفير بديل مستقل، مدفوع من المجتمع، لمشروع LXD الذي كانت Canonical تسيطر عليه. كما يهدف المشروع إلى معالجة بعض الأخطاء المفاهيمية التي حدثت أثناء تطوير LXD، والتي كان من المستحيل سابقًا إصلاحها دون الإخلال بالتوافق مع الإصدارات السابقة.
توفر Incus أدوات للإدارة المركزية للحاويات والأجهزة الافتراضية المنشورة على مضيف واحد وفي مجموعة من عدة مضيفات الخوادميُنفَّذ المشروع كعملية خلفية تستقبل طلبات الشبكة عبر واجهة برمجة تطبيقات REST، وتدعم أنظمة تخزين خلفية متنوعة (شجرة الدليل، ZFS، Btrfs، LVM)، ولقطات مع شرائح الحالة، والهجرة المباشرة للحاويات قيد التشغيل من جهاز إلى آخر، وأدوات لتخزين صور الحاويات. تُستخدم مجموعة أدوات LXC كبيئة تشغيل لإطلاق الحاويات، والتي تتضمن مكتبة liblxc، ومجموعة من الأدوات المساعدة (lxc-create، lxc-start، lxc-stop، lxc-ls، إلخ)، وقوالب لبناء الحاويات، ومجموعة من الروابط للغات برمجة مختلفة. ويتم تحقيق العزل باستخدام آليات النواة القياسية. Linux (مساحات الأسماء، مجموعات التحكم، Apparmor، SE)Linux(Seccomp).
من ناحية الميزات، يتبع إصدار Incus الأول تحديث LXD 5.18 الذي تم إصداره مؤخرًا ويركز بشكل أساسي على إعادة تسمية قاعدة التعليمات البرمجية وإعادة تنظيمها، بالإضافة إلى إزالة الميزات المهملة. في الوقت نفسه، يتضمن الإصدار الجديد أيضًا تغييرات خاصة بـ Incus في واجهة سطر الأوامر وواجهة برمجة التطبيقات (API)، والتي لا يمكن تضمينها في LXD بسبب متطلبات التوافق مع الإصدارات السابقة. في المستقبل، يخطط المطورون لنقل التحسينات والإصلاحات المفيدة من قاعدة كود LXD، بالإضافة إلى إضافة ابتكاراتهم الأصلية، والتي، إذا رغبت Canonical، يمكن نقلها إلى LXD.
أبرز التغييرات:
- تم الانتقال إلى محرك SQL المضمن Cowsql - وهو شوكة Dqlite، أنشأها المؤلف الأصلي لـ Dqlite لنفس أسباب Incus (الانسحاب من تأثير Canonical). Cowsql متوافق مع SQLite، ويدعم النسخ المتماثل للبيانات، والاسترداد التلقائي من حالات الفشل، ويوفر التسامح مع الأخطاء عن طريق توزيع المعالجات عبر عقد متعددة.
- تمت إضافة الأمر "incus snapshot" إلى واجهة سطر الأوامر لإدارة اللقطات (استبدال اللقطة المنفصلة وأوامر استعادة lxc). من خلال "incus snapshot" يمكنك تشغيل عمليات إنشاء وحذف وعرض قائمة وإعادة تسمية واستعادة لقطة.
- تم تغيير منطق معالجة أوامر "incus config Trust add" و"incuscluster add"، والذي يأخذ الآن وسيطة واحدة تحمل اسمًا ويعيد الرمز المميز الصحيح. تم نقل العمليات المتعلقة بشهادة من خلال أمر "incus config Trust add-certificate" إلى أمر منفصل "incus config Trust add-certificate".
- تمت إضافة الأمر "incus admin"، مما يلغي حاجة المسؤول للوصول مباشرة إلى الأمرين lxc وlxd. الأوامر الفرعية التالية متاحة:
- مجموعة إدارة incus
- incus admin init
- استعادة المشرف incus
- إغلاق المسؤول incus
- incus admin waitready
- تمت إزالة نقاط وصول واجهة برمجة التطبيقات (API) القديمة /1.0/containers و/1.0/virtual-machines، واستبدالها بـ /1.0/instances.
- تم استبدال الجهاز /dev/lxd بـ /dev/incus، وتم استبدال الإشارات إلى lxd في الكود بـ incus.
- نوع إعدادات الخادم تم استبدال "map[string]any" بـ "map[string]string". تم إيقاف طريقة المصادقة core.trust_password (تم استبدالها بالمصادقة القائمة على الرموز المميزة)، مما منع استخدام نوع "map[string]string".
- تمت إزالة وظائف *Container المتقادمة من واجهة برمجة التطبيقات، والتي تم استبدالها بوظائف *Instance بعد تنفيذ إدارة الجهاز الظاهري (على سبيل المثال، يجب استخدام CreateInstance بدلاً من CreateContainer).
- تمت إضافة الأداة المساعدة lxd-to-incus للترحيل من LXD إلى Incus (يتم دعم التحويل التلقائي لملفات التكوين بدءًا من LXD 4.0 إلى 5.18). ترحيل المجموعة غير معتمد حتى الآن.
- تم ذكر الإصدار 1.20 باعتباره الحد الأدنى للإصدار المدعوم من لغة Go.
- دعم بعض الميزات المتعلقة بـ Ubuntu أو يعتمد على برامج قديمة أو غير مدعومة:
- تمت إزالة دعم الروابط Ubuntu مروحة (bridge.mode، fan.overlay_subnet، fan.underlay_subnet، fan.type)، تعتمد على تصحيحات النواة، وتستخدم فقط في Ubuntu.
- تمت إزالة دعم نظام الملفات shiftfs المدمج مع حزم النواة لـ Ubuntu نظام ملفات افتراضي لربط نقاط التحميل بمساحات أسماء المستخدمين.
- تمت إزالة الدعم لنظام المصادقة Candid الخاص بـ Canonical.
- تمت إزالة الدعم للتنفيذ الخاص لآلية المصادقة RBAC (التحكم في الوصول المستند إلى الدور) التي أنشأتها Canonical استنادًا إلى Macaroons وCandid.
- تمت إزالة المكونات اللازمة للتكامل مع MAAS (البرمجيات كخدمة)، وهي أداة لنشر التكوينات بسرعة. Ubuntu.
- تمت إزالة مفهوم الوصول إلى الخادم باستخدام كلمة مرور موثوقة (core.trust_password).
المصدر: opennet.ru
