0d89a69c18
- stalwart namespace with Deployment + HPA (2-6 replicas) - CNPG PostgreSQL cluster (3 instances, 20Gi cephrbd-fast-delete) with PgBouncer pooler - S3/Ceph-RGW for blob storage (stalwart-maildata bucket, lz4 compressed) - Secrets from Vault: postgres-credentials, s3-credentials, stalwart-admin - TLS cert via cert-manager (vault-issuer) for mail.main.unkin.net - SMTP relay on port 25 (internal ClusterIP, trusted pod CIDRs) - Submission on port 587, IMAP 143/993, HTTPS 443 via LoadBalancer - HTTP port 8080 for Traefik reverse proxy (web admin at mail.k8s.syd1.au.unkin.net) - Outbound mail routed through postfix.mailgateway.svc.cluster.local:25 - Spam filtering offloaded to postfix/rspamd (disabled internally)
34 lines
739 B
YAML
34 lines
739 B
YAML
---
|
|
apiVersion: postgresql.cnpg.io/v1
|
|
kind: Pooler
|
|
metadata:
|
|
name: stalwart-postgres-pooler
|
|
namespace: stalwart
|
|
spec:
|
|
cluster:
|
|
name: stalwart-postgres
|
|
instances: 2
|
|
pgbouncer:
|
|
parameters:
|
|
default_pool_size: "50"
|
|
max_client_conn: "200"
|
|
paused: false
|
|
poolMode: session
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: pooler
|
|
spec:
|
|
affinity:
|
|
podAntiAffinity:
|
|
requiredDuringSchedulingIgnoredDuringExecution:
|
|
- labelSelector:
|
|
matchExpressions:
|
|
- key: app
|
|
operator: In
|
|
values:
|
|
- pooler
|
|
topologyKey: kubernetes.io/hostname
|
|
containers: []
|
|
type: rw
|