Экосистема управления сервисамиGo · mTLS · RBAC · аудит

Душевная система управления конфигурациями нового поколения

Всё для управления инфраструктурой — в одной платформе: web-интерфейс, вход по LDAP/OIDC, RBAC, аудит, API и MCP, ротация сертификатов. Опишите желаемое состояние — Soul Stack приведёт к нему все души, и в pull, и в push.

  • Типизированные кирпичики
  • один файл, ноль runtime
  • от DevOps для DevOps
  • mTLS + RBAC + аудит из коробки
services/web/destiny/main.ymldestiny
# желаемое состояние, а не скрипт
apply:
  - module: core.pkg
    name: nginx
    state: present
  - module: core.file
    path: /etc/nginx/nginx.conf
    template: nginx.conf.tmpl
    vars:
      workers: {{ soulprint.cpu.count }}
  - module: core.service
    name: nginx
    state: started
    enabled: true
Души3/4 на связи
  • web-01service=nginxrunning
  • db-01service=postgresrunning
  • cache-01service=redisrunning
  • app-02service=nginxapplying
core.pkg nginx → changed=truecore.file /etc/nginx/nginx.conf → changed=truecore.service nginx (started) → changed=trueapp-02: reconcile ✓ · 3 changed
Всё включено

Полноценная платформа, а не набор скриптов

Identity, доступ, наблюдаемость и API встроены в ядро — а не собираются из зоопарка инструментов. Обычно этот набор берут из 5–7 отдельных продуктов; здесь он идёт из коробки.

  • Web-интерфейсOperator UI включён в Keeper, на /ui
  • Вход LDAP/OIDCSSO и корпоративные каталоги
  • RBACРоли и права вплоть до ресурса
  • АудитЖурнал действий — из коробки
  • APIgRPC и OpenAPI на весь control-plane
  • MCPСервер для ИИ-агентов
  • Ротация сертификатовmTLS обновляется без простоя
  • Секреты · VaultИнтеграция и маскирование в логах
Почему так спроектировано

Пять решений, на которых стоит Soul Stack

За каждым решением — конкретная проблема, которую оно решает: разрозненные инструменты вместо платформы, произвольный код в конфиге, привязка к вендору в надстройках, рантайм на хосте.

security-first

mTLS + RBAC + аудит встроены

Транспорт Keeper↔Soul — gRPC поверх mTLS. RBAC, аудит-журнал и интеграция с Vault — часть ядра, а не платная надстройка. Секреты маскируются на выходе и в логи в открытом виде не попадают.

данные, а не код

Типизированный шаблонизатор

Выражения — CEL (не Тьюринг-полный, без побочных эффектов), рендер файлов — Go text/template в строгом режиме. Произвольный код в конфиге выполнить нельзя — конфиг остаётся конфигом.

изоляция + любая лицензия

Модули-плагины как процессы

Кастомный модуль — отдельный исполняемый файл по gRPC-stdio: падение плагина не роняет агента, а лицензию плагина выбирает его автор. Ядро — под BSL, экосистема расширений — свободна.

единая модель

Pull и push — один набор модулей

Тот же исполняемый файл применяет Destiny и как демон (pull), и как oneshot по SSH (push, без агента на хосте). Одна реализация вместо двух несовместимых веток.

ноль рантайма

Один исполняемый файл на хосте

Агент soul — статический исполняемый файл. На управляемом хосте не нужен ни Python, ни Ruby, ни интерпретатор: core-модули — нативный Go внутри исполняемого файла. Меньше на хосте — меньше дрейфа и поверхности атаки.

Это не мокапы — это тот самый web-UI

Operator web-UI включён в Keeper и отдаётся на /ui. Отдельный продукт для наблюдаемости деплоить не нужно.

keeper · /ui
Overview кластера. Транспорт pull/push, coven-ы, инкарнации и self-health (keeper · redis · postgres · vault) — на одном экране.
keeper · /ui
Честный reconcile. Каждый шаг Destiny — core.repo → core.pkg → core.file → core.service — с changed=true/false по каждому хосту.
Оркестрация вживую

Reconcile прямо в браузере

Мини-симуляция control-plane целиком на клиенте: Keeper планирует инкарнацию, резолвит секреты, рендерит Destiny и приводит новый узел к желаемому состоянию — с честным логом.

Души

3/3 на связи
web-01 service=nginxrunning
db-01 service=postgresrunning
cache-01 service=redisrunning

Reconcile-лог

app-02
Нажмите «Провизионить узел» — Keeper срендерит Destiny и приведёт узел к желаемому состоянию.
Честное сравнение

Soul Stack и традиционные инструменты

Сравним архитектурные семейства. У зрелых инструментов свои компромиссы — покажем, где Soul Stack пошёл другим путём.

Push поверх SSHАгент + masterSoul Stack
Рантайм на хостенужен интерпретаторпостоянный агент + рантайм языкаодин исполняемый файл, без интерпретатора
Типобезопасностьтекстовый шаблонизатор общего назначенияDSL/шаблоны на языке общего назначенияCEL + text/template (strict) — код не исполнить
ТранспортSSHсвоя шина / HTTPS, часто свой CAgRPC поверх mTLS
Модель доставкитолько pushв основном pullpull и push — один набор модулей
RBAC · аудит · web-UIсобираете из сторонних инструментовотдельные надстройки поверхвстроены в ядро — из коробки
Управляющий узелstatefulstateful master + отдельная БДstateless-кластер (PG + Redis)

Развёрнутый разбор по семействам, замеры масштаба и раздел «как выбирать» — в документации.

Модель

Открытое ядро · fair-code

Продукт не режется под платные тарифы: исходники открыты и аудируемы, а доход — от услуг и managed поверх открытого ядра.

Ядро и web-UI

BSL 1.1 — source-available

keeper · soul · soulctl · soul-lint и core-модули под BSL 1.1: исходники открыты и доступны. Каждая версия становится Apache 2.0 через два года. Точные условия использования — в тексте лицензии.

SDK и плагины

Apache 2.0 — сразу

Пишите и распространяйте свои модули под любой лицензией, без ограничений с первого дня. Экосистема расширений принадлежит сообществу, а не вендору.

Приведите инфраструктуру в порядок

От легаси до единой инфраструктуры в пару этапов. Web-интерфейс, доступ, RBAC, аудит и API — в одной платформе, из коробки. Начните с малого и растите без переписывания.