# Изменено: 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