配置中心
配置分组、文件编辑、全量/多灰度发布、四态发布记录、停灰度与订阅查询的操作说明。
对应菜单:配置管理 → 配置分组。配置中心把编辑态和发布态分开;客户端通过长轮询/SSE 消费的是发布结果。
关键能力:同一配置文件可同时存在多条 active 灰度版本,彼此独立生效;全量发布不会自动结束这些灰度。



配置分组
路径:/configuration/group。
- 用命名空间、发布状态(「待发布」/「无待发布」)和名称搜索定位分组。
- 「新建配置分组」:命名空间、分组名、描述、部门、业务、标签。
- 列表可看文件数、加密数、待发布标记(「有变更」/「无」)。
- 操作:查看文件、授权、删除。
- 分组下仍有文件时不能删,提示「请先删除 N 个配置文件」。
配置文件
进入分组后打开具体文件:
| 按钮 / Tab | 作用 |
|---|---|
| 编辑 / 保存草稿 | 改正文后保存为正式草稿(编辑态) |
| 撤销 | 放弃未保存修改 |
| 发布配置 | 打开发布向导 |
| 交给 Agent | 跳到 Agent 工作台并带上该文件上下文 |
| 授权 | 对该文件做资源授权 |
| Tab「文件内容」 | 编辑或只读预览 |
| Tab「基本信息」 | 描述、是否加密、算法、文件标签 |
| Tab「发布记录」 | 四态发布记录(见下) |
| Tab「订阅查询」 | 查看订阅客户端及灰度命中情况 |
约束:单文件内容最大 20,000 字符;列表分页最大 100。
状态常见文案:编辑待发布、灰度发布中、发布成功、发布失败、未发布。
发布配置(两步)
点「发布配置」打开抽屉「发布配置」:


- 版本对比 → 下一步
- 发布信息
- 版本名称(必填,≤64;重名会提示将重新发布)
- 发布说明(≤255)
- 发布类型:
- 全量发布:替换当前全量基线。提示原文:「全量发布会替换当前全量基线,不结束正在生效的灰度版本。」
- 灰度发布:需至少一条灰度规则;可设灰度优先级(1–9999,默认 100)。单条灰度内,客户端需同时满足全部灰度规则(AND)。
确认后点「确认发布」。
多灰度版本(必须理解)
配置中心不是「一个文件同一时间只能有一条灰度」。模型是:
| 维度 | 语义 |
|---|---|
| 全量(normal) | 同一文件最多 1 条 active 全量基线 |
| 灰度(gray) | 同一文件可有 多条 active 灰度,按 releaseName 区分 |
| 全量 vs 灰度 | 发全量不阻塞、也不结束已有 active 灰度 |
| 灰度 vs 灰度 | 新灰度不会挤掉其他仍 active 的灰度 |
页面「灰度发布」Tab 文案:多条 active gray release 独立生效,可提交为正式草稿或删除灰度。
关键能力要用客户端拉配置验证,而不是只看 Console 列表:同一文件、不同 tags,会返回不同的 active 灰度内容;未命中则回落正式全量。


客户端 OpenAPI:curl 拉到不同版本
客户端接口(HTTP API,默认 http://127.0.0.1:8090,路径是 /v1/...,不是 Console 的 /config/v1/...):
# 正式全量(无 tags / 未命中灰度)
curl -sS "$CLIENT/v1/GetConfigFile?namespace=default&group=docs-multi-gray&fileName=app.yaml&version=0" \
| jq '{name:.file.name, release_type:.file.release_type, content:.file.content}'
# 命中灰度 A
curl -sS "$CLIENT/v1/GetConfigFile?namespace=default&group=docs-multi-gray&fileName=app.yaml&version=0&tags=env%3Dgray-a" \
| jq '{name:.file.name, release_type:.file.release_type, content:.file.content}'
# 命中灰度 B
curl -sS "$CLIENT/v1/GetConfigFile?namespace=default&group=docs-multi-gray&fileName=app.yaml&version=0&tags=env%3Dgray-b" \
| jq '{name:.file.name, release_type:.file.release_type, content:.file.content}'tags 格式为 key=value(可重复传多个 tags)。期望结果示例:
| 客户端 tags | release_type | 内容特征 |
|---|---|---|
(无)或 env=other | normal | mode: baseline |
env=gray-a | gray | mode: gray-a |
env=gray-b | gray | mode: gray-b |
一键造数 + 客户端断言:
./scripts/demo-config-multi-gray.sh脚本会:Console 登录发布 1 条全量 + 2 条灰度,再分别用无标签 / env=gray-a / env=gray-b / env=other 调用 GetConfigFile,校验内容与类型。
客户端如何命中
- 未命中任一灰度规则 → 回落当前全量。
- 只命中一条灰度 → 拿到该灰度内容。
- 同时命中多条灰度 → 控制面在命中集合中按 version 新 → mtime 新 选择一条返回。
- Console 展示的「灰度优先级」用于发布与列表标识;多灰度冲突时的最终选择以上述 version/mtime 规则为准(不要把它理解成百分比流量分流)。
推荐用法
- 用不同
releaseName/ 灰度规则覆盖不同客户端标签集合(例如环境、集群、语言、自定义标签)。 - 验证通过后,对目标灰度执行「提交为正式草稿」,再发布全量;其它灰度可继续保留或单独「删除灰度」。
- 停灰度是按版本操作:停 A 不影响仍 active 的 B。
发布记录四态
在文件「发布记录」Tab:

| Tab | 含义 |
|---|---|
| 正式发布 | 当前全量基线;正式发布不会结束 active 灰度 |
| 灰度发布 | 可有多条 active 灰度独立生效 |
| 正式草稿 | 由灰度转正或手工编辑生成,尚未影响线上客户端 |
| 历史记录 | 已归档、回滚生成或删除后的记录 |
常见操作
| 场景 | 操作 | 结果 |
|---|---|---|
| 停灰度 | 灰度中版本 →「删除灰度」 | 命中该灰度的客户端回落当前全量;其它 active 灰度不受影响 |
| 灰度转正准备 | 灰度中 →「提交为正式草稿」 | 生成正式草稿,再对其「发布正式草稿」做全量;不会自动停灰度 |
| 回滚 | 历史/非当前版本 →「回滚至此版本」 | 生成新的当前全量;不会自动停止 active 灰度 |
| 删除当前全量 | 删除确认 | 未命中灰度的客户端可能拿不到配置,需谨慎 |
与 Pole Agent 的衔接
Agent 确认后的写操作只保存草稿。你仍须回到本页执行「发布配置」。见 Pole Agent 工作台。