2884 Commits
Author SHA1 Message Date
BrunoGao 1ae6eb6416 feat(health): stage Contabo production migration (#360)
Adds a manual-only Contabo canary path, Traefik overlays, fail-closed migration gates, and contract tests.

Refs lingjingwanxiang/ljwx-health#390
Refs lingjingwanxiang/ljwx-health#395
2026-08-02 17:20:07 +08:00
BrunoGao 6833e1253a feat(ops): prefer cross-zone health replicas (#359)
Add zone-first and hostname-fallback soft scheduling preferences plus a deploy-gate contract test.

Refs https://github.com/lingjingwanxiang/ljwx-health/issues/390
Refs https://github.com/lingjingwanxiang/ljwx-health/issues/395
2026-08-02 09:17:13 +08:00
BrunoGao 94806b6876 Remove temporary LJWX Health legacy cleanup resources (#358)
Remove the successful one-shot cleanup hook and its ordinary least-privilege RBAC so Argo prunes the last temporary resources while preserving the audit evidence.
2026-08-01 05:15:05 +08:00
BrunoGao 96db8706b5 Delete retired LJWX Health hook orphans through GitOps (#357)
Run an exact-name, least-privilege PostSync deletion for the hook objects that Argo does not ordinary-prune. Keep temporary cleanup RBAC tracked for a final GitOps prune after observed deletion.
2026-08-01 05:05:03 +08:00
BrunoGao 188cd35e41 Adopt retired LJWX Health hooks for GitOps pruning (#356)
Temporarily adopt the exact retired hook object names as empty, permissionless ordinary resources so Argo CD can track and prune them through a follow-up GitOps revision.
2026-08-01 04:59:15 +08:00
BrunoGao 2b2cd69428 Retire legacy LJWX Health PostgreSQL schema paths (#355)
Retire the duplicate PostgreSQL SQL ConfigMap/init/repair path after verified production adoption, qualified restore, and the repaired N/N-1/N compatibility window. Preserve ClickHouse SQL, immutable audit history, backups, and signed digest-only schema delivery.
2026-08-01 04:49:03 +08:00
ljwx-release-bot 6cee4f8d41 chore(ljwx-health): promote ee2e655bd137 sha256:4cb7ffe007a4 2026-07-31 20:37:31 +00:00
ljwx-release-bot 08936fd1d7 chore(ljwx-health): promote ddddd7c6f37b sha256:09a84ab83ab0 2026-07-31 20:28:46 +00:00
ljwx-release-bot 1c86d14a90 chore(ljwx-health): promote ee2e655bd137 sha256:4cb7ffe007a4 2026-07-31 20:16:42 +00:00
BrunoGao 0f7f812907 ops(health): deactivate completed restore drill (#354) 2026-08-01 03:40:53 +08:00
ljwx-release-bot cad2b157a8 chore(ljwx-health): promote ddddd7c6f37b sha256:09a84ab83ab0 2026-07-31 19:38:00 +00:00
ljwx-release-bot 989ef61e8e chore(ljwx-health): promote cfe3a8f9c773 sha256:f53e6e3f0c8e 2026-07-31 19:25:31 +00:00
BrunoGao 7345fa7342 ops(health): restore latest qualified backup (#353) 2026-08-01 03:10:11 +08:00
BrunoGao 45256de506 fix(restore): authorize signed pre-adoption plan (#352) 2026-08-01 02:53:14 +08:00
BrunoGao 9f4c1fda01 fix(restore): allow exact k3s API endpoint (#351) 2026-08-01 02:35:42 +08:00
BrunoGao 8a7e6469d0 fix(restore): prepare volume modes before ownership (#350) 2026-08-01 02:23:29 +08:00
BrunoGao 6b220a414e ops(health): run pre-adoption schema restore drill (#349) 2026-08-01 02:15:21 +08:00
BrunoGao 16d1c987cd ops(postgres): schedule post-adoption differential backup (#347) 2026-08-01 02:08:51 +08:00
BrunoGao 5772d2f3d0 feat(restore): add application-level schema restore drill (#348)
* ops(health): smoke immutable app after schema restore

* ci: silence trap-only shellcheck paths
2026-08-01 02:07:42 +08:00
ljwx-release-bot 067a6baf56 chore(ljwx-health): promote ddddd7c6f37b sha256:09a84ab83ab0 2026-07-31 17:52:24 +00:00
ljwx-release-bot bedb1058f9 chore(ljwx-health): promote cfe3a8f9c773 sha256:f53e6e3f0c8e 2026-07-31 16:23:23 +00:00
ljwx-release-bot 068ef334f5 chore(ljwx-health): promote 5797ba6d4463 sha256:3aeddea39f43 2026-07-31 15:28:09 +00:00
ljwx-release-bot 08ed4e22c6 chore(ljwx-health): promote 7566915f3417 sha256:9ef7bfe70e8b 2026-07-31 14:40:21 +00:00
ljwx-release-bot 75f392df7a chore(ljwx-health): promote d234e1c247e3 sha256:2a0284a923f2 2026-07-31 13:38:25 +00:00
ljwx-release-bot 75c0c4bad3 chore(ljwx-health): promote 3e1c56e79981 sha256:ae6b78fe2358 2026-07-31 12:27:20 +00:00
BrunoGao b236ed97ce chore(ljwx-health): activate restore drill read boundary (#346) 2026-07-31 20:02:18 +08:00
BrunoGao 7de60242c5 feat(ljwx-health): project adopted schema release facts (#345) 2026-07-31 19:48:23 +08:00
BrunoGao 8dd9827602 fix(ljwx-health): resume completed schema upgrade retries (#344)
Verify the complete signed schema before retrying adoption-plan upgrades and report exact fingerprint mismatches.
2026-07-31 18:43:21 +08:00
BrunoGao fc9dbaa9d1 fix(cluster): preserve registry-specific pull credentials (#343)
Sync Harbor and GHCR Docker credentials from distinct source Secrets, avoid client-side secret annotations, and preserve Harbor-only default ServiceAccount binding.
2026-07-31 18:33:34 +08:00
BrunoGao f35f8a4c00 fix(ljwx-health): stage signed schema release before adoption (#342)
Create the immutable signed schema Release ConfigMap at PreSync wave -3 and preserve the ordering in future promotions.
2026-07-31 11:29:41 +08:00
BrunoGao d02154f0d0 fix(ljwx-health): order schema bootstrap before PreSync job (#341)
Create bootstrap ServiceAccount and RBAC as wave -3 PreSync hooks before the wave -2 schema adoption Job.
2026-07-31 11:23:31 +08:00
ljwx-release-bot 65fac99336 chore(ljwx-health): promote 88dd0689d34a sha256:a07878a50086 2026-07-31 03:19:07 +00:00
BrunoGao 9d331f95c2 feat(ljwx-health): add isolated schema restore drill foundation (#340)
* feat(ljwx-health): add isolated schema restore drill foundation

* fix(ljwx-health): verify Cosign v3 custom bindings

* test(ljwx-health): cover production binding envelope

* fix(ljwx-health): isolate restore drill API token

* fix(ljwx-health): split restore drill cross-namespace RBAC

* fix(ljwx-health): annotate trap-only cleanup
2026-07-31 10:21:56 +08:00
BrunoGao b0a034b238 fix(schema): bootstrap migrator with signed runner image (#339)
Refs #335 and lingjingwanxiang/ljwx-health#713.

Use only the signed schema-runner image and resource-scoped Kubernetes API access for the one-time migrator credential bootstrap.
2026-07-31 09:04:38 +08:00
BrunoGao 1aa41d4c34 fix(postgres): make backup verification shell-free (#338)
Refs #335 and lingjingwanxiang/ljwx-health#713.

Replace the failed report pod with shell-free verification and preserve the successful pgBackRest recovery chain.
2026-07-31 08:52:07 +08:00
BrunoGao 3ad88f6093 ops(postgres): add Phase 5 pre-adoption backup gate (#337)
Refs #335 and lingjingwanxiang/ljwx-health#713.

Run and report the required GitOps-owned pgBackRest backup before schema adoption. The later cleanup PR removes this one-time Job after evidence is archived.
2026-07-31 08:45:03 +08:00
BrunoGao 7f8f3bc42a feat(ljwx-health): consume signed schema bundles via GitOps (#336)
Closes #335 foundation slice
Refs lingjingwanxiang/ljwx-health#713

The schema package remains dormant until a validated v2 Release receipt activates it.
2026-07-31 08:20:20 +08:00
BrunoGao c8b3d519ed docs(db): classify LJWX Health schema bundle drift (#334)
Documents canonical-source drift classification for LJWX Health phase #709.

Refs lingjingwanxiang/ljwx-health#709.
2026-07-30 21:58:43 +08:00
ljwx-release-bot 0a1e82057c chore(ljwx-health): promote d909ba7fc8a1 sha256:016ae017e2cd 2026-07-30 12:59:50 +00:00
BrunoGao 4f9185ff41 feat: enforce ljwx-health digest-only promotion (#332)
Refs #332
2026-07-30 20:21:36 +08:00
v3-lite-bot 1a4ef9a2a0 chore(ljwx-health): deploy lingjingwanxiang/ljwx-health@fa70c01 -> sha256:6e095b75ea62 2026-07-30 08:01:19 +00:00
v3-lite-bot 3fbe0b1e5f chore(ljwx-health): deploy lingjingwanxiang/ljwx-health@27fcb11 -> sha256:83b5947d6405 2026-07-30 07:00:33 +00:00
v3-lite-bot 7c9d0f2b84 chore(ljwx-health): deploy lingjingwanxiang/ljwx-health@faf6e6f -> sha256:d496b3284df9 2026-07-30 06:02:12 +00:00
v3-lite-bot e689ca78b0 chore(ljwx-health): deploy lingjingwanxiang/ljwx-health@5048b61 -> sha256:d9571ecf6c45 2026-07-30 05:09:52 +00:00
v3-lite-bot fb2cd322ad chore(ljwx-health): deploy lingjingwanxiang/ljwx-health@75a9397 -> sha256:bf50c9e95d4c 2026-07-30 04:20:56 +00:00
v3-lite-bot ba889e2764 chore(ljwx-health): deploy lingjingwanxiang/ljwx-health@c1127e7 -> sha256:a06a79d556c9 2026-07-30 03:33:06 +00:00
v3-lite-bot 4ac6141c62 chore(ljwx-health): deploy lingjingwanxiang/ljwx-health@66a8663 -> sha256:f89fe8e3ebe3 2026-07-30 02:42:37 +00:00
v3-lite-bot ed803105c0 chore(ljwx-health): deploy lingjingwanxiang/ljwx-health@26b2bdd -> sha256:17f51913a188 2026-07-30 01:48:16 +00:00
v3-lite-bot 04f4aca415 chore(ljwx-health): deploy lingjingwanxiang/ljwx-health@f1480a9 -> sha256:0c46d4fcd04e 2026-07-30 00:50:31 +00:00
v3-lite-bot 2207d9bb5e chore(ljwx-health): deploy lingjingwanxiang/ljwx-health@634b0f4 -> sha256:050134f9fc33 2026-07-29 23:55:46 +00:00