Selenite: сервер на основе ALT Atomic
Когда Kubernetes это слишком. Простая неизменяемая система для запуска приложений в контейнерах на одном или нескольких серверах.
Что такое Selenite
Selenite это минималистичная неизменяемая серверная операционная система, построенная на ALT Atomic. Её задача: запускать ваши приложения как стеки Podman Compose, то есть из обычных файлов compose.yml, которые уже есть у большинства популярных проектов.
Это промежуточный вариант между голыми контейнерами и Kubernetes. Kubernetes избыточен для одного или нескольких серверов со стабильной нагрузкой, а классический Linux-сервер требует постоянного ухода за пакетами и настройками, который хостингу контейнеров не нужен.
Selenite развивается в организации ALT Atomic на ALT Linux Space под лицензией MPL-2.0. Сейчас это бета-версия, поэтому детали ниже могут измениться.
Четыре идеи
Неизменяемая основа
Корень системы только для чтения и обновляется целым образом с откатом. Те же принципы, что у ALT Atomic.
Один файл настроек
Состояние машины описывается одним YAML-файлом и применяется одной командой. Его удобно хранить в Git.
Нет оболочки
Вместо интерактивного shell ограниченный API по SSH, контейнеры без прав root и разграничение прав (RBAC).
Привычные стеки
Приложения разворачиваются из обычных файлов compose.yml.
Как это управляется: SSH API
Подключиться к Selenite как к обычному серверу и получить командную строку нельзя. Вместо этого каждая SSH-сессия выполняет одну команду из ограниченного набора. Вход только по ключам. По документации версии 0.1 команды разделены на группы:
| Группа | Что умеет |
|---|---|
machine | сведения о машине, журналы, перезагрузка, обновление образа (A/B, вступает в силу после перезагрузки), откат на один шаг, смена образа, применение и правка конфигурации |
stack | развернуть стек из compose.yml (повторная выкладка обновляет его), список, запуск, остановка, удаление, процессы, журналы |
infra | секреты (секреты Podman), тома (экспорт и импорт), сети (bridge, macvlan, ipvlan) |
debug | привилегированный контейнер из любого образа для отладки, доступен по отдельному праву |
Справка (help) доступна на любом уровне.
Единый конфиг машины
Всё состояние машины задаётся одним YAML-файлом и применяется одной командой, а сам файл можно держать в Git. В нём, в частности:
- Доступ: пользователи и роли с правилами «ресурс × действие», защита от подбора ключей (аналог fail2ban).
- Системные параметры ядра (sysctl).
- Сеть: желаемое состояние через nmstate, при желании подключение к частной сети NetBird.
- Мониторинг: отправка метрик и журналов (Grafana Alloy в Prometheus или Mimir и в Loki).
- Память: настройка zram.
Конфиг можно заменить целиком или поправить частично, патчем.
provision). Пока она не выполнена, любой в сети может управлять машиной, поэтому не открывайте порт управления наружу. А при полной замене конфига без собственного ключа в списке пользователей вы потеряете доступ.Требования и установка
- Мало ресурсов. От 384 МБ оперативной памяти и 5 ГБ диска (рекомендуется больше: 1 ГБ и 20 ГБ).
- Готовый образ диска для виртуальной машины (формат qcow2, с гостевым агентом), без установки: загрузили и работаете. Образы лежат в релизах проекта на ALT Linux Space, рядом контрольные суммы.
- Образ контейнера для обновлений и переключения тоже публикуется проектом.
- Загрузка. По документации версии 0.1 образ рассчитан на загрузку через BIOS (SeaBIOS) и пока не запускается в режиме UEFI.
- Для клонов. Шаблон нужно клонировать до первого запуска, иначе клоны унаследуют уже выданный ключ.
Версия 0.1 бета: перед установкой сверяйтесь с документацией, требования и команды в ней могут меняться.
Кому это нужно
- Тем, у кого один-два домашних или небольших сервера с контейнерами и кому жалко времени на ручное обслуживание системы.
- Тем, кому нужна воспроизводимость: настройки в одном файле, обновления с откатом.
- Тем, кто хочет меньше поверхность атаки: без shell и без root в контейнерах.
Atomic Niri и Selenite растут из одной основы, но решают разные задачи: Atomic Niri это рабочий стол, Selenite это сервер. Они не конкурируют, а используют общую идею неизменяемой системы.
Ссылки
- Сайт Selenite и быстрый старт
- Репозиторий проекта: исходный код, релизы и обращения об ошибках
- ALT Atomic подробно