- Добавлен HTML SPA: internal/api/ui/iot-console.html Ванильный JS + mqtt.js (CDN), без фреймворков. Страницы: вход, список устройств, credentials, эмулятор MQTT, заглушка телеметрии. - Добавлен go:embed: internal/api/console_embed.go, GET /console - Добавлен CORS middleware в router.go для http://iot.kube5s.ru - Ingress emqx-ws-ingress.yaml: /console → sless-operator:9090 - Версия образа v0.1.53, задеплоен Доступно: http://iot.kube5s.ru/console
65 lines
2.5 KiB
YAML
65 lines
2.5 KiB
YAML
# Изменено: 2026-04-04 (iot-console: добавлен path /console → sless-operator:9090)
|
|
# ВРЕМЕННЫЙ WORKAROUND: MQTT over WebSocket через порт 443.
|
|
# Причина: порт 1883 заблокирован NSX-T Edge firewall на уровне облака.
|
|
# Решение: EMQX WebSocket listener (8083) проксируется через nginx-ingress.
|
|
#
|
|
# IoT устройство подключается: ws://iot.kube5s.ru/mqtt
|
|
# IoT Консоль (UI): http://iot.kube5s.ru/console
|
|
#
|
|
# DNS A-запись: iot.kube5s.ru → 185.247.187.147 (создана через Nubes API, zoneUid=498096ee)
|
|
#
|
|
# Когда DevOps откроет порт 1883 — этот файл можно удалить.
|
|
---
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
name: emqx-ws
|
|
namespace: sless
|
|
# Отдельный Service чтобы не путать — WebSocket порт для Ingress
|
|
spec:
|
|
selector:
|
|
app: emqx
|
|
ports:
|
|
- name: mqtt-ws
|
|
port: 8083
|
|
targetPort: 8083
|
|
protocol: TCP
|
|
---
|
|
apiVersion: networking.k8s.io/v1
|
|
kind: Ingress
|
|
metadata:
|
|
name: emqx-mqtt-websocket
|
|
namespace: sless
|
|
annotations:
|
|
kubernetes.io/ingress.class: nginx
|
|
# ssl-redirect=false: IoT устройства не умеют следовать 301 редиректам при WebSocket upgrade
|
|
nginx.ingress.kubernetes.io/ssl-redirect: "false"
|
|
# WebSocket: nginx-ingress автоматически добавляет Upgrade/Connection при proxy-http-version=1.1
|
|
nginx.ingress.kubernetes.io/proxy-http-version: "1.1"
|
|
nginx.ingress.kubernetes.io/proxy-read-timeout: "3600"
|
|
nginx.ingress.kubernetes.io/proxy-send-timeout: "3600"
|
|
spec:
|
|
ingressClassName: nginx
|
|
rules:
|
|
- host: iot.kube5s.ru
|
|
http:
|
|
paths:
|
|
# MQTT over WebSocket — для подключения IoT устройств и браузерного эмулятора
|
|
- path: /mqtt
|
|
pathType: Exact
|
|
backend:
|
|
service:
|
|
name: emqx-ws
|
|
port:
|
|
number: 8083
|
|
# IoT Консоль (UI) — HTML SPA встроенный в бинарник sless-operator
|
|
# URL: http://iot.kube5s.ru/console
|
|
# Почему здесь: UI работает по HTTP чтобы ws:// (без TLS) не вызывал mixed content
|
|
- path: /console
|
|
pathType: Exact
|
|
backend:
|
|
service:
|
|
name: sless-operator
|
|
port:
|
|
number: 9090
|