# Изменено: 2026-04-04 (tls: добавлен TLS + cert-manager, wss://, https://) # WORKAROUND: MQTT over WebSocket через порт 443. # Причина: порт 1883 заблокирован NSX-T Edge firewall на уровне облака. # Решение: EMQX WebSocket listener (8083) проксируется через nginx-ingress с TLS termination. # # IoT устройство подключается: wss://iot.kube5s.ru/mqtt # IoT Консоль (UI): https://iot.kube5s.ru/console # # DNS A-запись: iot.kube5s.ru → 185.247.187.147 (создана через Nubes API, zoneUid=498096ee) # TLS: cert-manager + letsencrypt-prod, secret=iot-kube5s-ru-tls # # Когда 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 cert-manager.io/cluster-issuer: letsencrypt-prod # ssl-redirect=true: принудительно HTTPS для всего трафика на iot.kube5s.ru nginx.ingress.kubernetes.io/ssl-redirect: "true" # 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 tls: - hosts: - iot.kube5s.ru secretName: iot-kube5s-ru-tls 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: https://iot.kube5s.ru/console # TLS termination на Ingress → wss:// MQTT и https:// API работают без mixed content - path: /console pathType: Exact backend: service: name: sless-operator port: number: 9090