docs: HISTORY — END-TO-END пройден: устройство→EMQX→bridge→SQS→consumer→PG→API; хвосты: AUTH_TEST_MODE, dashboard, процедура чужого кластера
This commit is contained in:
@@ -767,3 +767,34 @@ store сам создаст таблицу iot_devices.
|
||||
**Следующий шаг:** end-to-end проверка: создать устройство через REST API →
|
||||
MQTT CONNECT (wss) с кредами устройства → publish телеметрии → SQS →
|
||||
consumer → PG → чтение через /v1/.../telemetry.
|
||||
|
||||
---
|
||||
|
||||
## 24. END-TO-END ПРОЙДЕН (16.08, ~14:02 GMT+03) ✅
|
||||
|
||||
**Полная цепочка проверена на платформе:**
|
||||
1. Устройство создано через API: POST /v1/namespaces/test/iot/devices
|
||||
(dev1, device_id=dev-001) → mqtt_username `test_dev-001`, пароль получен.
|
||||
2. MQTT-клиент (paho, wss://exqx.containerk8s.dev.nubes.ru:443/mqtt,
|
||||
transport=websockets) — CONNECT принят (rc=0), publish в
|
||||
`test/telemetry/dev-001` (rc=0, QoS1).
|
||||
3. EMQX HTTP-auth → монолит: bridge `iot-bridge` подключён (лог EMQX:
|
||||
clientid=iot-bridge, WS-MQTT, PINGRESP; монолит: `bridge: MQTT connected`).
|
||||
4. Bridge → SQS: `forwarded telemetry to SQS` (внутренний endpoint).
|
||||
5. Consumer → PG: `telemetry saved namespace=test device=dev-001`;
|
||||
GET /v1/namespaces/test/iot/telemetry → count=1, payload {"e2e":true,"temp":23.5}.
|
||||
|
||||
**Ошибки по пути (исправлены, задокументированы):**
|
||||
1. `permission denied to create role (42501)` — роль iot_service не имела прав
|
||||
для per-tenant БД. Исправлено: `ALTER ROLE iot_service CREATEROLE CREATEDB`.
|
||||
⚠️ Для чужого кластера: при подготовке БД давать роли эти права.
|
||||
2. pg_hba SSL — DSN с sslmode=require (см. раздел 23).
|
||||
|
||||
**Открытые хвосты:**
|
||||
- AUTH_TEST_MODE=true включён для теста (kubectl set env) — вернуть false
|
||||
(kubectl set env AUTH_TEST_MODE=false или дефолт образа при пересоздании).
|
||||
- EMQX: dashboard-listener падает с таймаутами (CPU 500m) — убрать из конфига
|
||||
(v0.2.1) и/или квота CPU ≥1000m при создании в deck.
|
||||
- Процедура для чужого кластера без kubectl: PG-auth в EMQX (вместо HTTP),
|
||||
порядок деплоя EMQX→iot-service, UUID из консоли deck, DSN с sslmode=require,
|
||||
роль с CREATEROLE/CREATEDB, один EXPOSE-порт в образе EMQX.
|
||||
|
||||
Reference in New Issue
Block a user