fix(kubernetes): support localized template schema
Update migration, runtime grants, sandbox seed, and live upgrade guidance for the normalized email template schema. Ref: IT-1601
This commit is contained in:
@@ -167,7 +167,8 @@ existing Dockerfile. Record the checked commit and archive SHA256, including any
|
||||
explicitly recorded uncommitted delta. Mirror PostgreSQL, RabbitMQ, Mailpit and a
|
||||
Python 3 Linux image to `registry.hrynco.com`. Copy `artifacts.example.json` to
|
||||
`artifacts.local.json` and record all seven immutable image digests, source hashes
|
||||
and the two reviewed migration IDs. The script rejects placeholder/tag references,
|
||||
and the three reviewed migration IDs, ending with `20261017072410_EmailTemplateLocalizations`.
|
||||
The script rejects placeholder/tag references,
|
||||
other registries, mismatched application/migrator archives and unsupported DB/broker
|
||||
major versions. The archive hash fields are an operator provenance record; independently
|
||||
verify the build inputs and registry digests before live application.
|
||||
@@ -255,13 +256,15 @@ python3 notification.py render --config config.local.json --artifacts artifacts.
|
||||
python3 notification.py check --config config.local.json --artifacts artifacts.local.json
|
||||
```
|
||||
|
||||
5. First install applies storage/isolated foundation and runs migrations with Web and
|
||||
Worker stopped. The migration target is exactly `InitialCreate` + `PendingChanges`.
|
||||
5. First install or a schema upgrade applies storage/isolated foundation and runs
|
||||
migrations with Web and Worker stopped. The migration target is exactly
|
||||
`InitialCreate` + `PendingChanges` + `EmailTemplateLocalizations`.
|
||||
After migration success, the script verifies history, grants a separate
|
||||
`notification_runtime` role only DML on the three application tables, and idempotently
|
||||
seeds the Mailpit channel and neutral English `TestEmail`. Existing matching-service
|
||||
channels/templates are left unchanged. It resumes Web after these gates; Worker
|
||||
remains stopped for inspection:
|
||||
`notification_runtime` role only DML on the application tables, including the
|
||||
service/language/definition catalog, and idempotently seeds the Mailpit channel,
|
||||
sandbox service/catalog and neutral English `TestEmail`. Existing matching-service
|
||||
channels/templates and shared variable contracts are left unchanged. It resumes
|
||||
Web after these gates; Worker remains stopped for inspection:
|
||||
|
||||
```sh
|
||||
python3 notification.py deploy --config config.local.json --artifacts artifacts.local.json --migrate
|
||||
@@ -320,6 +323,18 @@ a snapshot of RabbitMQ's queue files. Migration does not upgrade/recreate the br
|
||||
volume; durable queues remain on that retained volume. Broker disk backup/recovery
|
||||
must be verified before a broker upgrade or storage migration.
|
||||
|
||||
Before upgrading a live flat database to `EmailTemplateLocalizations`, inspect the
|
||||
exact source columns/indexes/history and audit every template's identities and JSON
|
||||
variable shape. Versions of one service/key must have the same variable contract
|
||||
after sorting by variable name. Rehearse the current Migrator and sandbox/grants SQL
|
||||
on a disposable restored PostgreSQL 17 copy, then verify preserved content and a
|
||||
repeat no-op migration. The live `deploy --migrate` creates its own final backup after
|
||||
stopping Web and Worker. Do not use the old Web/Worker images with the new schema.
|
||||
Rollback requires restoring a verified pre-upgrade database backup with the matching
|
||||
old application images; migration `Down` is not a general rollback path. The
|
||||
production network add-on and production broker access remain separate, preserved
|
||||
resources; verify them and the existing production queues before re-enabling Worker.
|
||||
|
||||
## Access and networking
|
||||
|
||||
Use SSH to the deployment host, then forward one local port when needed:
|
||||
|
||||
Reference in New Issue
Block a user