butlerd — это распределённый системный демон без внешних зависимостей — единый бинарный оркестратор, включающий всё необходимое для запуска контейнеризированных рабочих нагрузок на нескольких узлах.
butlerd предоставляет:
| Документ | Описание |
|---|---|
| Архитектура | Высокоуровневый дизайн системы |
| Консенсус | QC-протокол, комитет, эпохи |
| Gossip-протокол | Репликация состояния и синхронизация дельт |
| Синхронизация состояния | Структура состояния и персистентность |
| Планирование | Размещение рабочих нагрузок и топология |
| Сеть | WireGuard, DNS, прокси, ingress |
| Хранилище | KV-хранилище и консистентное хеширование |
| Безопасность | Токены, запечатанные секреты, политики |
| Развёртывание | Установка и конфигурация |
| Эксплуатация | Мониторинг и устранение неполадок |
# Инициализация кластера
butlerd init --name my-cluster --data-dir /var/lib/butlerd
# Запуск демона
butlerd daemon --data-dir /var/lib/butlerd
# Подключение дополнительных узлов
butlerd join --peer <first-node>:51821 --token <token> --data-dir /var/lib/butlerd
internal/
├── bootstrap/ # Инициализация кластера
├── compose/ # Парсер Docker Compose
├── config/ # Загрузка конфигурации
├── cplane/ # Логика control plane
├── daemon/ # Главная точка входа демона
├── dns/ # Авторитарный DNS-сервер
├── kv/ # Распределённое KV-хранилище
├── metrics/ # Метрики Prometheus
├── proxy/ # HTTP/HTTPS обратный прокси
├── registry/ # OCI-реестр
├── runtime/ # Абстракция container runtime
├── scheduler/ # Движок планирования рабочих нагрузок
├── seal/ # Шифрование AES-256-GCM для секретов
├── state/ # Модель состояния кластера + консенсус
├── syshealer/ # Самоисцеление системы
├── tmpl/ # Рендеринг шаблонов
├── ui/ # Web UI
└── wireguard/ # Управление WireGuard overlay