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) сохранена как база знаний.
This commit is contained in:
@@ -304,3 +304,101 @@ node {
|
||||
|--------|------|-----------|
|
||||
| v0.1.50 | 2026-04-04 | IoT controller + IoT API + iot-mqtt-bridge бинарь |
|
||||
| v0.1.49 | ранее | До IoT |
|
||||
|
||||
---
|
||||
|
||||
## Актуальный деплой (2026-04-12)
|
||||
|
||||
> Кластер: iot-naeel (новый). Kafka удалён. Postgres — managed. SQS вместо Kafka.
|
||||
|
||||
### Кластер iot-naeel
|
||||
|
||||
- API: `https://185.247.187.149:6443`
|
||||
- Ingress IP: `185.247.187.151`
|
||||
- DNS: `iot.kube5s.ru → 185.247.187.147`
|
||||
- kubeconfig: `~/.kube/config` на ВМ (токен с TTL 24ч, обновляется через auth.k8s.ngcloud.ru)
|
||||
|
||||
### Namespace sless — содержимое
|
||||
|
||||
| Ресурс | Имя | Описание |
|
||||
|--------|-----|----------|
|
||||
| Deployment | emqx | MQTT-брокер EMQX 5.5.1 |
|
||||
| Deployment | iot-operator | Controller-manager + REST API v0.2.0 |
|
||||
| Deployment | iot-mqtt-bridge | MQTT → shared-SQS bridge v0.2.0 |
|
||||
| Deployment | iot-sqs-consumer | shared-SQS → Postgres consumer v0.2.0 |
|
||||
| Service | emqx | :1883 (MQTT), :8083 (WS), :18083 (dashboard) |
|
||||
| Service | emqx-ws | :8083 (для Ingress) |
|
||||
| Service | iot-operator | :9090 (REST API) |
|
||||
| Ingress | emqx-mqtt-websocket | iot.kube5s.ru → /mqtt (WS), /console (UI) |
|
||||
| Secret | iot-sqs-credentials | SQS_ENDPOINT, SQS_ACCESS_KEY, SQS_SECRET_KEY |
|
||||
| Secret | iot-postgres-secret | POSTGRES_USER, POSTGRES_PASSWORD, IOT_PG_DSN |
|
||||
| Secret | iot-bridge-credentials | MQTT_USERNAME, MQTT_PASSWORD |
|
||||
| CRD | iotdevices.iot.kube5s.ru | IoTDevice v1alpha1 |
|
||||
| ServiceAccount | iot-operator | + ClusterRole + ClusterRoleBinding |
|
||||
|
||||
### Процедура деплоя (актуальная)
|
||||
|
||||
```bash
|
||||
# 0. SSH на ВМ (все команды оттуда)
|
||||
ssh -i ~/.ssh/id_ed25519 naeel@5.172.178.213
|
||||
|
||||
# 1. Сборка и push образа
|
||||
cd /home/naeel/terra/IoT
|
||||
docker build -t naeel/iot-operator:v0.2.0 -t naeel/iot-operator:latest .
|
||||
docker push naeel/iot-operator:v0.2.0
|
||||
docker push naeel/iot-operator:latest
|
||||
|
||||
# 2. CRD (один раз)
|
||||
kubectl apply -f config/crd/bases/iot.kube5s.ru_iotdevices.yaml
|
||||
|
||||
# 3. Postgres Secret (содержит DSN managed PG)
|
||||
kubectl apply -f deployments/k8s/iot-postgres.yaml
|
||||
|
||||
# 4. EMQX
|
||||
kubectl apply -f deployments/k8s/emqx.yaml
|
||||
kubectl apply -f deployments/k8s/emqx-ws-ingress.yaml
|
||||
|
||||
# 5. Operator
|
||||
kubectl apply -f deployments/k8s/iot-operator.yaml
|
||||
|
||||
# 6. SQS credentials (уже создан через kubectl create secret)
|
||||
# kubectl get secret iot-sqs-credentials -n sless
|
||||
|
||||
# 7. MQTT bridge credentials (уже создан)
|
||||
# kubectl get secret iot-bridge-credentials -n sless
|
||||
|
||||
# 8. Bridge + Consumer
|
||||
kubectl apply -f deployments/k8s/iot-mqtt-bridge.yaml
|
||||
kubectl apply -f deployments/k8s/iot-sqs-consumer.yaml
|
||||
|
||||
# 9. Проверка
|
||||
kubectl get pods -n sless
|
||||
kubectl logs -n sless deployment/iot-operator --tail=10
|
||||
kubectl logs -n sless deployment/iot-mqtt-bridge --tail=10
|
||||
kubectl logs -n sless deployment/iot-sqs-consumer --tail=10
|
||||
```
|
||||
|
||||
### Managed PostgreSQL
|
||||
|
||||
- Namespace: `dc5db45d-f8b4-4fd0-ad33-ec4dd017f2d5`
|
||||
- Pod: `postgresqlk8s-0`
|
||||
- Host: `postgresqlk8s-master.dc5db45d-f8b4-4fd0-ad33-ec4dd017f2d5.svc.cluster.local`
|
||||
- User: `super`, DB: `sqsdb`, PG 17
|
||||
- Тот же инстанс что использует shared-SQS для billing
|
||||
- Credentials: см. `/home/naeel/terra/SQS-service/secrets/iot_pg.md`
|
||||
|
||||
### shared-SQS (очередь вместо Kafka)
|
||||
|
||||
- Namespace: `shared-sqs`
|
||||
- Endpoint: `https://qu.kube5s.ru`
|
||||
- Tenant ID: `t-96afe7e9f781f6ca` (iot-service)
|
||||
- Queue: `iot-telemetry`
|
||||
- Access Key: хранится в Secret `iot-sqs-credentials` namespace `sless`
|
||||
- Admin token: хранится в Secret `shared-sqs-admin` namespace `shared-sqs`
|
||||
|
||||
### Версии образов (актуальные)
|
||||
|
||||
| Версия | Дата | Registry | Изменения |
|
||||
|--------|------|----------|-----------|
|
||||
| v0.2.0 | 2026-04-12 | Docker Hub naeel/iot-operator | Kafka→SQS, managed PG, новый кластер |
|
||||
| v0.1.50 | 2026-04-04 | pearlharbor (Harbor) | IoT controller + API + mqtt-bridge (Kafka) |
|
||||
|
||||
Reference in New Issue
Block a user