专业的编程技术博客社区

网站首页 > 博客文章 正文

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

baijin 2024-11-13 09:32:01 博客文章 4 ℃ 0 评论

背景

在一些项目组中,使用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过载中,对配置文件进行装配

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表