使用 Apollo 升级一下 yml 文件管理和发布
背景
在一些项目组中,使用 springboot+yml 文件的组合方式,进行应用开发和发布。
应用读取方式:yml 文件通过 configmap 进行挂载到容器,让应用进行读取。
配置文件管理方式:yml 文件统一存放在 git 中,git 的权限配置为运维可操作。
这种管理模式存在一些问题:
效率低下:改动任何非敏感内容,都需要运维介入,增大沟通成本;
敏感信息泄露风险:运维作为信息管理者,敏感信息也可以获取,例如:数据库用户名和密码等
发布流程缺乏:配置文件更改后,没有对应的审核机制,容易产生误操作。
敏感信息暴露:使用 confmap 进行挂载,相关敏感信息也难以进行权限管理,也同时把敏感信息进行明文暴露
面对这些需求,使用 Apollo 作为底层配置文件存储,融入现有运维平台中,进行配置文件的管理
Apollo 作为存储 yml 配置文件底层;
对敏感信息进行加密处理;
将配置文件修改和配置文件发布审核权限进行分离;修改权限分给该应用的开发人员;发布权限分给对应指定人员;
将配置文件的拉取融入 CI 过程中;
逻辑架构图
新增、修改配置文件:应用开发人员对配置文件进行信息初始化(或者修改)
审核人员 or 敏感信息填写人员:审核人员:确定配置是否正常、通过发布请求;敏感信息填写人员:DBA 填写数据库用户名和密码等
新增、修改、发布、加密敏感信息:平台发现敏感内容,则对其进行加密;配置文件封装完毕后,后台调用 Apollo 客户端进行 CRUD
发布应用:配置文件审核通过后,开发人员可以自助进行发布;
拉取配置文件:CI 过程中对配置文件进行拉取,并解密;把还原后的配置文件放置在对应的代码目录位置中;最后,对代码和配置文件进行 jar 打包;
线上变更:通过 CD 进行线上平台发布
效果图
配置文件入口
配置文件浏览
审核浏览
加密解密工具
Apollo API 客户端
效果
开发团队对配置文件进行自治管理;
敏感信息得到加密保存;
发布流程中,加入了审核环境,降低误修改几率;
后续改进
开发团队可以使用 Apollo 客户端,对配置文件进行读取,从而不需要在 CI 过载中,对配置文件进行装配
版权声明: 本文为 InfoQ 作者【Sky彬】的原创文章。
原文链接:【http://xie.infoq.cn/article/801dda706472f4b36e8287d61】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论