阿波罗(apollo)配置中心多环境方案

前言

繁琐的配置一直是开发人员的噩梦,Spring Cloud+Apollo的架构目前比较火热,相比Spring Cloud自带的配置中心更加方便修改发布,并且Apollo支持灰度发布、变更记录、权限管理等。能极大程度上减少开发人员在配置上耗费的精力。

阿波罗官方的介绍:Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。

学习Apollo的飞机票【github:https://github.com/ctripcorp/apollo】

Apollo重要概念:

  • 环境:开发人员都比较熟悉的概念,比如(dev)、测试(test)、生产(prod
  • 集群:位于环境之下,每个集群的配置可以不一样。设想你的微服务部署于多个机器,每个机器需要的配置不一样。
  • portal:入口,可以简单的理解为管理控制台

需求

  1. 生产环境的配置对开发人员保密
  2. 保证项目发布的时候操作尽量简化
  3. 即使使用自动发布,也希望前期的准备工作更加简单。

思路:

最彻底的保密方式是直接使用两个不同的portal:一个开放给开发人员用于devtest,另一个用于生产。这样的好处是只要不将生产portal地址、用户名、密码等公布出去就可以了,也不用担心误操作权限导致机密配置泄露。

具体方案:

阅读官方文档时,文档中的server.properties引起了我的注意,Ctrl+F发现文中5次提到,经过整理发现该文件可以对以下内容进行配置:配置中心路径、环境、集群、本地配置缓存路径,完全满足了场景需求,不得不佩服设计者。

  1. 配置中心搭建两套portal:

    • 透明的一套(告知开发人员)
    • 保密的一套(仅生产相关管控人员知道)
  2. 各环境不变的参数配置在Spring Boot的application.properties中:

    app.id=你的appid
    apollo.bootstrap.enabled=true
    apollo.bootstrap.namespaces=需要加载的名字空间1,需要加载的名字空间2
    
  3. 各环境不同的参数放在server.properties (在项目的readme中告知开发人员做如下配置,当然内容仅为透明的部分,生产环境部分管控人员自己做了就好)

    • 在该位置创建一个server.properties文件:
      Mac/Linux: /opt/settings/server.properties
      Windows: C:\opt\settings\server.properties

    • 内容:

      apollo.meta=配置中心路径
      env=环境
      idc=集群
      apollo.cacheDir=本地配置缓存路径
      

你可能感兴趣的:(阿波罗(apollo)配置中心多环境方案)