Corgo
Распределенная система управления сервисами
г.Казань, 2025
--- ## Команда The Corgi Crew
Просто независимые разрабочики, которые любят корги
Елена Кирюхина
@linuxic
Александр Кирюхин
@neonxp
--- ## Общее описание Corgo — это распределенная система управления сервисами для развертывания и сопровождения инфраструктуры приложений на Windows, Linux и macOS без использования системно-зависимых утилит. --- ## Кросс-платформенная поддержка ✅ Запуск на Windows, Linux и macOS без системных зависимостей 🔥 Независимость от systemd, cron и других системных утилит ⚙️ Единый механизм управления процессами для всех платформ --- ## Мониторинг и визуализация 🌐 Удобный веб-интерфейс для контроля статуса кластера 🧑🤝🧑 Интеграция с Prometheus для сбора метрик 📈 Отображение метрик в режиме реального времени с подключением Grafana 💬 Логирование событий и ошибок --- ## Управление репликами 🛠️ Создание и удаление реплик по требованию 🖥️ Масштабирование количества реплик 🕵️ Мониторинг состояния каждой реплики 🆙 Автоматическое восстановление при сбоях --- ## Масштабируемость 🏃 Горизонтальное масштабирование кластера 🔄 Распределение нагрузки между хостами 🚀 Оптимизация использования ресурсов --- ## Отказоустойчивость 🦾 Автоматическое восстановление после сбоев 🍜 Сохранение состояния при перезапусках 🩺 Мониторинг и обработка ошибок --- # 🧱 Архитектура системы --- ## Основные компоненты - Контроллер - Агенты - Сервисы --- ## Контроллер - Управление состоянием и реконсиляция - Балансировка нагрузки - API и веб-интерфейс - Мониторинг и сбор метрик Note: Контроллер — центральный элемент системы Corgo, управляющий всей инфраструктурой приложения и обеспечивающий бесперебойную работу кластера. --- ## Подсистемы контроллера 🔥 Управление состоянием (State Management) ⚙️ Реконсилляция (Reconciliation) 📊 Балансировка нагрузки (Load Balancing) 🌐 API и веб-интерфейс 📦 Управление артефактами и секретами Note: Подсистемы контроллера 1. Управление состоянием Хранилище сведений обо всех узлах, репликах и процессах. Отслеживает активность агентов, метрики и статистику. 2. Реконсиляция Проверяет текущее состояние кластера относительно необходимого состояния. Производит операции для поддержания нужного состояния (запуск, остановка, обновление). 3. Балансировка нагрузки Равномерно распределяет рабочие компоненты между агентами. Переносит реплики между агентами при необходимости. Оптимизирует использование вычислительных мощностей. 4. API и веб-интерфейс Позволяет управлять и мониторить систему через REST API. Предоставляет удобные инструменты мониторинга и диагностики. 5. Управление артефактами Обеспечивает хранение и доставку необходимых пакетов для запуска сервисов. Организует кэширование и версионирование для быстрого разворачивания. Координирует загрузку и распространение программного обеспечения. --- ## Агенты - Обработка команд от контроллера - Запуск и остановка сервисов - Мониторинг состояния процессов - Отправка метрик и логов Note: Агенты - это распределенные компоненты системы, работающие на каждом узле кластера. Они отвечают за непосредственное управление сервисами и их репликами. --- ## Сервисы - Пользовательские приложения Note: Пользовательские приложения, управляемые системой: Могут иметь несколько реплик, Поддерживают различные версии, Отправляют метрики и логи --- ## Интерфейсы управления - CLI инструмент для командной строки - Веб-интерфейс для визуального управления - REST API для интеграции --- ## Структура системы
--- # 🛠 Стек технологий --- ### Backend - Go - основной язык программирования - urfave/cli - фреймворк для создания CLI приложений - labstack/echo - веб-фреймворк для создания REST API - OpenAPI/Swagger - спецификация и генерация API документации - Prometheus - система мониторинга и сбора метрик ### Frontend - Templ - шаблонизатор для Go - HTMX - библиотека для AJAX, WebSocket и SSE - Bootstrap - CSS фреймворк - Bootstrap Icons - иконки - Idiomorph - библиотека для морфинга DOM --- # 🚀 Развитие --- ## 🛠 Тегирование агентов - Добавление системы тегов для агентов (например: "production", "staging", "database", "cache") - Возможность указывать теги при создании сервиса - Автоматическое распределение реплик по агентам с учетом тегов --- ## 📇 Переменные - Добавление переменных окружения на уровне агента - Глобальные переменные для всего кластера - Иерархия переменных (глобальные → нода → сервис → реплика) - Поддержка шаблонов в переменных - Безопасное хранение и передача переменных --- ## 🚧 Автодобавление агентов - Динамическое обнаружение новых агентов в сети - Автоматическая регистрация агентов - Проверка совместимости платформ - Безопасное подключение новых агентов --- ## 🔍 Версионирование секретов и переменных - История изменений секретов и переменных - Возможность отката к предыдущим версиям - Аудит изменений (кто, когда, что изменил) - Безопасное хранение истории --- ## 🌐 Оффлайн агенты - Работа агентов в автономном режиме - Периодическая синхронизация с контроллером - Локальное управление репликами - Кэширование артефактов и конфигурации --- ## 🪲 Агенты разных типов - Агент для нативного запуска (реализовано!) - Агент для интерпретируемых языков (например, Lua, Python) - Агент для легковесных контейнеров (например, containerd, cri-o) - Функциональность, аналогичная AWS Lambda --- ## 🤖 Система плагинов - Плагины - особые сервисы Corgo, которые могут реплицироваться на агенты как и обычные сервисы - Отличие в том, что им доступно API Контроллера Corgo для специфичного управления кластером --- #
🔴
Live Demo --- ## Инсталляция - Контроллер и агенты запущены на Raspberry Pi Zero (256 мб ОЗУ)
--- ## WebUI: Кластер
--- ## WebUI: Сервисы
--- ## WebUI: Создание сервиса
--- ## WebUI: Пакеты
--- ## WebUI: Логи
--- ## WebUI: Секреты
--- ## WebUI: Балансировка нагрузки
--- ## WebUI: Управление репликацией
--- ## Спасибо за внимание!