拆自 #50(总纲 WP3 · D7 主密钥注入 + 持久层接线)。父:#50。落 D7:主密钥部署期注入、绝不入库。
背景
data-foundation 子仓 M2 引入了 JPA 持久层(独立 PG database df)+ AES-GCM 凭据加密(PR #14)。但 deploy/charts/data-foundation/ 仍是 M1 形态——values.yaml 明确注「M1 app 无持久 datasource → 不注入 PG env」,且无 DS_SECRET_KEY。chart 需补两块接线,否则部署起不来(CryptoService 缺密钥即 fail-fast)。
要达成
红线(D7)
主密钥仅经 K8s Secret 注入、git 无明文;明文口令绝不落库/日志(应用侧已守,chart 侧不得回灌明文)。values 用占位(如 changeme-dev-only 注释提示 prod 必换)。
验收
单 ns helm install 后 data-foundation Pod 起、readiness 绿;Flyway 建表成功(df 库 data_source 表);DS_SECRET_KEY 来自集群 Secret;git grep 无明文主密钥。
对接
背景
data-foundation 子仓 M2 引入了 JPA 持久层(独立 PG database
df)+ AES-GCM 凭据加密(PR #14)。但deploy/charts/data-foundation/仍是 M1 形态——values.yaml明确注「M1 app 无持久 datasource → 不注入 PG env」,且无DS_SECRET_KEY。chart 需补两块接线,否则部署起不来(CryptoService缺密钥即 fail-fast)。要达成
infra-devpostgres init 增建df(独立 db,对齐各服务独立 database 基线)templates/deployment.yaml+values.yaml):DATA_FOUNDATION_DB_URL(指向 infra-dev PG 的df库)、DATA_FOUNDATION_DB_USER/PASSWORD(dev 占位 / prod 经 values 覆盖)templates/secret.yaml(或复用平台 Secret 约定)渲染DS_SECRET_KEY,deployment 经valueFrom.secretKeyRef注入;values 仅占位、明文绝不入库(红线);Base64 32 字节(AES-256)values.yaml头部注释(删除「不注入 PG env」的过时说明)secret_ref间接层已预留)红线(D7)
主密钥仅经 K8s Secret 注入、git 无明文;明文口令绝不落库/日志(应用侧已守,chart 侧不得回灌明文)。values 用占位(如
changeme-dev-only注释提示 prod 必换)。验收
单 ns
helm install后 data-foundation Pod 起、readiness 绿;Flyway 建表成功(df库data_source表);DS_SECRET_KEY来自集群 Secret;git grep无明文主密钥。对接