系统配置管理的发展:处理独占配置和相关模板

主要观点、关键信息和重要细节总结:

  • 系列概述:这是“系统配置管理开发”多部分系列的 2.3 部分,完整系列包括介绍、迁移与演进、性能考虑、总结与反思等。
  • 专属主机配置

    • 目的与要求:新 SCM 的最小配置单元是主机组,每个主机组可包含多个主机,有时仅一个主机。但有时需要对主机组内个别主机进行更详细配置,早期用停止 SCM 代理等 workaround 测试,存在诸多问题,由此确定专属配置要求,如按主机创建配置等。
    • 实现方式:有将配置存储为简单文件或使用 API 路由器两种方式,最终选择后者,在部署工具 CLI 级添加逻辑,API 将数据保存在 Consul 中,调度器据此构建主机配置。
    • 代码实现:在 API 中添加api/v3/exclusive路由提供 CRUD 接口,用于添加、获取和删除专属配置,同时更新配置生成器。
    • 实际使用:在 CLI 工具中添加exclusive命令,可用于在 CI 中进行金丝雀部署等操作。
    • 缺点:主要缺点是不透明,用户可能忘记创建,TTL 功能主要适用于测试。
  • 指标与日志

    • 日志实现:在代理和 API 级别实现不同日志记录,根据模块将日志写入不同文件,Syslog 可作为监控基础设施问题的替代方式。
    • 文件差异日志:在推送方案中,可返回 HTTP 响应指示文件差异,展示部署结果和错误,同时有多种 API 级别的度量指标,如服务重启次数等。
  • 相关模板:在基础设施中,模板使用情况因软件而异,对于复杂配置或大型文件,使用模板可能存在问题,如 Nginx 和 Envoy 的配置,现在通过 Go 模块text/template实现模板传递和处理,改变了模板文件的处理方式。
  • 创建新模块示例:为简化新成员创建新模块的过程,开发了 dummy 处理程序,提供代码模板,通过复制粘贴、查找替换和少量编辑即可创建自己的模块来配置其他软件,但 SCM 文档仍需改进。
阅读 215
0 条评论