1 - 配置分组
名词解释
- 命名空间(Namespace)
- 通过 Namespace 可以逻辑隔离环境、集群
- 配置分组(FileGroup)
- 一组配置文件的集合
- 配置文件(File)
- 配置编辑、发布的最小单元。例如一份 properties 、yaml 格式的配置文件。
- 配置文件三元组
- 通过 Namespace + FileGroup + File 可以唯一定位一份配置文件。
新增并发布配置文件
创建命名空间
创建配置文件分组
配置文件分组是一组配置文件的集合,通常建议一个应用或者一个微服务对应一个配置分组,例如订单服务 order-service等。如果是客户端 jar 包使用的配置文件,也可以以 jar 包命名,例如 dubbo-rpc。
创建配置文件
这里需要特别指出的是配置文件名可以通过 / 来组织配置文件目录树。因为一个应用往往具有多个模块,每个模块都有自身的配置文件。当配置文件多了之后,如果没有目录结构组织,配置将变的难以管理。北极星配置中心通过配置文件名按 / 分割来组织树状结构。例如上图中 common/bootstrap.properties 效果如下:
再新建一个 common/application.yaml 文件和一个 web/controller/web.properties 效果如下:
可以看到通过树状结构可以清晰的管理自己的配置文件。 需要注意的是只有叶子节点是配置文件,目录不可以是配置文件,跟 Zookeeper 有些区别。例如有一个配置文件名为:common/bootstrap.properties,就不能再建一个 common 的配置文件,因为 common 已经作为 common/bootstrap.properties 的上级目录。
编辑配置文件
选中配置文件 -> 点击编辑 -> 输入配置文件内容 -> 点击保存。
发布配置文件
编辑保存之后,点击发布即可发布配置文件。
查看发布历史
通过详情页“查看发布历史”或者侧边栏“发布历史”入口可以跳转到发布历史页面查看配置文件发布历史记录。
2 - 配置导入导出
导出配置文件
导航到配置分组,点击上方导出按钮弹出配置导出对话框。
选择要导出的配置文件所在命名空间。
提供两种导出形式:
- 全部导出:将命名空间中的配置分组全部导出
- 导出选中的配置分组:选择命名空间中的配置分组导出
选择完成后,点击提交按钮导出配置,配置文件会已config.zip文件的形式下载到本地。
导出的配置文件config.zip压缩包中文件组织结构为:
├── META // 导出配置的元数据文件
├── group // 配置分组为一级目录
│ ├── filename // 配置文件
│ └── dir // 配置文件子目录
│ ├── otherfile
├── othergroup
如下图示例所示:
META文件记录配置文件的tag信息和comment信息,如下图示例所示:
导入配置文件
导航到配置分组,点击上方导入按钮。
弹出配置导入对话框,选择要导入的命名空间,从本地上传要导入的配置文件。
配置文件需要组织成ZIP压缩包,其文件组织结构需要跟导出的配置文件类似:
├── META // 导入配置的元数据文件
├── group // 配置分组为一级目录
│ ├── filename // 配置文件
│ └── dir // 配置文件子目录
│ ├── otherfile
├── othergroup
导入配置文件时META文件是可选的,如果需要导入配置文件的tag信息和comment信息,则需要提供META文件,否则可以不提供。
如果导入的配置文件与命名空间中已有的配置文件冲突,可以选择跳过或覆盖冲突文件。
导入成功后会显示导入文件详情。
3 - 配置加密
设计
客户端:
- 客户端本地生成一对公钥和私钥,请求配置文件时携带公钥参数,服务端使用客户端发来的公钥作为KEK(密钥加密密钥)对配置文件的DEK进行加密,然后返回客户端配置密文和DEK密文,客户端收到后用私钥解密DEK密文得到DEK明文,再用DEK解密配置密文。
- 客户端解密流程
控制台:
-
创建加密配置: 创建配置接口增加是否加密参数,如果需要加密,服务端生成数据加密密钥DEK,加密配置文件,保存配置文件密文到配置文件表,保存DEK和配置创建人配置文件的标签表。
-
查看加密配置: 用户在有读权限的前提下,请求获取配置文件,如果配置文件是加密的,服务端额外校验请求人是否为创建人,如果是则使用DEK解密配置文件后返回;如果不是则只返回配置文件密文。
-
控制台创建读取流程
如何启用配置加密
- 在新增配置文件中,点击配置加密的开关按钮
- 确认开启配置加密后,选择期望的配置加密算法
- 正常填写配置内容并发布
- 客户端接口获取到的文件内容是加密的
当前支持的客户端版本
4 - 配置灰度
功能描述
在使用配置中心对业务集群配置进行集中管理时,如果对某个配置项进行了修改,配置中心会将新的配置下发到所有监听该配置文件的业务进程中。业务进程接受到新的配置后会将新的配置覆盖当前的旧配置从而完成配置生效。由于配置是下发到所有客户端,一旦配置值修改不符合预期,将影响整个业务集群。
因此,在需要对配置进行编辑后下发到业务机器时,推荐先进行灰度发布。灰度发布是指在修改配置需要发布时,根据一定的规则选择一小部份机器,将修改后的配置先下发到这些机器中进行小范围验证。待业务确认无问题时,再将配置进行全量下发。如果在灰度发布期间发现问题,可以立即停止灰度发布。