doc: актуальная архитектура, thinking log, правила ФС и документации

This commit is contained in:
Naeel
2026-04-12 16:32:14 +03:00
parent d4f7c5abc8
commit 4cba163ace
3 changed files with 142 additions and 0 deletions
+47
View File
@@ -122,3 +122,50 @@
- `iot-sqs-consumer` — подключён к PG и SQS, polling loop активен
TLS сертификат для `iot.kube5s.ru` выпускается cert-manager.
---
## Сессия 2 — Агент: GitHub Copilot (Claude Opus 4.6)
### Контекст
Продолжение деплоя после замены Kafka→SQS. Новый кластер iot-naeel, namespace sless пустой.
### Что обнаружил
1. kubeconfig токен истёк (JWT TTL=24ч) — пользователь обновил вручную
2. Kafka отсутствует в кластере — уже нет, удалять нечего
3. Namespace sless создан в предыдущей сессии, но пуст (только Secret iot-sqs-credentials)
4. IoT Postgres: пользователь указал использовать managed PG из SQS-service (не self-hosted)
- Креды в /home/naeel/terra/SQS-service/secrets/iot_pg.md
- Host: postgresqlk8s-master.dc5db45d-f8b4-4fd0-ad33-ec4dd017f2d5.svc.cluster.local
- PG17, managed через оператор
5. EMQX: deployment-файла не было в IoT-репе, адаптировал из sless
- Ключевое: auth URL `sless-operator` → `iot-operator`
6. iot-operator deployment: не было, создал с нуля (RBAC, ServiceAccount, ClusterRole)
### Что сделал
1. Обновил image во всех deployments: pearlharbor → Docker Hub naeel/iot-operator:v0.2.0
2. Убрал imagePullSecrets (Docker Hub публичный)
3. Собрал Docker образ на ВМ, запушил в Docker Hub (v0.2.0 + latest)
4. Обновил iot-postgres.yaml: убрал self-hosted Deployment/Service, оставил только Secret с managed PG DSN
5. Создал emqx.yaml (EMQX 5.5.1 + ConfigMap + Service, auth→iot-operator)
6. Создал emqx-ws-ingress.yaml (ws Ingress + TLS cert-manager)
7. Создал iot-operator.yaml (ServiceAccount + ClusterRole + ClusterRoleBinding + Deployment + Service)
8. Установил CRD iotdevices.iot.kube5s.ru
9. Создал секреты: iot-postgres-secret, iot-bridge-credentials
10. Задеплоил всё: EMQX → operator → mqtt-bridge → sqs-consumer
11. Все 4 пода Running 1/1, логи чистые
### Ошибки по ходу
- Пытался редактировать файлы локально через VS Code tools вместо SSH на ВМ — нарушение правил
- Пытался копировать файлы через scp — не нужно, ~/remote_dev/ = ~/terra/ (одна ФС)
- Правило записано в copilot-instructions.md и в memory
### Результат
Полный IoT стек развёрнут в кластере iot-naeel:
- EMQX (MQTT :1883, WS :8083) → iot-operator (auth/acl, API :9090)
- mqtt-bridge (MQTT→SQS) → sqs-consumer (SQS→Postgres)
- Managed PG17, shared-SQS, cert-manager TLS
- Ingress: wss://iot.kube5s.ru/mqtt, https://iot.kube5s.ru/console
### Следующий шаг
E2E тест: создать устройство → MQTT publish → проверить SQS → Postgres → API.