Skip to content

配置集合管理

场景说明

在企业环境中,通常存在业务部门运维部门的职责分离:

  • 业务部门负责业务需求,需要创建虚拟服务、服务器池等资源,但出于安全考虑,不应直接登录矩尺管理节点操作。
  • 运维部门负责平台的安全稳定运行,但面对大量业务部门的资源申请,逐一代为配置不仅繁琐,而且对业务细节并不了解。

配置集合管理正是为解决这一矛盾而设计:业务部门按照约定的格式编写 YAML/JSON 配置文件,交由运维部门上传到配置集合,一键同步即可自动创建所有资源。运维部门无需了解业务具体内容,业务部门也无需直接接触管理节点。

工作流程

业务部门                          运维部门                        矩尺平台
   │                                 │                             │
   ├─ 按规则编写 YAML 配置文件 ──────→│                             │
   │   (health.yaml 定义健康检查)     │                             │
   │   (pool.yaml 定义服务器池)       │                             │
   │   (vs.yaml 定义虚拟服务)         │                             │
   │                                 ├─ 创建配置集合               │
   │                                 ├─ 上传 YAML 文件             │
   │                                 ├─ 点击"立即同步" ────────────→│
   │                                 │                             ├─ 自动解析依赖关系
   │                                 │                             ├─ 创建健康检查策略
   │                                 │                             ├─ 创建服务器池
   │                                 │                             └─ 创建虚拟服务
   │                                 │                             │
   │◄─ 测试业务,验证虚拟服务已生效 ──│                             │

配置文件格式

配置文件采用 YAML 或 JSON 格式,每个文件对应一种资源类型。文件通过 ref 引用机制互相依赖,实现资源间的关联。

YAML 文件的具体字段定义(如健康检查的参数、服务器池的节点配置等)请参考矩尺平台内置的 API 文档(登录管理节点后点击导航栏右侧的链接按钮打开),所有字段与 API 接口一一对应。

文件依赖示例

以下三个文件展示了从健康检查 → 服务器池 → 虚拟服务的完整链路:

health.yaml — 定义健康检查策略

yaml
# 创建健康检查策略,被 pool.yaml 引用
health_check:
  name: "health-check-api"
  type: HTTP
  http:
    host: "example.com"
    method: GET
    url_path: "/health"
    expect_code: 200
  interval: 5
  timeout: 3
  tries: 3

pool.yaml — 定义服务器池

yaml
# 创建服务器池,引用 health.yaml 中定义的 health_check
pool:
  name: "pool-api"
  algorithm: "round_robin"
  health_check:
    $ref: "./health.yaml#/health_check"   # 引用 health.yaml 中的健康检查
  nodes:
    - ip: "192.168.1.10"
      port: 8080
      weight: 1
    - ip: "192.168.1.11"
      port: 8080
      weight: 1

vs.yaml — 定义虚拟服务

yaml
# 创建虚拟服务,引用 pool.yaml 中定义的 pool
virtual_service:
  name: "vs-api"
  mode: "http"
  listen:
    - ip: "0.0.0.0"
      port: 80
  server_pool:
    $ref: "./pool.yaml#/pool"             # 引用 pool.yaml 中的服务器池

引用规则

  • 使用 $ref 语法引用同一配置集合内其他文件定义的资源
  • 引用路径格式为 ./文件名#/资源路径
  • 系统自动解析依赖关系,按正确的顺序创建资源
  • 如果 A 依赖 B,则只需将 A 和 B 上传到同一个配置集合即可,系统会先创建 B 再创建 A

操作步骤

第一步:创建配置集合

入口:【平台系统 → 配置管理 → 配置集合管理】。

点击"新增",输入配置集合的名称(如 c1),点击确定。

新增配置集合

第二步:上传配置文件

  1. 在配置集合列表中,点击刚创建的配置集合名称,进入详情页面。
  2. 点击"上传"按钮,选择业务部门提供的 YAML/JSON 文件。
  3. 支持 .yml.yaml.json.jsonc 格式文件。

上传配置集合文件

可以一次上传一个文件,也可以将多个文件逐个上传到同一个配置集合中。

第三步:同步配置

上传完成后,返回配置集合列表。找到对应的配置集合,点击右侧 "立即同步" 按钮。

同步配置集合

系统将自动执行以下操作:

  1. 解析依赖关系 — 分析各文件间的 $ref 引用,确定创建顺序
  2. 语法校验 — 检查每个文件的格式和字段合法性
  3. 逐个创建资源 — 按依赖顺序依次创建,任一资源创建失败则整个变更回滚
  4. 返回同步结果 — 显示同步状态和耗时

注意:如果配置集合内的文件依赖关系不全(如引用了不存在的资源)或语法验证失败,系统将拒绝执行同步,并提示具体错误信息。

理解同步状态

状态含义说明
待同步文件已上传或发生变动,尚未同步新增文件后自动进入此状态
同步中正在执行同步操作此时不可重复点击
同步成功(未检测到资源变动)文件内容与上次同步时无变化系统跳过执行,无需处理
同步成功(耗时 X.X 秒)所有资源创建成功业务部门可开始测试
同步失败:<变更执行失败>文件解析成功,但资源创建时发生冲突检查资源是否已存在或有冲突
同步失败:<具体错误>权限、依赖、格式等校验未通过根据错误提示修正文件后重新同步

其他字段说明

  • 最近修改时间:配置集合内上次创建或删除文件的时间。
  • 最近执行时间:上次点击"立即同步"的时间。如果系统检测到文件未发生变化,点击同步不会实际执行,执行时间也不会更新。

常见场景

场景一:业务部门独立编写配置

业务部门按照 API 文档格式编写 YAML 文件,在自己的环境中通过语法校验后,将文件包发给运维部门。运维部门直接上传并同步,全程无需理解业务含义。

场景二:增量更新已有资源

如需修改已有资源(如调整服务器池节点),只需更新对应的 YAML 文件内容,然后重新上传并同步。系统会识别变更并执行更新。

场景三:删除资源

如需删除通过配置集合创建的虚拟服务,只需从配置集合中删除对应的 vs.yaml 文件,然后点击"立即同步",系统会自动删除对应的虚拟服务资源。

注意:删除文件后同步,会删除之前通过该文件创建的资源。请谨慎操作。

场景四:多个业务共享运维

运维部门可以为每个业务部门或项目创建独立的配置集合(如 c1c2c3),每个集合内包含各自业务的配置文件,互不干扰,统一管理。

最佳实践

  1. 一个文件定义一个资源:每个 YAML/JSON 文件只定义一个资源,便于维护和复用
  2. 合理命名:配置集合和文件的命名应体现用途,如 production-vs.yamlstaging-pool.yaml
  3. 先校验后同步:在上传前确认 YAML 格式正确,缩进规范
  4. 关注同步结果:同步失败时查看错误信息,根据提示修正后重新同步
  5. 测试验证:同步成功后通知业务部门验证,确保资源按预期生效

相关文档