docs: initial project documentation
- architecture overview and stack - project structure and development order - API design (endpoints, models, runtimes) - infrastructure overview (k8s cluster, S3, registry) - decisions log with rationale - progress tracker v1/v2
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
# Архитектура системы
|
||||
|
||||
## Общее описание
|
||||
|
||||
Managed Serverless Functions Service для облачного провайдера nubes.ru.
|
||||
Пользователь загружает код, сервис его собирает и запускает по HTTP-триггеру или расписанию.
|
||||
|
||||
## Стек
|
||||
|
||||
| Компонент | Технология | Где запущен |
|
||||
|-----------|-----------|-------------|
|
||||
| API сервер | Go | Kubernetes, namespace `sless` |
|
||||
| PostgreSQL | PostgreSQL | Kubernetes, namespace `sless` |
|
||||
| Redis | Redis | Kubernetes, namespace `sless` |
|
||||
| RabbitMQ | RabbitMQ | Kubernetes, namespace `sless` (позже) |
|
||||
| S3 | Ceph (облачный) | `ceph.tst.nubes.ru` |
|
||||
| Container Registry | Внутренний registry кластера | namespace `registry` |
|
||||
| Функции пользователей | k8s Jobs/Deployments | namespace `sless-fn-{id}` |
|
||||
|
||||
## Схема
|
||||
|
||||
```
|
||||
Пользователь
|
||||
│
|
||||
▼
|
||||
REST API (Go) ←── Terraform provider
|
||||
│
|
||||
├── PostgreSQL — метаданные функций, версии, логи вызовов
|
||||
├── S3 (Ceph) — хранение кода (zip архивы)
|
||||
├── Redis — кеш, rate limiting
|
||||
│
|
||||
▼
|
||||
Builder — получает zip из S3, собирает Docker образ, пушит в registry
|
||||
│
|
||||
▼
|
||||
Runner (k8s) — деплоит функцию как Job/Deployment в k8s
|
||||
│
|
||||
▼
|
||||
RabbitMQ — async вызовы, cron triggers (v2)
|
||||
```
|
||||
|
||||
## Аутентификация
|
||||
|
||||
Используется токен облака (Bearer token), который пользователь получает в UI облака.
|
||||
Terraform provider передаёт его в заголовке `Authorization: Bearer <token>`.
|
||||
Keycloak не используется.
|
||||
|
||||
## Мониторинг
|
||||
|
||||
Метрики функций → Victoria Metrics / Grafana (уже есть в облаке).
|
||||
Grafana: https://grafana.ngcloud.ru/dashboards/...
|
||||
|
||||
## Kubernetes кластер
|
||||
|
||||
Сейчас используется существующий кластер (временно).
|
||||
Планируется переезд на новый кластер — манифесты переносятся без изменений.
|
||||
|
||||
Ноды существующего кластера:
|
||||
- `wheel-control-plane-fm9sr` — control-plane
|
||||
- `wheel-workers-tv4qr-r45xs` — worker
|
||||
- `wheel-workers-tv4qr-x8xw7` — worker
|
||||
|
||||
Ingress: nginx, external IP `5.172.178.182`
|
||||
Storage: rawfile CSI (local-path, default)
|
||||
Reference in New Issue
Block a user