42 lines
1.8 KiB
Markdown
42 lines
1.8 KiB
Markdown
# Решение: Вынос IoT в отдельную репу
|
|
|
|
**Дата:** 2026-04-12
|
|
**Статус:** Принято и реализовано
|
|
|
|
## Контекст
|
|
|
|
IoT managed service был частью sless (основной serverless operator).
|
|
Код IoT жил в нескольких местах:
|
|
- `iot/` — CRD types, controller, cmd (bridge, consumer)
|
|
- `internal/storage/iotpg/` — Postgres store
|
|
- `internal/api/handler/iot_*.go` — REST handlers
|
|
- `internal/api/ui/iot-*.html` — UI
|
|
- `main.go`, `Dockerfile` — IoT интегрирован в основной бинарник
|
|
|
|
## Проблемы
|
|
|
|
1. IoT и sless — разные домены с разными циклами разработки
|
|
2. Сборка sless включала IoT — лишние зависимости (Kafka, MQTT)
|
|
3. Деплой любого IoT изменения требовал пересборки всего sless
|
|
|
|
## Решение
|
|
|
|
Вынести IoT в отдельную репу `gitea.services.ngcloud.ru/Nail/IoT`:
|
|
- Свой Go модуль, go.mod, Dockerfile
|
|
- 3 бинарника в одном образе (`naeel/iot-operator`)
|
|
- Свой controller-manager + REST API (cmd/iot-operator)
|
|
- Независимый CI/CD цикл
|
|
|
|
## Что перенесено
|
|
|
|
- CRD types, controller, mqtt-bridge, kafka-consumer — as-is
|
|
- Handler struct упрощён (убраны S3, PG от sless)
|
|
- Router — только IoT маршруты
|
|
- Middleware (auth, logging) — скопированы как есть
|
|
- K8s manifests, CRD YAML, документация, примеры
|
|
|
|
## Риски
|
|
|
|
- IoT код в sless нужно будет убрать (или оставить заглушки)
|
|
- K8s manifests могут требовать обновления (новое имя образа)
|