Мы развернули платформу Deckhouse на узле с Astra Linux. Рассказываем, как (и зачем)

Astra Linux — российская операционная система специального назначения, актуальная версия которой основана на Debian 10.0 (Buster). В частности, эту ОС используют органы государственной власти, госслужбы и госкорпорации. Astra Linux включена в единый реестр российского ПО, сертифицирована ФСТЭК, а версия Astra Linux Special Edition еще и отвечает требованиям по защите любой информации ограниченного доступа: персональных данных, конфиденциальной информации, а также гостайны до уровня особой важности.

image-loader.svg

Наши заказчики все чаще спрашивают, подходит ли платформа 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.

Читайте также в нашем блоге:

© Habrahabr.ru