deploy: EMQX, iot-operator, managed Postgres, Docker Hub image

- Добавлен EMQX deployment + WS ingress (адаптирован из sless)
- Добавлен iot-operator deployment с RBAC (ServiceAccount, ClusterRole)
- Postgres: заменён self-hosted на managed (dc5db45d namespace)
- Image: naeel/iot-operator:v0.2.0 (Docker Hub)
- Убран imagePullSecrets (Docker Hub публичный)
This commit is contained in:
Naeel
2026-04-12 16:07:41 +03:00
parent 6caab6b729
commit 150146edba
8 changed files with 554 additions and 196 deletions
+14 -54
View File
@@ -1,11 +1,16 @@
# Создано: 2026-04-05
# Postgres для IoT телеметрии — отдельный от sless postgres (тот для invocations логов).
# Deployment (не StatefulSet) — для dev/demo. В prod заменить на managed Postgres.
# Изменено: 2026-04-12 (заменён self-hosted на managed Postgres через оператор)
#
# Суперюзер iot_admin используется оператором для:
# Managed PostgreSQL 17 — тот же инстанс что использует shared-SQS.
# Namespace: dc5db45d-f8b4-4fd0-ad33-ec4dd017f2d5 (managed оператором)
# Host: postgresqlk8s-master.dc5db45d-f8b4-4fd0-ad33-ec4dd017f2d5.svc.cluster.local
#
# IoT оператор использует суперюзер для:
# - CREATE USER tenant_{ns} + CREATE DATABASE tenant_{ns}
# - CREATE TABLE iot_telemetry в tenant DB
# Клиенты НЕ имеют прямого доступа — только через REST API платформы.
#
# Deployment и Service удалены — Postgres managed, только Secret с DSN.
---
apiVersion: v1
kind: Secret
@@ -13,54 +18,9 @@ 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
# Суперпользователь managed Postgres
POSTGRES_USER: "super"
POSTGRES_PASSWORD: "BQUF5ruECa1ZFlq4wYt3gPJUEmtBMkA9QNK4MM5Sd8al4ArMDlmT16DIKHYBPyif"
POSTGRES_DB: "sqsdb"
# DSN для iot-operator и sqs-consumer (superuser к managed DB)
IOT_PG_DSN: "postgresql://super:BQUF5ruECa1ZFlq4wYt3gPJUEmtBMkA9QNK4MM5Sd8al4ArMDlmT16DIKHYBPyif@postgresqlk8s-master.dc5db45d-f8b4-4fd0-ad33-ec4dd017f2d5.svc.cluster.local:5432/sqsdb?sslmode=disable"