Repinoid
c97b63b190
P1-4: убрать неаутентифицированные /internal/mqtt/auth|acl из роутера
...
EMQX ходит в PostgreSQL напрямую (backend=postgresql), эти HTTP-эндпоинты были
неиспользуемым fallback и висели на публичном порту без аутентификации (перебор
паролей устройств / выдача ACL). Удалены из роутера.
2026-10-06 19:05:12 +03:00
Repinoid
4afee5cdf9
P0-1/P0-2: tenant-граница по sub + обязательная подпись JWT
...
validateJWT теперь возвращает sub; middleware сверяет sub с {namespace} из URL
(несовпадение → 403) — закрывает горизонтальный доступ к чужим namespace.
Вне AUTH_TEST_MODE подпись HS256 обязательна: без JWT_HMAC_SECRET middleware
отказывает (fail-closed, 500), а config.Load требует секрет на старте.
2026-10-06 19:04:54 +03:00
“Naeel”
ce9e20266c
feat(landing): vertical large pipeline diagram; v0.1.13
2026-08-16 19:16:58 +04:00
“Naeel”
30e7da8cf8
feat(landing): hand-drawn pipeline SVG diagram; v0.1.12
2026-08-16 19:11:17 +04:00
“Naeel”
0f71e715be
docs(landing): rewrite as clear how-to (4 steps with copy-paste commands); v0.1.9
2026-08-16 18:51:59 +04:00
“Naeel”
ce01b6f9f8
feat(api): landing page with Nubes design (logo+favicon), /static; v0.1.8
2026-08-16 18:46:17 +04:00
“Naeel”
68becfd6bc
fix: review findings (async SQS dispatcher, backoff, batch insert, shutdown order, pagination, HMAC) + loadtest fixes; v0.1.6
2026-08-16 18:24:09 +04:00
“Naeel”
8b3f3ab5df
feat(emqx): PG-auth in EMQX v0.2.4 + EnsureBridgeDevice v0.1.2 (tail 3)
2026-08-16 16:18:49 +04:00
“Naeel”
12b43e7999
fix(bridge): resubscribe on every (re)connect; emqx v0.2.1 dashboard off; iot-service v0.1.1
2026-08-16 15:24:26 +04:00
“Naeel”
7647627052
feat: монолит iot-service (Фаза 1) — config/store/api/bridge/consumer без k8s, устройства в PG, новые Dockerfile/Makefile
2026-08-16 10:07:51 +04:00
Naeel
39c4a9afb1
fix: rename query param device->device_id in telemetry API (v0.2.6)
...
- GET /telemetry?device_id= now consistently uses device_id
- was: ?device= (inconsistent with response field name)
- found during extended test suite
2026-04-21 07:20:12 +03:00
Naeel
bbc26555fc
fix: MQTTAuth device lookup by Spec.DeviceID + PG15+ GRANT (v0.2.5)
...
- MQTTAuth: replaced Get(Name=deviceID) with List+filter by Spec.DeviceID
(K8s object name != deviceID — caused deny for all devices)
- EnsureTenantDB: added GRANT role TO CURRENT_USER before CREATE DATABASE OWNER
(PG15+ requires SET ROLE privileges for target owner)
- Image: naeel/iot-operator:v0.2.5
- E2E test passed: device create → MQTT publish → SQS → Postgres → REST API
2026-04-12 19:00:56 +03:00
Naeel
0fff5a4548
docs: полная документация v0.2.3 — архитектура, API, деплой, тестирование
...
Новые файлы:
- doc/architecture/current-v0.2.3.md — актуальная архитектура
- doc/api/endpoints-v0.2.3.md — полная документация REST API
- doc/deployment-v0.2.3.md — инструкция деплоя v0.2.3
- doc/run-and-test.md — руководство по запуску и E2E тесту
Обновлено:
- doc/progress.md — секция документации
- doc/thinking/2026-04-12.md — лог мышления
2026-04-12 18:36:12 +03:00
Naeel
e9c8cb7b59
deploy: EMQX, iot-operator, managed Postgres, Docker Hub image
...
- Добавлен EMQX deployment + WS ingress (адаптирован из sless)
- Добавлен iot-operator deployment с RBAC (ServiceAccount, ClusterRole)
- Postgres: заменён self-hosted на managed (dc5db45d namespace)
- Image: naeel/iot-operator:v0.2.0 (Docker Hub)
- Убран imagePullSecrets (Docker Hub публичный)
2026-04-12 16:07:41 +03:00
Naeel
fab148df54
feat: замена Kafka → shared-SQS в IoT pipeline
...
- mqtt-bridge: kafka.Writer → SQS SendMessage (AWS SDK Go v2)
- kafka-consumer → sqs-consumer: polling loop с ReceiveMessage/DeleteMessage
- admin stats: Kafka lag → SQS GetQueueAttributes
- Удалён kafka-consumer, добавлен sqs-consumer
- go.mod: убран segmentio/kafka-go, добавлен aws-sdk-go-v2
- Dockerfile, Makefile: kafka-consumer → sqs-consumer
- .gitignore: исправлен чтобы не игнорировать cmd/ директории
- deployments: новый iot-sqs-consumer.yaml, обновлён mqtt-bridge
- doc/decisions: задокументировано решение
2026-04-12 15:28:45 +03:00
Naeel
aba7683be2
feat: перенос IoT managed service из sless в отдельную репу
...
Компоненты:
- iot-operator: controller-manager (IoTDevice CRD) + REST API (порт 9090)
- mqtt-bridge: MQTT (EMQX) → Kafka bridge
- kafka-consumer: Kafka → Postgres pipeline
Модуль: gitea.services.ngcloud.ru/Nail/IoT
Все 3 бинарника собираются, import paths адаптированы.
2026-04-12 14:29:43 +03:00