docs: IoT telemetry storage architecture decisions and thinking log
This commit is contained in:
+47
-1
@@ -1597,5 +1597,51 @@ G15 перезапущен → **21/21 PASS ✅**
|
||||
| 4 | nginx `client_max_body_size` ограничивает upload → 413 (не настроено явно) | G13F-4 NOTE |
|
||||
|
||||
### Версия оператора
|
||||
`v0.1.51` — задеплоен, работает
|
||||
`v0.1.52` — задеплоен, работает
|
||||
|
||||
---
|
||||
|
||||
## 2026-04-04 — IoT WebSocket workaround + MQTT ACL + Архитектура телеметрии
|
||||
|
||||
### Выполнено
|
||||
|
||||
#### MQTT WebSocket workaround (порт 1883 закрыт NSX-T)
|
||||
- Создан Ingress `emqx-mqtt-websocket`: `iot.kube5s.ru/mqtt → EMQX:8083`
|
||||
- DNS A-запись `iot.kube5s.ru → 185.247.187.147` создана пользователем
|
||||
- Отлажена цепочка: убран `configuration-snippet` (заблокирован в nginx v1.12.6),
|
||||
добавлен `ssl-redirect: false`, `pathType: Exact`
|
||||
- Тест: `Connected rc=0` через paho-mqtt WebSocket ✅
|
||||
- Коммит: `6e3e473` (ветка Ioter)
|
||||
|
||||
#### MQTT ACL изоляция топиков
|
||||
- Найдена уязвимость: `authorization { no_match = allow }` — любой клиент мог
|
||||
читать топики других клиентов после успешного CONNECT
|
||||
- EMQX 5.x: ACL в ответе auth игнорируется (это EMQX 4.x фича)
|
||||
- Добавлен endpoint `POST /internal/mqtt/acl` в sless-operator
|
||||
- Обновлён `emqx.conf`: HTTP authorization backend, `no_match = deny`
|
||||
- Тест: `sless/iot-bridge/#` → ALLOWED, `sless/other-device/telemetry` → DENIED + disconnect
|
||||
- Лог EMQX: `authorization_permission_denied` ✅
|
||||
- Оператор v0.1.52 задеплоен
|
||||
- Коммит: `b23ae40` (ветка Ioter)
|
||||
|
||||
### Архитектурные решения (обсуждение, не реализовано)
|
||||
|
||||
Принято решение о хранении IoT телеметрии:
|
||||
- Отдельная DATABASE per tenant в одном Postgres инстансе
|
||||
- REST API для доступа (не прямой доступ к Postgres)
|
||||
- JSONB payload (разные данные у разных клиентов)
|
||||
- Отдельный iot-operator независимо от sless-operator
|
||||
- schema.sql при деплое функции
|
||||
- DB_DSN в env var функции
|
||||
|
||||
Подробно: `doc/decisions/iot-telemetry-storage-2026-04-04.md`
|
||||
|
||||
### Следующий этап (ветка iot-pg-telemetry)
|
||||
|
||||
- [ ] Postgres StatefulSet в namespace `iot`
|
||||
- [ ] Provisioning БД при создании tenant
|
||||
- [ ] INSERT telemetry из iot-mqtt-bridge
|
||||
- [ ] REST API чтения телеметрии
|
||||
- [ ] DB_DSN в function pod env
|
||||
- [ ] schema.sql при деплое функции
|
||||
|
||||
|
||||
Reference in New Issue
Block a user