前言
繁琐的配置一直是开发人员的噩梦,Spring Cloud+Apollo的架构目前比较火热,相比Spring Cloud自带的配置中心更加方便修改发布,并且Apollo支持灰度发布、变更记录、权限管理等。能极大程度上减少开发人员在配置上耗费的精力。
Apollo重要概念:
- 环境:开发人员都比较熟悉的概念,比如(
dev
)、测试(test
)、生产(prod
) - 集群:位于环境之下,每个集群的配置可以不一样。设想你的微服务部署于多个机器,每个机器需要的配置不一样。
- portal:入口,可以简单的理解为管理控制台
需求
- 生产环境的配置对开发人员保密
- 保证项目发布的时候操作尽量简化
- 即使使用自动发布,也希望前期的准备工作更加简单。
思路:
最彻底的保密方式是直接使用两个不同的portal:一个开放给开发人员用于dev
和test
,另一个用于生产。这样的好处是只要不将生产portal地址、用户名、密码等公布出去就可以了,也不用担心误操作权限导致机密配置泄露。
具体方案:
阅读官方文档时,文档中的server.properties
引起了我的注意,Ctrl+F发现文中5次提到,经过整理发现该文件可以对以下内容进行配置:配置中心路径、环境、集群、本地配置缓存路径,完全满足了场景需求,不得不佩服设计者。
- 配置中心搭建两套portal:
- 透明的一套(告知开发人员)
- 保密的一套(仅生产相关管控人员知道)
- 各环境不变的参数配置在Spring Boot的
application.properties
中:
app.id=你的appid
apollo.bootstrap.enabled=true
apollo.bootstrap.namespaces=需要加载的名字空间1,需要加载的名字空间2
- 各环境不同的参数放在server.properties (在项目的readme中告知开发人员做如下配置,当然内容仅为透明的部分,生产环境部分管控人员自己做了就好)
- 在该位置创建一个s
erver.properties
文件:
Mac/Linux: /opt/settings/server.properties
Windows: C:\opt\settings\server.properties - 内容:
apollo.meta=配置中心路径
env=环境
idc=集群
apollo.cacheDir=本地配置缓存路径