写点什么

使用 Apollo 升级一下 yml 文件管理和发布

用户头像
Sky彬
关注
发布于: 2021 年 01 月 18 日
使用Apollo升级一下yml文件管理和发布

背景


在一些项目组中,使用 springboot+yml 文件的组合方式,进行应用开发和发布。


应用读取方式:yml 文件通过 configmap 进行挂载到容器,让应用进行读取。


配置文件管理方式:yml 文件统一存放在 git 中,git 的权限配置为运维可操作。


这种管理模式存在一些问题:


  1. 效率低下:改动任何非敏感内容,都需要运维介入,增大沟通成本;

  2. 敏感信息泄露风险:运维作为信息管理者,敏感信息也可以获取,例如:数据库用户名和密码等

  3. 发布流程缺乏:配置文件更改后,没有对应的审核机制,容易产生误操作。

  4. 敏感信息暴露:使用 confmap 进行挂载,相关敏感信息也难以进行权限管理,也同时把敏感信息进行明文暴露


面对这些需求,使用 Apollo 作为底层配置文件存储,融入现有运维平台中,进行配置文件的管理


  1. Apollo 作为存储 yml 配置文件底层;

  2. 对敏感信息进行加密处理;

  3. 将配置文件修改和配置文件发布审核权限进行分离;修改权限分给该应用的开发人员;发布权限分给对应指定人员;

  4. 将配置文件的拉取融入 CI 过程中;


逻辑架构图



  1. 新增、修改配置文件:应用开发人员对配置文件进行信息初始化(或者修改)

  2. 审核人员 or 敏感信息填写人员:审核人员:确定配置是否正常、通过发布请求;敏感信息填写人员:DBA 填写数据库用户名和密码等

  3. 新增、修改、发布、加密敏感信息:平台发现敏感内容,则对其进行加密;配置文件封装完毕后,后台调用 Apollo 客户端进行 CRUD

  4. 发布应用:配置文件审核通过后,开发人员可以自助进行发布;

  5. 拉取配置文件:CI 过程中对配置文件进行拉取,并解密;把还原后的配置文件放置在对应的代码目录位置中;最后,对代码和配置文件进行 jar 打包;

  6. 线上变更:通过 CD 进行线上平台发布


效果图


配置文件入口



配置文件浏览



审核浏览



加密解密工具


                <dependency>			<groupId>com.github.ulisesbocchio</groupId>			<artifactId>jasypt-spring-boot-starter</artifactId>			<version>3.0.3</version>		</dependency>
复制代码


Apollo API 客户端


                <dependency>			<groupId>com.ctrip.framework.apollo</groupId>			<artifactId>apollo-openapi</artifactId>			<version>1.7.0</version>		</dependency>
复制代码


效果


  1. 开发团队对配置文件进行自治管理;

  2. 敏感信息得到加密保存;

  3. 发布流程中,加入了审核环境,降低误修改几率;


后续改进


开发团队可以使用 Apollo 客户端,对配置文件进行读取,从而不需要在 CI 过载中,对配置文件进行装配


发布于: 2021 年 01 月 18 日阅读数: 15
用户头像

Sky彬

关注

运维经理、开发经理 2019.05.05 加入

运维平台、架构、DevOp、开源,欢迎拍砖

评论

发布
暂无评论
使用Apollo升级一下yml文件管理和发布