“Naeel”
a4a11bae54
docs(HISTORY): section 30 — cluster resources + load-test directive
2026-08-16 16:46:40 +04:00
“Naeel”
4c8bb39354
docs: no-kubectl deployment procedure (tail 4) + HISTORY 28-29
2026-08-16 16:20:07 +04:00
“Naeel”
4ddd95a441
feat(emqx): PG-auth in EMQX v0.2.4 + EnsureBridgeDevice v0.1.2 (tail 3)
2026-08-16 16:18:49 +04:00
“Naeel”
d970958e5c
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”
3ec8fe86c2
docs: HISTORY — подробная сводка развёрнутого стека, правила платформы, план хвостов
2026-08-16 15:11:13 +04:00
“Naeel”
31a7db18b2
docs: HISTORY — END-TO-END пройден: устройство→EMQX→bridge→SQS→consumer→PG→API; хвосты: AUTH_TEST_MODE, dashboard, процедура чужого кластера
2026-08-16 15:04:02 +04:00
“Naeel”
af0ebdfebc
docs: HISTORY — монолит поднят (sslmode=require), /health OK, EMQX переведён на адрес монолита; ошибки deck/pg_hba задокументированы
2026-08-16 14:52:20 +04:00
“Naeel”
f1199e4335
fix(emqx): v0.2.0 от официальной базы + резолвимые auth-заглушки — EMQX работает (502 устранён); HISTORY: развязка задокументирована
2026-08-16 14:22:35 +04:00
“Naeel”
0b9768e2f2
fix(emqx): mqtt_path→websocket.mqtt_path (v0.1.4, локально OK); HISTORY: на платформе boot висит — задокументировано
2026-08-16 13:48:26 +04:00
“Naeel”
2f127ee612
fix(emqx): v0.1.2 — procps для launcher (502 из-за ps: command not found); HISTORY: ошибки deck/502 задокументированы
2026-08-16 13:28:41 +04:00
“Naeel”
93af91f561
fix(emqx): v0.1.1 — сборка от debian, единственный EXPOSE 8083 (deck-UI берёт порт из образа, поле applicationUsePort в форме отсутствует)
2026-08-16 13:22:39 +04:00
“Naeel”
92c9a8a2f8
fix(emqx): EXPOSE только 8083 + комментарий про applicationUsePort в deck-UI
2026-08-16 13:17:43 +04:00
“Naeel”
06fb7ac231
docs: HISTORY — очередь iot-telemetry создана (тенант t-fec713a), готово к deck-UI
2026-08-16 10:23:51 +04:00
“Naeel”
dd80aa0bee
docs: HISTORY — PG готов: роль iot_service + БД iotdb на инстансе postgresqlk8s (проверено подключение), DSN формат
2026-08-16 10:22:14 +04:00
“Naeel”
a5bb95c9bd
docs: HISTORY — дисциплина: старое IoT не учитывать, только новые ресурсы
2026-08-16 10:18:00 +04:00
“Naeel”
88c33c4953
docs: HISTORY — проверка PG: старый инстанс dc5db45d удалён, живой 509145c3 (superuser OK, sqsdb отсутствует); нужен новый DSN + создать БД
2026-08-16 10:17:04 +04:00
“Naeel”
19a01128cd
docs: HISTORY — EMQX-образ, порядок деплоя контейнеров (EMQX → iot-service → kubectl-патч auth URL)
2026-08-16 10:13:34 +04:00
“Naeel”
b5333b13a0
feat: EMQX-образ для платформы (naeel/iot-emqx) — конфиг вшит, auth/ACL URL через env
2026-08-16 10:13:17 +04:00
“Naeel”
fd2e57b3dc
docs: HISTORY — Фаза 1 выполнена: монолит iot-service, структура пакетов, образ запушен (digest), инструкция deck-UI
2026-08-16 10:09:55 +04:00
“Naeel”
9d08473d5f
feat: монолит iot-service (Фаза 1) — config/store/api/bridge/consumer без k8s, устройства в PG, новые Dockerfile/Makefile
2026-08-16 10:07:51 +04:00
“Naeel”
f0c36a11ee
refactor: старые артефакты IoT перенесены в legacy/ (git mv, история сохранена); активное дерево очищено, go build OK
2026-08-16 09:48:34 +04:00
“Naeel”
bf32394def
docs: аудит вмешательства старого IoT — k8s-зависимости только в 3 хендлерах; Dockerfile помечен ЛЕГАСИ; правило монолита зафиксировано
2026-08-16 09:44:45 +04:00
“Naeel”
eb7d312d89
docs: пометка ЛЕГАСИ всего старого IoT (манифесты, CRD, оператор, документы, examples, Makefile) + корневой LEGACY.md; удалений нет
2026-08-16 09:37:29 +04:00
“Naeel”
f8537138dd
docs: HISTORY — старый IoT: зомби (поды Running, DNS снят, qu.kube5s.ru удалён — consumer в ошибке); wss-тест старого домена отменён
2026-08-16 09:31:33 +04:00
“Naeel”
b69f0b5276
docs: HISTORY — ответ Sonnet оценён: 7 поправок (PG не меняется, тот же кластер/шлюз, multi-port, EMQX env, /metrics, bcrypt, dedup); след.шаг: wss-тест старого прод-домена
2026-08-16 09:25:21 +04:00
“Naeel”
031e71b39d
docs: HISTORY — Vultr-тест: обрыв 163.3с идентичен станции — доказано, что ~150с рвёт краевой шлюз Nubes; данные для тикета
2026-08-16 09:13:06 +04:00
“Naeel”
f8c6b3e784
docs: HISTORY — итоги диагностики: платформа чиста (VM 300с/600с), обрыв только с пути станции (5/5), echo.org чист; план: тест с 3-й точки + тикет
2026-08-16 08:49:01 +04:00
“Naeel”
485f7c6fb1
docs: HISTORY — диагностика: под/nginx чисты, обрыв на краевом шлюзе (RUN1 ровно 173.1с), внутренний тест идёт
2026-08-16 08:38:32 +04:00
“Naeel”
11352a4fb3
docs: HISTORY — длительный wss-тест: обрыв на 173с (лимит соединений платформы ~150с?), план диагностики
2026-08-16 08:29:55 +04:00
“Naeel”
a857753cfd
docs: HISTORY — контейнер задеплоен, wss 101 + echo работают (ключевой вывод), длительный тест запущен
2026-08-16 08:26:38 +04:00
“Naeel”
de5be0c473
docs: HISTORY — правка инструкции deck-UI: образ latest (путь фиксирован, тег не сменяем)
2026-08-16 08:20:26 +04:00
“Naeel”
c912aafc30
docs: HISTORY — ws-probe создан, образ запушен (digest, инструкция deck-UI)
2026-08-16 08:18:37 +04:00
“Naeel”
27cb40e421
feat(ws-probe): тестовый WS echo-сервер для проверки wss на платформе Nubes (v0.1.0, образ naeel/iot-ws-probe)
2026-08-16 08:18:18 +04:00
“Naeel”
2a7ecd288e
docs: HISTORY 2026-08-16 — состояние IoT, выводы по миграции (контейнер vs Node.js), факты платформы из SQS-репо
2026-08-16 08:10:04 +04:00
Naeel
368ff060a2
fix(ingress): remove cert-manager + ssl-redirect, TLS is external
...
The platform (185.247.187.147) terminates TLS externally before nginx.
HTTP-01 ACME challenge was stuck for 8 days because the platform
globally redirects HTTP→HTTPS before reaching nginx ingress.
Changes:
- Remove cert-manager.io/cluster-issuer: letsencrypt-prod annotation
- Remove tls section (iot-kube5s-ru-tls secret was never created)
- Set ssl-redirect: false (TLS termination is at the edge, not nginx)
- Update comment to document the actual TLS architecture
2026-04-21 07:56:06 +03:00
Naeel
146aaef543
docs: add testing report v0.2.6 (33 tests, 3 bugs fixed)
...
- doc/testing-v0.2.6.md: full E2E testing report (8 groups, 33 tests)
- Group 1: E2E pipeline (MQTT→SQS→Postgres→API)
- Group 2: Device API error codes (7 tests)
- Group 3: MQTT Auth edge cases (11 tests)
- Group 4: Device lifecycle PATCH/DELETE
- Group 5: ACL topic isolation
- Group 6: Non-standard MQTT payloads
- Group 7: Telemetry API limits/filters
- Group 8: Load tests (900 msgs, race condition)
- deployments: bump mqtt-bridge + sqs-consumer to v0.2.6
2026-04-21 07:36:11 +03:00
Naeel
76c11d5476
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
f0cc6df9a6
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
d5a177e23c
doc: обновлён progress — аудит sless документации, перечень созданных файлов v0.2.3
2026-04-12 18:43:48 +03:00
Naeel
907aaad100
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
4cba163ace
doc: актуальная архитектура, thinking log, правила ФС и документации
2026-04-12 16:32:14 +03:00
Naeel
d4f7c5abc8
doc: обновлена документация — дополнения к архитектуре, деплою, прогрессу
...
- architecture/overview.md: добавлена актуальная схема (SQS, managed PG)
- deployment.md: добавлена процедура деплоя в iot-naeel
- progress.md: добавлен блок 2026-04-12 (Kafka→SQS, деплой)
- api/endpoints.md: добавлен актуальный формат /iot-admin/stats
- thinking/2026-04-12.md: дописан ход реализации и деплоя
- copilot-instructions.md: добавлено правило «документацию не стирать»
Старая документация (Kafka, RabbitMQ) сохранена как база знаний.
2026-04-12 16:16:46 +03:00
Naeel
150146edba
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
6caab6b729
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
a5e52c9e1c
chore: добавить правила SSH/VM в copilot-instructions + лог мышления
2026-04-12 14:52:57 +03:00
Naeel
e70c164203
docs: copilot-instructions, архитектура, API, progress, decisions
2026-04-12 14:34:34 +03:00
Naeel
1a94241c62
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