From af6fc84a18f39ab10a7b24f8076ebe3a57f35d26 Mon Sep 17 00:00:00 2001 From: rock Date: Sat, 5 Sep 2026 01:05:01 -0700 Subject: [PATCH] feat: add memory service queues (processing, indexing, dlq) - processing-queue: high-throughput, auto-scaling (1-4 shards) - indexing-queue: FIFO with deduplication (1-2 shards) - memory-dlq: dead letter queue for redelivery failures - ArgoCD Application (wave 7) to auto-sync queue lifecycle --- k8s/apps/messaging/memory-queues/dlq.yaml | 13 ++++++++++++ .../memory-queues/indexing-queue.yaml | 14 +++++++++++++ .../memory-queues/kustomization.yaml | 9 +++++++++ .../memory-queues/processing-queue.yaml | 15 ++++++++++++++ k8s/argocd/apps/50-memory-queues.yaml | 20 +++++++++++++++++++ 5 files changed, 71 insertions(+) create mode 100644 k8s/apps/messaging/memory-queues/dlq.yaml create mode 100644 k8s/apps/messaging/memory-queues/indexing-queue.yaml create mode 100644 k8s/apps/messaging/memory-queues/kustomization.yaml create mode 100644 k8s/apps/messaging/memory-queues/processing-queue.yaml create mode 100644 k8s/argocd/apps/50-memory-queues.yaml diff --git a/k8s/apps/messaging/memory-queues/dlq.yaml b/k8s/apps/messaging/memory-queues/dlq.yaml new file mode 100644 index 0000000..e0175d6 --- /dev/null +++ b/k8s/apps/messaging/memory-queues/dlq.yaml @@ -0,0 +1,13 @@ +apiVersion: kmsvc.io/v1 +kind: Queue +metadata: + name: memory-dlq + namespace: sqs +spec: + isDLQ: true + visibilityTimeoutSeconds: 300 + messageRetentionPeriodSeconds: 1209600 # 14 days + maxReceiveCount: 1 # DLQ itself shouldn't retry + partitionsPerShard: 1 + minShards: 1 + maxShards: 1 diff --git a/k8s/apps/messaging/memory-queues/indexing-queue.yaml b/k8s/apps/messaging/memory-queues/indexing-queue.yaml new file mode 100644 index 0000000..a4c03f7 --- /dev/null +++ b/k8s/apps/messaging/memory-queues/indexing-queue.yaml @@ -0,0 +1,14 @@ +apiVersion: kmsvc.io/v1 +kind: Queue +metadata: + name: memory-indexing + namespace: sqs +spec: + fifoQueue: true + visibilityTimeoutSeconds: 60 + messageRetentionPeriodSeconds: 2592000 # 30 days + maxReceiveCount: 5 + partitionsPerShard: 1 + minShards: 1 + maxShards: 2 + delaySeconds: 0 diff --git a/k8s/apps/messaging/memory-queues/kustomization.yaml b/k8s/apps/messaging/memory-queues/kustomization.yaml new file mode 100644 index 0000000..c543731 --- /dev/null +++ b/k8s/apps/messaging/memory-queues/kustomization.yaml @@ -0,0 +1,9 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +namespace: sqs + +resources: + - processing-queue.yaml + - indexing-queue.yaml + - dlq.yaml diff --git a/k8s/apps/messaging/memory-queues/processing-queue.yaml b/k8s/apps/messaging/memory-queues/processing-queue.yaml new file mode 100644 index 0000000..34c486f --- /dev/null +++ b/k8s/apps/messaging/memory-queues/processing-queue.yaml @@ -0,0 +1,15 @@ +apiVersion: kmsvc.io/v1 +kind: Queue +metadata: + name: memory-processing + namespace: sqs +spec: + fifoQueue: false + visibilityTimeoutSeconds: 120 + messageRetentionPeriodSeconds: 604800 # 7 days + maxReceiveCount: 3 + deadLetterTargetQueue: memory-dlq + partitionsPerShard: 3 + minShards: 1 + maxShards: 4 + shardSplitThresholdBytesPerSec: 5242880 diff --git a/k8s/argocd/apps/50-memory-queues.yaml b/k8s/argocd/apps/50-memory-queues.yaml new file mode 100644 index 0000000..2aaec84 --- /dev/null +++ b/k8s/argocd/apps/50-memory-queues.yaml @@ -0,0 +1,20 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: memory-queues + namespace: argocd + annotations: + argocd.argoproj.io/sync-wave: "7" +spec: + project: homelab + source: + repoURL: https://forgejo.riotpiao.com/rock/homelab.git + targetRevision: main + path: k8s/apps/messaging/memory-queues + destination: + server: https://kubernetes.default.svc + namespace: sqs + syncPolicy: + automated: + prune: true + selfHeal: true