- 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
2.6 KiB
2.6 KiB
Архитектура системы
Общее описание
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-planewheel-workers-tv4qr-r45xs— workerwheel-workers-tv4qr-x8xw7— worker
Ingress: nginx, external IP 5.172.178.182
Storage: rawfile CSI (local-path, default)