feat(stalwart): switch config/data store from RocksDB to PostgreSQL (DEV-476)
Following the DEV-473 rocksdb-to-postgres migration, point Stalwart's bootstrap config at the PostgreSQL store and expose PGPASSWORD to the container so the `authSecret: EnvironmentVariable` lookup resolves. - stalwart-bootstrap-config.yaml: config.json switches @type RocksDb -> PostgreSql (host=stalwart-postgres, db=stalwart, authUsername=stalwart, authSecret=EnvironmentVariable/PGPASSWORD, useTls=false). - stalwart-fresh-deployment.yaml: adds PGPASSWORD env from secret/stalwart-postgres-credentials.POSTGRES_PASSWORD on the stalwart container. - stalwart-config.yaml: mirrors the switch in stalwart.toml as documentation (the running pod uses `--config /etc/stalwart/config.json`, not the toml). Board (DEV-476) explicitly asked for the manifest-level switch after the web UI save failed with a `Permission denied` on the read-only bootstrap emptyDir. Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
parent
c4551495e0
commit
8cd2829cd8
3 changed files with 24 additions and 5 deletions
|
|
@ -5,4 +5,7 @@ metadata:
|
|||
name: stalwart-bootstrap-config
|
||||
namespace: stalwart
|
||||
data:
|
||||
config.json: '{"@type":"RocksDb","path":"/var/lib/stalwart"}'
|
||||
# DEV-476: Bootstrap now points at the PostgreSQL config/data store.
|
||||
# PGPASSWORD is injected into the stalwart container from
|
||||
# secret/stalwart-postgres-credentials (see stalwart-fresh-deployment.yaml).
|
||||
config.json: '{"@type":"PostgreSql","host":"stalwart-postgres","port":5432,"database":"stalwart","authUsername":"stalwart","authSecret":{"@type":"EnvironmentVariable","variableName":"PGPASSWORD"},"useTls":false}'
|
||||
|
|
|
|||
|
|
@ -10,12 +10,22 @@ data:
|
|||
# Stalwart Mail Server Configuration
|
||||
#
|
||||
|
||||
# DEV-476: primary store is PostgreSQL (see stalwart-bootstrap-config.yaml).
|
||||
# Note: the container starts with `--config /etc/stalwart/config.json`, so
|
||||
# this stalwart.toml is not read at runtime for a live pod — the bootstrap
|
||||
# JSON is authoritative. Kept in sync here as documentation and for any
|
||||
# one-shot tooling that references the toml.
|
||||
[store]
|
||||
data = "rocksdb"
|
||||
data = "postgres"
|
||||
|
||||
[store.rocksdb]
|
||||
type = "rocksdb"
|
||||
path = "/var/lib/stalwart"
|
||||
[store.postgres]
|
||||
type = "postgresql"
|
||||
host = "stalwart-postgres"
|
||||
port = 5432
|
||||
database = "stalwart"
|
||||
user = "stalwart"
|
||||
password = "%{env:PGPASSWORD}%"
|
||||
tls.enable = false
|
||||
|
||||
#
|
||||
# Server Configuration
|
||||
|
|
|
|||
|
|
@ -145,6 +145,12 @@ spec:
|
|||
value: "/etc/stalwart/certs/tls.crt"
|
||||
- name: TLS_PRIVATE_KEY
|
||||
value: "/etc/stalwart/certs/tls.key"
|
||||
# DEV-476: bootstrap config.json resolves authSecret via this env var.
|
||||
- name: PGPASSWORD
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: stalwart-postgres-credentials
|
||||
key: POSTGRES_PASSWORD
|
||||
volumeMounts:
|
||||
- name: data
|
||||
mountPath: /var/lib/stalwart
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue