Astra Linux — российская операционная система специального назначения, актуальная версия которой основана на Debian 10.0 (Buster). В частности, эту ОС используют органы государственной власти, госслужбы и госкорпорации. Astra Linux включена в единый реестр российского ПО, сертифицирована ФСТЭК, а версия Astra Linux Special Edition еще и отвечает требованиям по защите любой информации ограниченного доступа: персональных данных, конфиденциальной информации, а также гостайны до уровня особой важности.
Наши заказчики все чаще спрашивают, подходит ли платформа Deckhouse для импортозамещения. Это побудило нас связаться с командой Astra Linux, чтобы обсудить сотрудничество.
Сначала нужно было понять, какие ограничения могут возникнуть при запуске Deckhouse на ВМ с Astra Linux. Мы взяли достаточно старую и широко распространенную версию Astra Linux Common Edition 2.12.43, которая основана еще на Debian 9.
Запускаем ВМ на Astra Linux
Для внутренних экспериментов в качестве облака мы используем OpenStack. У Astra Linux есть специальный образ — cloud-init orel-vanilla-2.12.43-cloud-mg6.0.0, — который доступен в формате qcow. Мы залили его в OpenStack и все заработало:
openstack image create --public --disk-format qcow2 --file ~/Downloads/orel-vanilla-2.12.43-cloud-mg6.0.0.qcow2 orel-vanilla-2.12.43-cloud
Далее решили добавить ВМ на Astra Linux в существующий кластер как worker-узел.
Добавляем ВМ в кластер
Сразу скажу, что Orel взлетел, однако для этого пришлось решить три проблемы.
Отсутствие поддержки Debian в Deckhouse. Astra Linux базируется на Debian, но Deckhouse пока официально работает только с Ubuntu и CentOS. Мы сразу вспомнили соответствующий issue — и решили обязательно добавить поддержку Debian в рамках будущей интеграции с Astra Linux.
На сей раз мы добавили ВМ как статичный узел и запустили в расчете на то, что всё заработает на Ubuntu (в основе которой — Debian). И всё заработало… хотя пришлось немного попинать по колесам и постучать молотком — об этом ниже.
Отсутствие пакета conntrack. У Kubernetes есть инструкция, как поставить kubelet на Debian-дистрибутив. Но в зависимостях требуется пакет conntrack, которого не было в дистрибутиве Astra Linux. Пришлось устанавливать kubelet как бинарник (см. раздел инструкции Without a package manager).
Старая версия nginx. Для проксирования запросов с узлов к kube-api-server мы используем nginx. В репозитории пакетов Astra Linux на момент эксперимента был только nginx версии 1.14, в котором нет модуля ngx_stream_module. Поэтому пришлось поправить автоматически сгенерированный конфиг для proxy и подключить модуль динамически через load_module /usr/lib/nginx/modules/ngx_stream_module.so
.
При этом в новом релизе Astra Linux Special Edition все необходимые пакеты и компоненты уже есть — и conntrack, и новый nginx.
По результатам нагрузочного и функционального тестирования проблем не выявлено.
Вывод
Благодаря эксперименту мы убедились, что для полноценной поддержки даже старых версий Astra Linux никаких серьезных ограничений у Deckhouse нет. Потребуется небольшая доработка только со стороны платформы.
Вместе с коллегами из ГК Astra Linux мы продолжим работать над совместимостью Deckhouse и ОС.
P.S.
Читайте также в нашем блоге: