Files
kuma/History/2026-08-26.md
T
2026-08-26 13:55:47 +03:00

146 lines
5.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# KUMA: история работ
Дата: 2026-08-26
## Цель
Создать сервис KUMA для алертов по whitelist:
- https://whitelist.nodejsk8s.services.ngcloud.ru/
Первый этап: 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`.
- Конфигурация задаётся переменными окружения.
Файлы:
- `Dockerfile`
- `app.py`
- `requirements.txt`
## Docker
Локальный образ:
- `kuma:0.1.0`
Опубликованный образ:
- `gitea.services.ngcloud.ru/forcloud/kuma:0.1.0`
Digest опубликованного образа:
- `sha256:15e7ef5c9e125c81222cffe1c8c4c278c9c148fc432368f01662b4cdbd772f4e`
Сборка образа и проверка endpoint `/mariadb` выполнены успешно.
## Переменные окружения
```json
{
"MARIADB_DATABASE": "db-kuma",
"MARIADB_HOST": "mariadb",
"MARIADB_PORT": "3306",
"MARIADB_USER": "userkuma",
"MARIADB_VERSION": "9.4.0",
"PORT": "5000"
}
```
`MARIADB_PASSWORD` должен передаваться как секрет окружения и не храниться в истории, документации или Docker-образе.
## Ответ сервиса
```json
{
"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` без авторизации отвечает:
```text
HTTP 302
Location: /v2/login
Found. Redirecting to /v2/login
```
В KUMA добавлен stateless endpoint `GET /check`, который запрашивает whitelist без автоматического перехода по redirect и возвращает статус, `Location` и тело ответа.
Для авторизации предусмотрена переменная `WHITELIST_TOKEN`; при её наличии KUMA передаёт заголовок `Authorization: Bearer <token>`.
Добавлены переменные:
```text
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`.
Добавлена переменная:
```text
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`.