配置篇
服务端
基本配置
- 添加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
以及Eureka的,就不贴了;
2. 注册至服务中心 eureka.client.service-url.defaultZone=EurekaUrl
3. Application添加@EnableConfigServer
4. 添加Git仓库地址 :
spring.cloud.config.server.git.uri= Git Repository Url
指定缓存文件夹
spring.cloud.config.server.git.basedir=config-repo
Git仓库连接验证(密码,SSH)
- 用户名密码验证:
spring.cloud.config.server.git.password=yourpassword
spring.cloud.config.server.git.username= yourusername
公有仓库无需配置,仅地址即可;
2. SSH 密钥验证配置:
- 公钥在git账号个人中心设置,github有单独的ssh设置条目,tfs在安全设置;不同平台可能不一样,自寻;
- 私钥开头和结尾前一行需要\n,中间行需要 \ 连接;要保证秘钥内容是绿色有效值文本;
- 目前网上关于SSH配置的博文较少,我所见几篇都是yml格式且是官方文档原文,如有问题欢迎联系
spring.cloud.config.server.git.ignore-local-ssh-settings=true
spring.cloud.config.server.git.strict-host-key-checking=false
#重点,注意格式,这里仅贴几行
spring.cloud.config.server.git.private-key=-----BEGIN RSA PRIVATE KEY-----\n\
MIIEogIBAAKCAQEAlwBdaROcsgEaO2cxxU9/0LzixFunoNHWoBaCCu//yv26/T3O\
DaNNo+zYkDCUF4nIAUdSYWO669lz7vnTg9YKURMvI61mT9Zd41GA5J0noZe+Xudj\
9EqiuHj+OjfUSRycq/z7iolhACVtXCcpya1okHcTAhOC2Vx5gH8=\n\
-----END RSA PRIVATE KEY-----
- 此时spring.cloud.config.server.git.uri地址格式注意切换
- github的公开仓库http连接无需验证,但是地址是[email protected]****.git的话就需要ssh证书验证
- 秘钥配置时开头的—-BEGIN RSA PRIVATE KEY —-这个不是注释,是必须的,是秘钥的一部分
仓库多目录配置
Config服务默认仅搜索Git仓库根目录,当配置文件较多,多个项目共用一个配置仓库时,分文件夹是必然的;服务端需要额外添加配置:
spring.cloud.config.server.git.search-paths=clien1,clien2,client3
此时Config服务就会到各个文件夹下搜索对应配置文件,文件命名也需遵循规则,如:
client1-dev.properites,client1-local.properites,client3-prod.properties
同一个项目可以同时有多个环境的不同配置文件,但必须在对应名称的文件夹下;
客户端
基本配置
- pom依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
</dependency>
- 属性配置
#配置中心服务端在eureka的注册名称;
spring.cloud.config.discovery.service-id=server name
#启用配置服务发现
spring.cloud.config.discovery.enabled=true
#客户端在服务端搜索配置时的名称,可以与spring.application.name不一致
spring.cloud.config.name=client1
#标识,local,dev,prod等,随意
spring.cloud.config.profile=dev
#分支名称
spring.cloud.config.label=master
- 使用以上配置获取的Config服务端配置文件:
- Git仓库master分支根目录下client1-dev.properties文件
- Git仓库master分支下client1文件夹下client1-dev.properties文件(前提:server配置中有search-path=client1)
至于两个都有的话应该是优先获取根目录下文件,可以发送个get请求试一下,格式为:
http://config server ip: server port/client1/dev/master
- 前提 ConfigServer成功注册到Eureka,否则需要指定ConfigServer地址;
#config server 地址
spring.cloud.config.uri= server address
但是既然使用微服务了,那么当然要用Eureka咯
使用篇
手动刷新配置文件
- 客户端需要添加属性management.security.enabled=false
发送POST请求(bus自动刷新除外):
- 方式一:client ip : port/refresh(刷新单个客户端)
- 方式二 :zuul ip : port/client name/refresh (刷新Eureka注册中心所有相同服务名的配置,前提是使用了zuul)
配置服务安全验证
- 服务端 :添加安全包依赖
- 服务端 :添加属性
security.basic.enabled=true
security.user.name=configUserName
security.user.password=configPWD
-
3. 客户端 :添加安全包依赖
4. 客户端 :添加属性
#服务端配置的密码
spring.cloud.config.username=configUserName
spring.cloud.config.password=configPWD
其它
- 无法刷新spring.application.name 、servert.port此类信息;
刷新需要的pom依赖:
如果启动时未看见如下图日志,则需要添加依赖,否则不需要;
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> <version>1.5.9.RELEASE</version> </dependency>
因为其实spring-cloud-config-client包中其实已经有此依赖,只是版本不同,有时需要额外添加;
如有问题欢迎私信博主或邮件[email protected]交流