v0.1.59: IoT telemetry pipeline — Postgres storage + REST API + UI table

This commit is contained in:
Naeel
2026-04-05 08:46:17 +03:00
parent d51e33d876
commit 2bdd753f4e
11 changed files with 630 additions and 21 deletions
+6 -1
View File
@@ -1,4 +1,5 @@
# Создано: 2026-04-04
# Изменено: 2026-04-05 (добавлен IOT_PG_DSN, версия v0.1.59)
# Deployment iot-mqtt-bridge — MQTT→RabbitMQ мост для IoT.
#
# Получает MQTT сообщения от EMQX (подписка на "+/telemetry/+")
@@ -44,7 +45,7 @@ spec:
- name: mqtt-bridge
# Тот же образ что и оператор — оба бинаря в одном слое (manager + iot-mqtt-bridge).
# При смене версии оператора — менять тег и здесь.
image: pearlharbor.registryk8s.services.ngcloud.ru/naeel/sless-operator:v0.1.53
image: pearlharbor.registryk8s.services.ngcloud.ru/naeel/sless-operator:v0.1.59
imagePullPolicy: Always
command: ["/iot-mqtt-bridge"]
env:
@@ -59,6 +60,10 @@ spec:
envFrom:
- secretRef:
name: iot-bridge-credentials
# IOT_PG_DSN — сохранение телеметрии в Postgres (опционально)
- secretRef:
name: iot-postgres-secret
optional: true
resources:
requests:
memory: "32Mi"
+66
View File
@@ -0,0 +1,66 @@
# Создано: 2026-04-05
# Postgres для IoT телеметрии — отдельный от sless postgres (тот для invocations логов).
# Deployment (не StatefulSet) — для dev/demo. В prod заменить на managed Postgres.
#
# Суперюзер iot_admin используется оператором для:
# - CREATE USER tenant_{ns} + CREATE DATABASE tenant_{ns}
# - CREATE TABLE iot_telemetry в tenant DB
# Клиенты НЕ имеют прямого доступа — только через REST API платформы.
---
apiVersion: v1
kind: Secret
metadata:
name: iot-postgres-secret
namespace: sless
stringData:
# Суперпользователь — для управления tenant databases
POSTGRES_USER: "iot_admin"
POSTGRES_PASSWORD: "iot-pg-super-2026"
POSTGRES_DB: "iot_platform"
# DSN для оператора и mqtt-bridge (superuser к management DB)
IOT_PG_DSN: "postgresql://iot_admin:iot-pg-super-2026@iot-postgres.sless.svc:5432/iot_platform?sslmode=disable"
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: iot-postgres
namespace: sless
labels:
app: iot-postgres
spec:
replicas: 1
selector:
matchLabels:
app: iot-postgres
template:
metadata:
labels:
app: iot-postgres
spec:
containers:
- name: postgres
image: postgres:16-alpine
ports:
- containerPort: 5432
envFrom:
- secretRef:
name: iot-postgres-secret
resources:
requests:
memory: "128Mi"
cpu: "100m"
limits:
memory: "512Mi"
cpu: "500m"
---
apiVersion: v1
kind: Service
metadata:
name: iot-postgres
namespace: sless
spec:
selector:
app: iot-postgres
ports:
- port: 5432
targetPort: 5432
+7 -3
View File
@@ -1,4 +1,4 @@
# Изменено: 2026-03-21
# Изменено: 2026-04-05 (добавлен IOT_PG_DSN, версия v0.1.59)
# Деплой sless оператора в кластер.
# Состав:
# - ConfigMap: не-секретные env vars (S3_ENDPOINT, REGISTRY_HOST и т.д.)
@@ -74,8 +74,8 @@ spec:
containers:
- name: operator
# При обновлении версии оператора — менять тег здесь (не latest!)
# v0.1.50 — добавлены IoT controller, IoT REST API, MQTT auth endpoint
image: pearlharbor.registryk8s.services.ngcloud.ru/naeel/sless-operator:v0.1.58
# v0.1.59 — добавлено сохранение телеметрии в IoT Postgres (per-tenant DB)
image: pearlharbor.registryk8s.services.ngcloud.ru/naeel/sless-operator:v0.1.59
# Always — чтобы всегда тянуть по точному тегу (не кешировать старый)
imagePullPolicy: Always
ports:
@@ -90,6 +90,10 @@ spec:
name: sless-operator-config
- secretRef:
name: sless-operator-secret
# IOT_PG_DSN — опциональный ключ: если не задан, IoT Postgres отключён
- secretRef:
name: iot-postgres-secret
optional: true
readinessProbe:
httpGet:
path: /healthz