Microsoft добавя нов Linux: CBL-Mariner

Помислете за Microsoft и Linux и вероятно ще се замислите за неговата работа по изграждането на оптимизирано ядро ​​на Linux за подсистемата на Windows за Linux (WSL). Изтласкан чрез актуализация на Windows, Microsoft поддържа всички дистрибуции на WSL2 Linux, включително Ubuntu и SUSE.

Но ядрото на WSL2 не е единственото предложение на Microsoft за Linux. В миналото разгледахме някои от останалите тук, включително защитената Linux за Azure Sphere. Други включват мрежовата дистрибуция SONiC, предназначена за използване с хардуер на Open Compute Project и използвана от много публични облаци и големи онлайн услуги, както и хостовете за Azure ONE (Open Network Emulator), използвани за валидиране на нови мрежови внедрения за Azure.

Linux Systems Group на Microsoft

С постоянно нарастващия брой ядра и дистрибуции на Microsoft Linux, вече има официална Linux Systems Group, която се занимава с голяма част от работата на компанията на Linux. Това включва ядро, настроено на Azure, налично като кръпки за много разпространени дистрибуции на Linux, оптимизиращо ги за използване с хипервизора Hyper-V на Microsoft и набор от инструменти, които помагат да се осигури прилагането на целостта на системата на базата на политики, като прави дистрибуциите по-сигурни и помага за управление актуализации и кръпки в големи имоти на Linux сървъри и виртуални машини.

Екипът наскоро пусна нова дистрибуция на Linux: CBL-Mariner. Въпреки че изданието е публично, голяма част от използването му не е, тъй като е част от инфраструктурата на Azure, използвана за нейните крайни мрежови услуги и като част от облачната инфраструктура. Резултатът е разпределение с ниски разходи, силно фокусирано, което е по-малко за това, което е в него, и много повече за това, което работи върху него.

Представяме ви CBL-Mariner: Хостът на Microsoft за контейнери на Linux

Инвестирането в лек Linux като CBL-Mariner има много смисъл, като се има предвид инвестициите на Microsoft в базирани на контейнери технологии. Облачната икономика изисква от хостовете да използват възможно най-малко ресурси, позволявайки на услуги като Azure да получат високо ниво на използване. В същото време контейнерите на Kubernetes се нуждаят от възможно най-малко режийни разходи, позволявайки възможно най-много възли на блок и позволяващи стартирането на нови възли възможно най-бързо.

Същото важи и за крайния хардуер, особено за следващото поколение крайни възли, предназначени за използване с 5G мрежи. Тук, подобно на публичния облак, работните натоварвания са най-важното, пренасочвайки ги и данните по-близо до потребителите. Microsoft използва нарастващото си име на модерния хардуер като част от мрежата за доставка на съдържание на Azure извън основните си центрове за данни на Azure, кеширайки съдържание от уеб приложения на Azure и от хоствани видео и файлови сървъри, с цел намаляване на латентността, където е възможно. Azure CDN е ключов компонент на базираната на Jamstack услуга за статични уебсайтове Azure, хостинг на страници и JavaScript, публикувани веднъж от GitHub.

В миналото CoreOS на Red Hat беше предпочитаният хост на Linux контейнери, но неотдавнашното му оттегляне означава, че вече не се поддържа. Всеки, който го използва, е трябвало да намери алтернатива. Microsoft предлага Flatcar Linux CoreOS-fork за потребители на Azure като част от партньорството с разработчиците Kinvolk, но наличието на собствена дистрибуция за собствени услуги гарантира, че може да актуализира и управлява своите екземпляри на хост и контейнер по свой график. Публично разработване е достъпно за всеки, който иска да направи и използва собствени компилации или който иска да допринесе за нови функции и оптимизации, например добавяне на поддръжка за нови мрежови функции.

Работещи CBL-Mariner и контейнери

Отвъд CBL-Mariner има само основните пакети, необходими за поддържане и стартиране на контейнери, като използва подобен подход на CoreOS. В основата си Linux контейнерите са изолирано потребителско пространство. Намаляването на споделените ресурси до минимум намалява излагането на сигурност на хост ОС, като се уверява, че контейнерите за приложения не могат да поемат зависимости от него. Ако използвате CBL-Mariner в собствените си контейнери, уверете се, че сте тествали всички публични изображения на Docker преди разгръщането, тъй като те може да не съдържат подходящите пакети. Може да се наложи да имате свои собствени базови изображения на място като част от докер файловете на вашето приложение.

CBL-Mariner използва познати инструменти на Linux за добавяне на пакети и управление на актуализации на защитата, предлагайки актуализации или като RPM пакети, или като цялостни изображения, които могат да бъдат внедрени при необходимост. Използването на RPM ви позволява да добавяте свои собствени пакети към основно изображение на CBL-Mariner, за да поддържате допълнителни функции и услуги, ако е необходимо.

Първите стъпки с CBL-Mariner могат да бъдат толкова прости, колкото задействането на услуга Azure. Но ако искате практически опит или искате да допринесете за проекта, в момента целият изходен код е в GitHub, заедно с инструкции за изграждане на собствени инсталации. Предпоставките за компилация на Ubuntu 18.04 включват езика Go, помощните програми QEMU (Quick EMUlator), както и rpm.

Създайте своя собствена инсталация, използвайки хранилището на GitHub

Имате няколко различни опции за изграждане от източника. Започнете, като проверите източника от GitHub, като направите локален клонинг на хранилището на проекти. Предлагат се различни клонове, но за първото изграждане трябва да изберете текущия стабилен клон. Оттук можете да изградите инструментите Go за проекта, преди да изтеглите източниците.

За бързи компилации имате две възможности, като и двете използват предварително изградени пакети и сглобяват дистрибуция от тях. Първият, за инсталиране на голи метали, създава ISO файл, готов за инсталиране. Вторият, за използване на CBL-Mariner като домакин на контейнер, изгражда готов за използване VHDX файл с виртуална машина за използване с Hyper-V. Алтернативна опция изгражда изображение на контейнер, което може да се използва като източник за вашите базирани на Mariner докер файлове, като ви дава всичко необходимо за изграждане и стартиране на съвместими контейнери с вашите приложения.

Ако предпочитате да компилирате от източник, опцията е налична, въпреки че компилациите ще бъдат значително по-бавни от използването на предварително компилирани пакети. Това обаче ще ви позволи да се насочите към алтернативни процесори, например да създадете версия, която работи с новото поколение базиран на ARM ръб хардуер, подобен на този, който се използва за екземплярите Graviton на AWS. Можете да заредите цялата верига от инструменти за изграждане, за да сте сигурни, че имате контрол над целия процес на изграждане. Пълният процес на изграждане може дори да се използва за изграждане на поддържани пакети, като основните файлове са изброени в JSON конфигурационен файл.

Веднъж изградени, можете да започнете да конфигурирате функциите на CBL-Mariner. Извън това те включват защитна стена, базирана на iptables, поддръжка за подписани актуализации и втвърдено ядро. Незадължителни функции могат да бъдат настроени едновременно, с инструменти за подобряване на изолирането на процеса и криптиране на локалното съхранение, важни функции за хост на контейнер в мултитенантска среда, където трябва да защитите локални данни.

Резултатът е ефективен заместител на CoreOS и такъв, който бих искал да видя на разположение на потребителите на Azure, както и на собствените екипи на Microsoft. CBL-Mariner може да няма зрелостта на други Linux-ориентирани към контейнери, но със сигурност има достатъчно поддръжка зад него, за да го направи надежден инструмент за използване в хибридни облачни и крайни мрежови архитектури, където изпълнявате код на собствените си сървъри за край и в облака на Microsoft. Ако Microsoft не го направи опция, поне можете да го изградите сами.