feat(iot): MQTT over WebSocket workaround via nginx-ingress
Port 1883 blocked by NSX-T Edge firewall (DevOps to open on Monday). Temporary solution: EMQX WebSocket listener (8083) via nginx-ingress. - Service emqx-ws: selector app=emqx, port 8083 - Ingress emqx-mqtt-websocket: iot.kube5s.ru/mqtt → emqx-ws:8083 - pathType: Exact (prevents trailing slash redirect breaking WS handshake) - ssl-redirect: false (IoT devices cannot follow HTTP 301 redirects) - DNS A record iot.kube5s.ru → 185.247.187.147 created by user Tested: Connected rc=0 via paho-mqtt WebSocket from inside cluster.
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
# Создано: 2026-04-04
|
||||
# ВРЕМЕННЫЙ WORKAROUND: MQTT over WebSocket через порт 443.
|
||||
# Причина: порт 1883 заблокирован NSX-T Edge firewall на уровне облака.
|
||||
# Решение: EMQX WebSocket listener (8083) проксируется через nginx-ingress.
|
||||
#
|
||||
# IoT устройство подключается: ws://iot.kube5s.ru/mqtt
|
||||
# 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:
|
||||
- path: /mqtt
|
||||
pathType: Exact
|
||||
backend:
|
||||
service:
|
||||
name: emqx-ws
|
||||
port:
|
||||
number: 8083
|
||||
Reference in New Issue
Block a user