Skip to content

配置总览与优先级 ​

一条规则记住全部:代码默认值 < TOML 文件 < 环境变量; 环境变量名 = 前缀__段__键(双下划线分层)。

优先级(从代码核实,非假设) ​

crates/platform-config/src/lib.rs::load 的合并序:

text
1. T::default()            # 代码内默认值(serde default 函数)
2. TOML 文件(可选)        # <PREFIX>_CONFIG 指向;文件不存在 = 该层缺失(不是错误)
3. 环境变量                 # PREFIX__SECTION__KEY 覆盖
合并语义:对象按键深合并;数组与标量整体替换

没有 CLI 参数层(服务只有 --bootstrap 子命令,不是配置项)。 all-in-one 之上再加一层装配覆写(apply_overrides),但显式设置的服务级 env 优先于派生值(见装载机制)。

各服务前缀 ​

服务前缀配置文件 env自动迁移 env
svc-gatewayGWGW_CONFIG—
svc-iamIAMIAM_CONFIGIAM_AUTO_MIGRATE=1
svc-metadataMETAMETA_CONFIGMETA_AUTO_MIGRATE=1
svc-orchestratorORCHORCH_CONFIGORCH_AUTO_MIGRATE=1
svc-meteringMETMET_CONFIGMET_AUTO_MIGRATE=1
svc-gisGISGIS_CONFIGGIS_AUTO_MIGRATE=1
svc-gis-tantivy-indexerGIS(共享)GIS_INDEXER_CONFIGGIS_AUTO_MIGRATE=1
svc-operatorOP无文件(env only)—
svc-all-in-oneAIOAIO_CONFIG内建(auto_migrate=true)

环境变量命名规则(精确) ​

  • 前缀大写 + __ 起始:IAM__DB__URL;
  • 每段去 _ 后转小写:IAM__JWT__SEED_FILE → jwt.seed_file;
  • 值解析:先按 JSON 解析,取 Number/Bool;其余(含字符串)原样。
bash
# 等价的两种写法
IAM__DB__URL='postgres://postgres:pg@127.0.0.1:54329/iam'
IAM_CONFIG=/etc/rustsvc/iam.toml     # 文件里 [db] url = "..."

两种部署形态的配置来源 ​

形态默认值TOMLenv
单机 all-in-onecrate 默认AIO_CONFIGAIO__*(再叠加各服务自身前缀 env)
K8scrate 默认ConfigMap 挂 /etc/rustsvc/<svc>.toml(<PREFIX>_CONFIG 指向)Secret 注入 <PREFIX>__DB__URL + <PREFIX>__MQ__*

K8s 层面完整接线见 Kubernetes 部署。

相关页面 ​

以仓库代码为事实源构建 · RC Hardening 阶段