赞
踩
我们在SpringCloud项目引入nacos作为配置中心后,为了方便开发,通常会有:local、test、prod等多个环境,本地调试代码用local的配置,测试环境打包用test的配置,生产环境打包用prod配置。本文以实际项目为例,给出了配置方法。并且基于生产环境,nacos账密需要定期修改,给出了生产环境配置bootstrap.yml配置文件的方案,仅供参考。
1.项目pom.xml文件配置环境及nacos信息
<profiles>标签配置不同环境的信息如下:
- <profiles>
- <!--本地环境-->
- <profile>
- <id>local</id>
- <properties>
- <activatedProperties>local</activatedProperties>
- <nacosConfigAddr>127.0.0.1:8848</nacosConfigAddr>
- <nacosNameSpace>d4460cce-jfh3-4a3e-92a8-51f597049999</nacosNameSpace>
- <nacosUserName>nacos</nacosUserName>
- <nacosPassword>123456</nacosPassword>
- </properties>
- </profile>
-
-
- <!--测试环境-->
- <profile>
- <id>base-test</id>
- <properties>
- <activatedProperties>test</activatedProperties>
- <nacosConfigAddr>127.0.0.2:8848</nacosConfigAddr>
- <nacosNameSpace>d4460cce-gd54-4a3e-92a8-51f597049998</nacosNameSpace>
- <logstashAddr>173.16.204.246:4567</logstashAddr>
- <nacosUserName>nacos</nacosUserName>
- <nacosPassword>123456</nacosPassword>
- </properties>
- </profile>
-
-
- <!--生产环境-->
- <profile>
- <id>jiguan-prod</id>
- <properties>
- <activatedProperties>prod</activatedProperties>
- <nacosConfigAddr>127.0.0.3:8848</nacosConfigAddr>
- <nacosNameSpace>d4460cce-yrhs-4a3e-92a8-51f597049997</nacosNameSpace>
- <nacosUserName>nacos</nacosUserName>
- <nacosPassword>123456</nacosPassword>
- </properties>
- </profile>
- </profiles>
<activatedProperties>标签配置环境名
<nacosConfigAddr>标签配置nacos服务的ip:端口
<nacosNameSpace>标签配置nacos命名空间
<nacosUserName>标签配置连接nacos服务的账号
<nacosPassword>标签配置连接nacos服务的密码
2.每个微服务模块下的bootstrap.yml配置文件配置如下:
业务模块配置:
- spring:
- security:
- type: springboot
- profiles:
- active: @activatedProperties@
- cloud:
- nacos:
- config:
- # 共享配置的DataId,多个使用,分隔
- # 越靠后,优先级越高;
- # .yaml后缀不能少,只支持yaml/properties
- shared-dataids: common.yaml #共享配置
- refreshable-dataids: common.yaml #可刷新共享配置
- server-addr: @nacosConfigAddr@ #nacos server地址
- namespace: @nacosNameSpace@ #命名空间,代指某个环境
- file-extension: yaml #dataId扩展名
- username: @nacosUserName@
- password: @nacosPassword@
- application:
- name: test-center #服务名称
api-gateway网关模块配置:
- spring:
- security:
- type: gateway
- profiles:
- active: @activatedProperties@
- cloud:
- nacos:
- config:
- # 共享配置的DataId,多个使用,分隔
- # 越靠后,优先级越高;
- # .yaml后缀不能少,只支持yaml/properties
- shared-dataids: common.yaml #共享配置
- refreshable-dataids: common.yaml #可刷新共享配置
- server-addr: @nacosConfigAddr@ #nacos server地址
- file-extension: yaml #dataId扩展名
- namespace: @nacosNameSpace@ #命名空间 代指某个环境
- username: @nacosUserName@
- password: @nacosPassword@
- sentinel:
- transport:
- # 指定sentinel 控制台的地址
- dashboard: 127.0.0.1:8080
- eager: true
- application:
- name: api-gateway
- main:
- allow-bean-definition-overriding: true
- user:
- name: admin
- password: admin@123
- roles: admin
- #metrics
- management:
- endpoints:
- web:
- exposure:
- include: "*"
- endpoint:
- gateway:
- enabled: false
- chaosmonkey:
- enabled: true
- health:
- show-details: always
项目启动或者打包时,idea工具勾选对应的环境,项目就会动态获取对应环境的nacos配置,去连接nacos配置中心了。这种方式是把nacos账密信息打在程序包里,项目启动时读取程序里的配置信息连接nacos服务获取项目的业务配置信息。
这种方式有个弊端就是,在生产环境,当我们需要定期修改nacos配置信息以保障项目安全时,每次修改nacos服务的密码,都需要重新打包部署项目服务。要想在修改了nacos密码后不需要重新打包就能更新nacos密码,就需要将bootstrap.yml配置放到服务器上,这样修改完nacos配置信息,只需要在服务器上重启服务就好了。
mkdir config;
将bootstrap.yml配置文件放到config目录下,把启动环境信息还有nacos账密信息放到yml文件中,其余每个项目特有的信息(如:应用名称,security类型)放到项目代码中的bootstrap.yml配置文件中。
- spring:
- profiles:
- active: prod
- cloud:
- nacos:
- config:
- # 共享配置的DataId,多个使用,分隔
- # 越靠后,优先级越高;
- # .yaml后缀不能少,只支持yaml/properties
- shared-dataids: common.yaml #共享配置
- refreshable-dataids: common.yaml #可刷新共享配置
- server-addr: 127.0.0.3:4848 #nacos server地址
- namespace: d4460cce-yrhs-4a3e-92a8-51f597049997 #命名空间代指某个环境
- file-extension: yaml #dataId扩展名
- username: nacos
- password: ENC(qDYb89YM4BP9gRFvjqTTqZGeQ==)
-
- #jasypt加密
- jasypt:
- encryptor:
- password: 1115@11
业务模块的配置:
- spring:
- security:
- type: springboot
- application:
- name: test-center
api-gateway网关模块配置:
- spring:
- security:
- type: gateway
- sentinel:
- transport:
- # 指定sentinel 控制台的地址
- dashboard: 127.0.0.1:8080
- eager: true
- application:
- name: api-gateway
- main:
- allow-bean-definition-overriding: true
- user:
- name: admin
- password: admin@123
- roles: admin
springCloud项目启动时会先读取项目jar包同级目录下config目录中的yml配置,然后才会去项目jar包中读取resource目录下的yml配置,我们把各微服务模块共用的nacos账密信息和启动环境等配置放到服务器上,把各模块个性化配置放到服务jar包中,这样就能很好的处理nacos账密定期更新的问题,降低nacos密码更新对项目变更的影响。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。