1.8 KiB
1.8 KiB
Решение: Вынос IoT в отдельную репу
Дата: 2026-04-12 Статус: Принято и реализовано
Контекст
IoT managed service был частью sless (основной serverless operator). Код IoT жил в нескольких местах:
iot/— CRD types, controller, cmd (bridge, consumer)internal/storage/iotpg/— Postgres storeinternal/api/handler/iot_*.go— REST handlersinternal/api/ui/iot-*.html— UImain.go,Dockerfile— IoT интегрирован в основной бинарник
Проблемы
- IoT и sless — разные домены с разными циклами разработки
- Сборка sless включала IoT — лишние зависимости (Kafka, MQTT)
- Деплой любого 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 могут требовать обновления (новое имя образа)