- 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: задокументировано решение
63 lines
2.1 KiB
YAML
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
|