Files
IoT/deployments/k8s/iot-sqs-consumer.yaml
T
Naeel 6caab6b729 feat: замена Kafka → shared-SQS в IoT pipeline
- mqtt-bridge: kafka.Writer → SQS SendMessage (AWS SDK Go v2)
- kafka-consumer → sqs-consumer: polling loop с ReceiveMessage/DeleteMessage
- admin stats: Kafka lag → SQS GetQueueAttributes
- Удалён kafka-consumer, добавлен sqs-consumer
- go.mod: убран segmentio/kafka-go, добавлен aws-sdk-go-v2
- Dockerfile, Makefile: kafka-consumer → sqs-consumer
- .gitignore: исправлен чтобы не игнорировать cmd/ директории
- deployments: новый iot-sqs-consumer.yaml, обновлён mqtt-bridge
- doc/decisions: задокументировано решение
2026-04-12 15:28:45 +03:00

63 lines
2.1 KiB
YAML

# Создано: 2026-04-12
# Deployment iot-sqs-consumer — читает IoT телеметрию из shared-SQS → пишет в IoT Postgres.
#
# Long polling (WaitTimeSeconds=20) — минимизирует пустые запросы.
# Сообщение удаляется из SQS только после успешной записи в Postgres (at-least-once).
#
# Credentials для SQS берутся из Secret iot-sqs-credentials.
# IOT_PG_DSN берётся из Secret iot-postgres-secret.
#
# Создание SQS Secret (один раз, если ещё не создан):
# kubectl create secret generic iot-sqs-credentials -n sless \
# --from-literal=SQS_ENDPOINT="https://qu.kube5s.ru" \
# --from-literal=SQS_ACCESS_KEY="<access_key>" \
# --from-literal=SQS_SECRET_KEY="<secret_key>"
#
# Применение: kubectl apply -f deployments/k8s/iot-sqs-consumer.yaml
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: iot-sqs-consumer
namespace: sless
labels:
app: iot-sqs-consumer
spec:
replicas: 1
selector:
matchLabels:
app: iot-sqs-consumer
template:
metadata:
labels:
app: iot-sqs-consumer
spec:
containers:
- name: sqs-consumer
# Тот же образ что и оператор — все IoT бинари в одном образе.
image: pearlharbor.registryk8s.services.ngcloud.ru/naeel/sless-operator:v0.1.69
imagePullPolicy: Always
command: ["/sqs-consumer"]
env:
- name: SQS_QUEUE_NAME
value: "iot-telemetry"
- name: SQS_REGION
value: "us-east-1"
envFrom:
# SQS_ENDPOINT, SQS_ACCESS_KEY, SQS_SECRET_KEY
- secretRef:
name: iot-sqs-credentials
# IOT_PG_DSN — master DSN для IoT Postgres (per-tenant DB)
- secretRef:
name: iot-postgres-secret
resources:
requests:
memory: "32Mi"
cpu: "25m"
limits:
memory: "64Mi"
cpu: "100m"
imagePullSecrets:
- name: sless-registry-auth