# Создано: 2026-04-04 # Изменено: 2026-04-06 (MQTT→Kafka: убран RABBITMQ_URL, добавлен KAFKA_BROKERS, v0.1.67) # Deployment iot-mqtt-bridge — MQTT→Kafka мост для IoT. # # Получает MQTT сообщения от EMQX (подписка на "+/telemetry/+") # и публикует в Kafka топик "iot.telemetry" (ключ = namespace). # # Credentials для MQTT подключения берутся из Secret iot-bridge-credentials. # Этот Secret нужно создать вручную ДО деплоя: # # # 1. Создать IoTDevice для bridge через API: # curl -X POST .../v1/namespaces/sless-bridge/iot/devices \ # -d '{"name":"bridge","device_id":"bridge","enabled":true}' # # # 2. Получить credentials: # MQTT_USERNAME=$(kubectl get secret iot-bridge -n sless-bridge -o jsonpath='{.data.mqtt-username}' | base64 -d) # MQTT_PASSWORD=$(kubectl get secret iot-bridge -n sless-bridge -o jsonpath='{.data.mqtt-password}' | base64 -d) # # # 3. Создать Secret для bridge Deployment (один раз): # kubectl create secret generic iot-bridge-credentials -n sless \ # --from-literal=MQTT_USERNAME="$MQTT_USERNAME" \ # --from-literal=MQTT_PASSWORD="$MQTT_PASSWORD" # # Применение: kubectl apply -f deployments/k8s/iot-mqtt-bridge.yaml --- apiVersion: apps/v1 kind: Deployment metadata: name: iot-mqtt-bridge namespace: sless labels: app: iot-mqtt-bridge spec: replicas: 1 selector: matchLabels: app: iot-mqtt-bridge template: metadata: labels: app: iot-mqtt-bridge spec: containers: - name: mqtt-bridge # Тот же образ что и оператор — оба бинаря в одном слое (manager + iot-mqtt-bridge). # При смене версии оператора — менять тег и здесь. image: pearlharbor.registryk8s.services.ngcloud.ru/naeel/sless-operator:v0.1.69 imagePullPolicy: Always command: ["/iot-mqtt-bridge"] env: - name: MQTT_BROKER_URL value: "tcp://emqx.sless.svc:1883" - name: KAFKA_BROKERS value: "kafka.sless.svc.cluster.local:9092" envFrom: - secretRef: name: iot-bridge-credentials # IOT_PG_DSN — сохранение телеметрии в Postgres (опционально) - secretRef: name: iot-postgres-secret optional: true resources: requests: memory: "32Mi" cpu: "25m" limits: memory: "64Mi" cpu: "100m" imagePullSecrets: - name: sless-registry-auth