jdbohrmanJames D. Bohrman
مهندس ابر بومی. نویسنده انبوهی از گرد و غبار. همانطور که در بالا تا زیر.
مهندس ابر بومی. نویسنده انبوهی از گرد و غبار. همانطور که در بالا تا زیر.
با تکامل اکوسیستم بومی ابر ، این شروع به نظر می رسد که گویی رقیبی برای کانتینر سازی ظهور کرده است. در این پست وبلاگ ، من قصد دارم به بررسی unikernels بپردازم و فکر می کنم که آنها احتمالاً کاندیدای جایگزینی زیرساخت های کانتینر دار باشند.
گرچه تردیدی نیست که کانتینرها چشم انداز را به شیوه ای مثبت تغییر داده اند ، اما آنها گلوله نقره ای وعده داده شده DevOps نیستند. از طرف دیگر ، unikernels الگوی زیرساختی نرم افزاری نوظهوری است که با ارائه تصاویر ماشین آلات فضایی تخصصی و تک آدرس ، به دنبال تحقق مانیفست DevOps است.
یک هسته از اجزای زیر ساخته شده است:
این م componentsلفه ها در یک تصویر مجازی قابل بوت قرار می گیرند که مستقیماً روی یک hypervisor استاندارد اجرا می شود.
یکی از کلیدها مواردی که باید هنگام مقایسه کانتینرها و تک هسته ها به آنها توجه کنید این واقعیت است که مورد اول هنوز بین (اپراتورهای) مدیریت کننده برنامه ها و بیننده های توسعه دهنده (کد توسعه دهنده) که برنامه را کد می کنند تفاوت قائل شده است.
در مقابل ، unikernels با حذف این مانع و وادار کردن تیم توسعه به بسته نرم افزاری هر آنچه را که می خواهند در واحد استقرار به وعده DevOps عمل می کنند. علاوه بر این ، استفاده از برنامه های unikernel نیاز به بازسازی کامل ماشین مجازی دارد ، بنابراین استفاده از ابزارهای پیکربندی مانند Terraform و Jenkins جای بحث ندارد.
مزیت مهم دیگر استفاده از unikernels در شما زیرساخت با جلوگیری از دام قفل شدن فروشنده به چابکی افزوده می شود. از آنجا که یونیکرنل در هسته خود یک ماشین مجازی است ، ذاتاً از پلتفرم متقابل و ابر-اگنوستیک است.
از آنجا که واحد اصلی محاسبه unikernel یک ماشین مجازی است ، به راحتی می توان آن را از یک سیستم عامل ابری به سیستم دیگر ابر منتقل کرد.
Unikernels همچنین ایده “سرورها” را با یک مبادله می کند رویکرد بدون سرور بیشتر. هنوز یک سرور وجود دارد ، اما در بیشتر قسمتها خودپایدار است و نیازی به نظارت تیم عملیاتی ندارد.
اگرچه بسیاری از مشکلات موجود در فضای DevOps را برطرف کرده است ، کانتینرها به عنوان یک الگوی مجموعه ابزار پیشگویی نشده بودند که قرار بود ما را به سمت عملیات بدون عملیات سوق دهند. مراتع پیچیدگی مربوط به دویدن کانتینرها اغلب برای تیم ها بسیار وقت گیر است و این تیم ها اغلب در می یابند که ابزارهای اعتیاد به مواد مخدر بسیار عجیب و غریب است که باعث تولید مشکلات می شود.
این اغلب به یک تیم عملیاتی کامل نیاز دارد تا یک برنامه مبتنی بر Kubernetes را مدیریت و استقرار دهند ، در حالی که استقرار یک هسته در Google Cloud با استفاده از امروز فقط یک سری از دو دستور است و خواهد بود دو دقیقه در حال اجرا است.
یکی از بزرگترین امتیازات فروش unikernels امنیت آنها است وقتی با ظروف مقایسه می شود این معماری دارای ویژگی های بسیاری است که از برخی حملات جلوگیری می کند و یا به طور کلی غیر فعال می کند. بیایید به تعدادی از آنها نگاهی بیندازیم!
عدم دسترسی به پوسته
بیشترین حملات اجرای کد از راه دور فراخوانی می شوند / bin / sh برای اصلاح سیستمی که به آن حمله می کنند. از آنجا که unikernels فاقد پوسته است ، مهاجم این فرصت را ندارد.
بدون Syscalls
در سیستم های لینوکس ، syscalls اغلب برای فراخوانی سیستم عامل و حمله به سیستم های رایانه ای استفاده می شود. از آنجا که فاقد سیستم عامل هستند ، unikernels این تماس های سیستمی را ندارند. آنها فقط تماس عملکردی دارند. برای یک مهاجم ، این بدان معنی است که آنها باید فراخوانی دقیق حافظه برنامه شما را بدانند تا بتوانند سیستم عامل را فراخوانی کنند.
عدم دسترسی به Ring 0
انتقاد رایج علیه unikernels این است که کل برنامه در “فضای هسته” اجرا می شود و دارای امتیازات ریشه است. در حال حاضر ، این درست است ، اما این به این دلیل است که unikernels برای اجرا باید جداول سخت افزار و صفحه مجازی را مدیریت کنند.
با این حال ، اگر hypervisor می تواند قبل از راه اندازی و راه اندازی ماشین مجازی VM را تنظیم کند و رابط های پارا مجازی سازی شده برای سخت افزار ، دسترسی به حلقه 0 غیر ضروری است.
آیا فکر می کنید پیش بینی های من درست است و ما در آستانه دیدن طلوع تک هسته هستیم؟ یا فکر می کنید این فقط یک ابزار اضافه شده دیگر باشد؟