Files
Naeel 1e53766c46 feat(iot): Этапы 2-7 — MQTT auth, IoT API, EMQX, mqtt-bridge, E2E demo
Этап 2+4: internal/api/handler/iot_device_handler.go
  - MQTTAuth: POST /internal/mqtt/auth (без JWT, для EMQX)
  - CreateIoTDevice, ListIoTDevices, GetIoTDevice (c password), DeleteIoTDevice, UpdateIoTDevice
  - crypto/subtle.ConstantTimeCompare против timing attacks

Этап 4: internal/api/router.go
  - /v1/namespaces/{ns}/iot/devices CRUD
  - /internal/mqtt/auth (без JWT middleware)

Этап 3: deployments/k8s/emqx.yaml
  - EMQX 5.5.1, emqx.conf (HOCON) с HTTP auth backend
  - Сервис exposure: 1883 (MQTT), 8083 (WS), 18083 (Dashboard)

Этап 3: iot/cmd/mqtt-bridge/main.go
  - paho.mqtt.golang: подписка на +/telemetry/+
  - amqp091-go: publish в iot.{namespace}.telemetry
  - deployments/k8s/iot-mqtt-bridge.yaml

Этап 7: examples/IOT/ — E2E demo (main.tf, handler.py, README.md)

go.mod: добавлен github.com/eclipse/paho.mqtt.golang v1.5.1
go build ./... — ошибок нет
2026-04-04 09:45:23 +03:00
..

sless — примеры

⚠️ Тестовое окружение. Все примеры работают с тестовым API Nubes и тестовым кластером sless. Не используйте в продакшне без предварительного согласования.

sless — платформа для запуска serverless-функций на базе Kubernetes.
Разработчик загружает код, платформа собирает Docker-образ и разворачивает его в кластере.
Всё описывается декларативно через Terraform.


Ресурсы Terraform-провайдера

Ресурс Что делает
sless_job Разовый запуск: выполняет код один раз и завершается (установка ПО, миграции и т.д.)
sless_service HTTP-сервис: всегда запущен, отвечает на запросы, имеет постоянный URL — примеры появятся позднее

Конфигурация провайдера

provider "sless" {
  endpoint = "https://sless.kube5s.ru"
  token    = var.api_token
}

Токен задаётся в terraform.tfvars (файл в .gitignore, не попадает в git).


Примеры

VM/ — Виртуальная машина в Nubes vDC

Создаёт vApp + Ubuntu 22.04 VM в облаке Nubes. После создания — автоматически устанавливает ПО (nginx, Docker, пакеты) через serverless-джобы (sless_job) по SSH.

В этом примере используются только разовые джобы (sless_job). Примеры с HTTP-сервисами (sless_service) появятся позднее.

Начать здесь


Полезные команды

# Посмотреть состояние ресурсов:
terraform show

# Повторно запустить установку ПО: увеличить install_run_id в terraform.tfvars, затем:
terraform apply

# Удалить все ресурсы:
terraform destroy