feat(iot): деплой IoT MVP — Dockerfile, RBAC, EMQX fix, operator v0.1.50, mqtt-bridge, doc/iot

This commit is contained in:
Naeel
2026-04-04 10:29:47 +03:00
parent b920dc5c9d
commit 857d057af9
9 changed files with 471 additions and 26 deletions
+10 -1
View File
@@ -1,4 +1,4 @@
# Изменено: 2026-03-07
# Изменено: 2026-04-04 — добавлена IoT поддержка: COPY iot/ + сборка iot-mqtt-bridge бинаря
# Multi-stage build для sless оператора.
# Stage 1: сборка бинаря (golang:1.23-alpine)
# Stage 2: минимальный образ (alpine:3.19, не distroless — нужен ca-certificates для S3/HTTPS)
@@ -17,14 +17,23 @@ COPY api/ api/
COPY controllers/ controllers/
COPY internal/ internal/
COPY migrations/ migrations/
# iot/ — IoT CRD types, controller, mqtt-bridge cmd.
# Обязательно: main.go импортирует iot/api/v1alpha1 и iot/controllers — без этого go build упадёт.
COPY iot/ iot/
RUN CGO_ENABLED=0 GOOS=${TARGETOS:-linux} GOARCH=${TARGETARCH} go build -a -o manager main.go
# iot-mqtt-bridge — отдельный бинарь в том же образе.
# Запускается в iot-mqtt-bridge Deployment через command: ["/iot-mqtt-bridge"].
# Один образ, два entrypoint — практично для MVP: один CI pipeline, один registry repo.
RUN CGO_ENABLED=0 GOOS=${TARGETOS:-linux} GOARCH=${TARGETARCH} go build -a -o iot-mqtt-bridge ./iot/cmd/mqtt-bridge/
FROM alpine:3.19
# ca-certificates нужны для TLS (S3 HTTPS, DockerHub)
RUN apk add --no-cache ca-certificates
WORKDIR /
COPY --from=builder /workspace/manager .
# iot-mqtt-bridge — второй бинарь, запускается отдельным Deployment-ом.
COPY --from=builder /workspace/iot-mqtt-bridge .
# migrations нужны при старте — оператор читает SQL файлы для инициализации БД
COPY migrations/ migrations/
# Запускаем от непривилегированного пользователя