feat: IoT demo — Kafka + Redis + MongoDB, 6 services, removed broken AKHQ/ClickHouse/Superset

This commit is contained in:
“Naeel”
2026-07-21 18:15:25 +04:00
parent 336e6e3795
commit e434a44fb5
13 changed files with 571 additions and 0 deletions
+45
View File
@@ -0,0 +1,45 @@
# Шаг 6 — DEV стенд: Kafka успешно создан
**Дата:** 2026-07-21
## Создано
| Ресурс | Статус |
|--------|--------|
| nubes_kafka.main (iot-kafka) | ✅ Создан (k8s-4) |
| nubes_kafka_topic.events | ✅ Создан |
| nubes_kafka_user.app | ✅ Создан |
## Реальные ключи state_out_flat (Kafka)
```
internalConnect.bootstrap.fqdn = kafkak8s-kafka-tls-bootstrap.<uid>.svc.cluster.local
internalConnect.bootstrap.port = 9093 ← TLS!
internalConnect.brokers.broker-1.fqdn = kafkak8s-kafkak8s-pool-0...
internalConnect.brokers.broker-1.port = 9093
externalConnect = "" (нет внешнего доступа)
```
## Реальная структура vault_secrets
```json
vault_secrets["users"] = {
"ca": {
"ca.crt": "...",
"ca.p12": "...",
"ca.password": "..."
},
"iot-app": {
"user.crt": "...",
"user.key": "...",
"user.p12": "...",
"user.password": "..." пароль здесь, ключ "user.password"
}
}
```
## ⚠️ Важные выводы
1. **Не `bootstrapServers`**, а `internalConnect.bootstrap.fqdn` + `.port`
2. **Не `password`**, а `user.password`
3. **TLS (порт 9093)**, не PLAINTEXT → Flask-код нужно менять на `SASL_SSL` + сертификаты
+51
View File
@@ -0,0 +1,51 @@
# Шаг 7 — DEV стенд: Kafka ✅, Producer ✅, ClickHouse ❌
**Дата:** 2026-07-21
## Результаты
| Ресурс | Статус |
|--------|--------|
| nubes_kafka.main | ✅ |
| nubes_kafka_topic | ✅ |
| nubes_kafka_user | ✅ |
| nubes_flask.producer | ✅ (после исправления структуры site/) |
| nubes_clickhouse.main | ❌ GitHub timeout |
| nubes_superset | ⏸ |
| nubes_flask.consumer | ⏸ (ждёт ClickHouse) |
## Реальные ключи Kafka (определены)
```
state_out_flat:
internalConnect.bootstrap.fqdn:9093 (TLS)
vault_secrets["users"]:
iot-app.user.password
ca.ca.crt
iot-app.user.crt
iot-app.user.key
```
## Ошибка ClickHouse (задокументирована)
```
Операция: INSTALLATION FAILED
Причина: context deadline exceeded при скачивании Helm-чарта
URL: https://release-assets.githubusercontent.com/.../altinity-clickhouse-operator-0.25.5.tgz
Длительность валидации: 345 сек → Откат: 0.2 сек
Корневая причина: K8s-кластер (k8s-3, k8s-4) не может достучаться до GitHub release assets.
Проблема на стороне платформы Nubes, не в нашей конфигурации.
```
## Исправление структуры Flask
❌ Было: `app.py` в корне + `Procfile`
✅ Стало: `site/app.py`, без `Procfile` (как в рабочем tfflaskcrud)
```diff
- Procfile
- app.py (в корне)
+ site/app.py
```
@@ -0,0 +1,42 @@
# Шаг 8 — DEV стенд: сервисы протестированы
**Дата:** 2026-07-21
## Итог тестирования сервисов
| # | Сервис | Статус | Причина ошибки |
|---|--------|--------|---------------|
| 1 | `nubes_kafka` | ✅ | — |
| 2 | `nubes_redis` | ✅ | — |
| 3 | `nubes_mongodb` | ✅ | — |
| 4 | `nubes_flask` (producer) | ✅ | — |
| 5 | `nubes_clickhouse` | ❌ | GitHub timeout (Helm chart) |
| 6 | `nubes_superset` | ❌ | IAM 408 timeout |
| 7 | `nubes_akhq` | ❌ | `toBoolean() on null` — баг платформы |
## Финальный список демо (6 сервисов)
| # | Сервис | Роль |
|---|--------|------|
| 1 | `nubes_kafka` | Шина сообщений |
| 2 | `nubes_redis` | Кэш дашборда |
| 3 | `nubes_mongodb` | Постоянное хранение |
| 4 | `nubes_flask` (producer) | IoT → Kafka |
| 5 | `nubes_flask` (consumer) | Kafka → Redis + MongoDB |
| 6 | `nubes_nodejs` (dashboard) | Redis → графики Chart.js |
## Реальные ключи (определены)
### Kafka
```
state_out_flat.internalConnect.bootstrap.fqdn:9093 (TLS)
vault_secrets["users"]["iot-app"]["user.password"]
vault_secrets["users"]["ca"]["ca.crt"]
```
### Структура Flask-приложений
```
site/app.py (НЕ app.py в корне!)
requirements.txt (Flask, gunicorn, ...)
БЕЗ Procfile
```