docs: обновление документации 2026-03-11
- architecture/overview.md — актуальная архитектура: namespace-per-user, схема JWT->SHA256->namespace, структура кода, версии в production - decisions/log.md — новые решения: два провайдера нельзя объединять, namespace-per-user, EnsureNamespace как отдельный endpoint (SoC), JWT validation вместо статического токена, валидация через nubes API, handler.go SoC рефакторинг - progress.md — статус 2026-03-11 (all done), технический долг - architecture/agent-handoff-2026-03-11.md — подробный handoff для Opus: полная архитектура, lifecycle контроллеров, примеры кода, ТЗ, вопросы
This commit is contained in:
@@ -129,3 +129,41 @@
|
||||
| 5 | Pre-warm для cron триггеров | ⏳ | TriggerSpec.PreWarmSeconds — поле есть, логика не реализована |
|
||||
| 11 | trigger.enabled | ✅ | enabled=false → Deployment replicas=0, in-place update через PATCH |
|
||||
| 12 | job.run_id | ✅ | run_id=0 → skip, run_id>0 → execute. Повторный запуск = увеличить run_id |
|
||||
|
||||
---
|
||||
|
||||
## 2026-03-11 — Namespace-per-user + SoC рефакторинг
|
||||
|
||||
| # | Задача | Статус | Заметки |
|
||||
|---|--------|--------|---------|
|
||||
| 1 | JWT decode в провайдере (SubFromJWT, NamespaceFromSub) | ✅ | `terraform/provider/internal/client/client.go` |
|
||||
| 2 | PingNubesAPI в provider.Configure() | ✅ | атрибут nubes_endpoint, env NUBES_ENDPOINT |
|
||||
| 3 | JWT auth в операторе (validateJWT vs статический токен) | ✅ | `internal/api/middleware/auth.go` — sub + exp, без подписи |
|
||||
| 4 | EnsureNamespace как отдельный endpoint | ✅ | `POST /v1/namespaces/{ns}/ensure`, `handler/namespace.go` |
|
||||
| 5 | router.go: маршрут `/ensure` | ✅ | добавлен перед Functions CRUD |
|
||||
| 6 | client.go провайдера: метод EnsureNamespace | ✅ | `terraform/provider/internal/client/client.go` |
|
||||
| 7 | provider.Configure(): вызов EnsureNamespace | ✅ | namespace создаётся один раз при init |
|
||||
| 8 | handler.go: убраны k8s-типы (SoC) | ✅ | только Handler struct + helpers |
|
||||
| 9 | secrets/ исключены из git (.gitignore) | ✅ | токены не попадают в репу |
|
||||
| 10 | E2E тест: apply + destroy | ✅ | namespace sless-cdd874dfa31ba6ca, все 4 ресурса |
|
||||
| 11 | operator v0.1.21 задеплоен | ✅ | naeel/sless-operator:v0.1.21 |
|
||||
| 12 | provider v0.1.13 опубликован | ✅ | terra.k8c.ru/naeel/sless v0.1.13 |
|
||||
| 13 | commit + push feat/namespace-per-user | ✅ | a1774e1 |
|
||||
|
||||
**Текущая ветка:** feat/namespace-per-user
|
||||
**Последний коммит:** a1774e1
|
||||
|
||||
---
|
||||
|
||||
## Остаток технического долга (не блокирует)
|
||||
|
||||
| # | Что | Приоритет |
|
||||
|---|-----|-----------|
|
||||
| 1 | `upload.go`: generateDockerfile/zipToTarGz — builder logic в HTTP handler | Средний |
|
||||
| 2 | `ensureRegistrySecret` в FunctionReconciler — cross-namespace инфра операция | Низкий |
|
||||
| 3 | `invocations.go` — 501 stub, PG подключён но endpoint не реализован | Средний |
|
||||
| 4 | LLM-валидация кода при upload | Средний (решение задизайнено в decisions/log.md) |
|
||||
| 5 | Scale-to-zero через KEDA HTTP Add-on | Низкий (v2) |
|
||||
| 6 | replicas field в FunctionSpec | Низкий (v1.1) |
|
||||
| 7 | RabbitMQ event triggers | Низкий (v2) |
|
||||
| 8 | Метрики → Victoria Metrics | Низкий |
|
||||
|
||||
Reference in New Issue
Block a user