Files
tf_provider/apps/iot-demo/HISTORY/09-final-deploy.md
T

59 lines
2.1 KiB
Markdown

# Шаг 9 — DEV стенд: все 6 сервисов развёрнуты
**Дата:** 2026-07-21
## Финальный состав (6 сервисов)
| # | Ресурс Terraform | Имя | Роль |
|---|-----------------|------|------|
| 1 | `nubes_kafka` | iot-kafka | Шина сообщений |
| 2 | `nubes_redis` | iot-redis | Кэш дашборда |
| 3 | `nubes_mongodb` | iot-mongo | Постоянное хранение |
| 4 | `nubes_flask` | iot-producer | Генератор IoT → Kafka |
| 5 | `nubes_flask` | iot-consumer | Kafka → Redis + MongoDB |
| 6 | `nubes_nodejs` | iot-dashboard | Redis → графики Chart.js |
## Git-репозитории
| Репо | Назначение |
|------|-----------|
| `Nail/tf-iot-producer` | Flask — IoT продюсер (Kafka TLS) |
| `Nail/tf-iot-consumer` | Flask — Kafka → Redis + MongoDB |
| `Nail/tf-iot-dashboard` | Node.js — дашборд Chart.js |
## Поток данных
```
Producer (Flask) → Kafka → Consumer (Flask) → Redis (кэш)
→ MongoDB (история)
Dashboard (Node.js) ← Redis (API /api/latest, /api/counters, /api/recent)
```
## Реальные ключи (определены опытным путём)
### Kafka
- bootstrap: `state_out_flat["internalConnect.bootstrap.fqdn"]:9093`**TLS**
- vault: `vault_secrets["users"]["iot-app"]["user.password"]`
### Redis
- host: `state_out_flat["internalConnect.master"]`
- vault: `vault_secrets["users"]["default"]["password"]`
### MongoDB
- host: `state_out_flat["internalConnect"]`
- port: 27017
- vault: `vault_secrets["users"]["admin"]["password"]`
## Структура приложений
- **Flask**: `site/app.py` + `requirements.txt` (БЕЗ Procfile)
- **Node.js**: `server.js` + `package.json` (`npm start`)
## Неудачные сервисы
| Сервис | Причина |
|--------|--------|
| `nubes_clickhouse` | GitHub release assets timeout |
| `nubes_superset` | IAM 408 timeout |
| `nubes_akhq` | `toBoolean() on null` — баг платформы |