82b86072ee
Stalwart is the mailbox server for the mail migration and runs multi-node from the start, so it needs a coordinator and a shared in-memory store. - run Stalwart as a 3-replica StatefulSet with a headless Service, topology spread and a PDB - add the `mail-valkey` ValkeyCluster as in-memory store and coordinator - keep data in CNPG Postgres and blobs in cephrgw S3 - converge settings from plan.ndjson in a PostSync Job, then roll the StatefulSet - add a global `spam-to-junk` Sieve script filing rspamd-tagged mail into Junk and stopping - exempt LMTP from the inbound throttles, as all inbound mail comes from the smarthost - label pods as smarthost clients and move the client LoadBalancer to 198.18.200.18 Reviewed-on: #539 Co-authored-by: unkin-agent <unkin-agent@unkin.net> Co-committed-by: unkin-agent <unkin-agent@unkin.net>
30 lines
662 B
YAML
30 lines
662 B
YAML
---
|
|
# Stalwart's in-memory store (locks, rate limits, queue leases) and cluster
|
|
# coordinator pub/sub. Ephemeral state, so no persistence; the operator runs it
|
|
# cluster-mode, passwordless and without TLS behind valkey-mail-valkey.
|
|
apiVersion: valkey.io/v1alpha1
|
|
kind: ValkeyCluster
|
|
metadata:
|
|
name: mail-valkey
|
|
namespace: mail
|
|
spec:
|
|
shards: 1
|
|
replicas: 2
|
|
image: docker.io/valkey/valkey:9.0.0
|
|
exporter:
|
|
enabled: false
|
|
scheduling:
|
|
node:
|
|
spread:
|
|
shard:
|
|
mode: Required
|
|
podDisruptionBudget:
|
|
mode: Cluster
|
|
resources:
|
|
requests:
|
|
cpu: 50m
|
|
memory: 128Mi
|
|
limits:
|
|
cpu: 500m
|
|
memory: 512Mi
|