5.0 KiB
KUMA: история работ
Дата: 2026-08-26
Цель
Создать сервис KUMA для алертов по whitelist:
Первый этап: stateless-хранилище. В дальнейшем планируется MariaDB.
Git
Локальный каталог проекта:
/home/naeel/nubes/kuma
Удалённый Git-репозиторий:
https://gitea.services.ngcloud.ru/forcloud/kuma.git
Репозиторий был пустым, затем клонирован в локальный каталог. Remote origin настроен на указанный адрес.
Реализация
Создан минимальный Flask HTTP-сервис:
GET /возвращает JSON с параметрами сервиса и MariaDB.GET /healthвозвращает состояние сервиса.GET /mariadbвозвращает параметры MariaDB.- Пароль MariaDB не возвращается; выводится только
passwordConfigured. - Конфигурация задаётся переменными окружения.
Файлы:
Dockerfileapp.pyrequirements.txt
Docker
Локальный образ:
kuma:0.1.0
Опубликованный образ:
gitea.services.ngcloud.ru/forcloud/kuma:0.1.0
Digest опубликованного образа:
sha256:15e7ef5c9e125c81222cffe1c8c4c278c9c148fc432368f01662b4cdbd772f4e
Сборка образа и проверка endpoint /mariadb выполнены успешно.
Переменные окружения
{
"MARIADB_DATABASE": "db-kuma",
"MARIADB_HOST": "mariadb",
"MARIADB_PORT": "3306",
"MARIADB_USER": "userkuma",
"MARIADB_VERSION": "9.4.0",
"PORT": "5000"
}
MARIADB_PASSWORD должен передаваться как секрет окружения и не храниться в истории, документации или Docker-образе.
Ответ сервиса
{
"mariadb": {
"database": "db-kuma",
"host": "mariadb",
"passwordConfigured": true,
"port": 3306,
"user": "userkuma",
"version": "9.4.0"
},
"service": "kuma",
"state": "stateless",
"target": "https://whitelist.nodejsk8s.services.ngcloud.ru/",
"version": "0.1.0"
}
Gitea Container Registry
Registry endpoint:
https://gitea.services.ngcloud.ru/v2/
Проверка без корректного токена возвращала 401 Unauthorized. С действительным токеном Registry вернул HTTP 200. Образ успешно опубликован и манифест проверен.
Ограничения текущего этапа
- Сервис пока не подключается к MariaDB.
- Состояние не сохраняется.
- Логика получения и отправки алертов whitelist ещё не реализована.
Проверка whitelist API
Endpoint https://whitelist.nodejsk8s.services.ngcloud.ru/v2/app без авторизации отвечает:
HTTP 302
Location: /v2/login
Found. Redirecting to /v2/login
В KUMA добавлен stateless endpoint GET /check, который запрашивает whitelist без автоматического перехода по redirect и возвращает статус, Location и тело ответа.
Для авторизации предусмотрена переменная WHITELIST_TOKEN; при её наличии KUMA передаёт заголовок Authorization: Bearer <token>.
Добавлены переменные:
WHITELIST_URL=https://whitelist.nodejsk8s.services.ngcloud.ru/v2/app
WHITELIST_TIMEOUT=10
Версионирование
Версия KUMA установлена в 0.0.2. В дальнейшем увеличивается только третья позиция: 0.0.*.
SMTP-алерты
После включения IMAP в настройках Яндекс Почты SMTP-аутентификация успешно прошла для адресов аккаунта через smtp.yandex.ru:465 с SSL.
В KUMA добавлен POST /alert: он получает ответ whitelist и отправляет его по SMTP на SMTP_TO. Пароль SMTP хранится только в .env.
Добавлена переменная:
SMTP_TO=tazet@narod.ru
SMTP_SUBJECT_PREFIX=[KUMA]
Для сортировки почты добавлен префикс темы [KUMA]. SMTP_FROM остаётся реальным адресом SMTP-аккаунта; несуществующий адрес отправителя не используется.
Добавлен UI на / для ручной проверки whitelist и отправки алерта. Whitelist URL предустановлен: https://whitelist.nodejsk8s.services.ngcloud.ru/v2/app.