当前位置:   article > 正文

SpringCloud整合nacos配置中心bootstrap.yml多环境配置_springcloud + nacos + yml

springcloud + nacos + yml


前言

        我们在SpringCloud项目引入nacos作为配置中心后,为了方便开发,通常会有:local、test、prod等多个环境,本地调试代码用local的配置,测试环境打包用test的配置,生产环境打包用prod配置。本文以实际项目为例,给出了配置方法。并且基于生产环境,nacos账密需要定期修改,给出了生产环境配置bootstrap.yml配置文件的方案,仅供参考。

一、配置文件bootstrap.yml打在jar包里

1.项目pom.xml文件配置环境及nacos信息

<profiles>标签配置不同环境的信息如下:

  1. <profiles>
  2. <!--本地环境-->
  3. <profile>
  4. <id>local</id>
  5. <properties>
  6. <activatedProperties>local</activatedProperties>
  7. <nacosConfigAddr>127.0.0.1:8848</nacosConfigAddr>
  8. <nacosNameSpace>d4460cce-jfh3-4a3e-92a8-51f597049999</nacosNameSpace>
  9. <nacosUserName>nacos</nacosUserName>
  10. <nacosPassword>123456</nacosPassword>
  11. </properties>
  12. </profile>
  13. <!--测试环境-->
  14. <profile>
  15. <id>base-test</id>
  16. <properties>
  17. <activatedProperties>test</activatedProperties>
  18. <nacosConfigAddr>127.0.0.2:8848</nacosConfigAddr>
  19. <nacosNameSpace>d4460cce-gd54-4a3e-92a8-51f597049998</nacosNameSpace>
  20. <logstashAddr>173.16.204.246:4567</logstashAddr>
  21. <nacosUserName>nacos</nacosUserName>
  22. <nacosPassword>123456</nacosPassword>
  23. </properties>
  24. </profile>
  25. <!--生产环境-->
  26. <profile>
  27. <id>jiguan-prod</id>
  28. <properties>
  29. <activatedProperties>prod</activatedProperties>
  30. <nacosConfigAddr>127.0.0.3:8848</nacosConfigAddr>
  31. <nacosNameSpace>d4460cce-yrhs-4a3e-92a8-51f597049997</nacosNameSpace>
  32. <nacosUserName>nacos</nacosUserName>
  33. <nacosPassword>123456</nacosPassword>
  34. </properties>
  35. </profile>
  36. </profiles>

<activatedProperties>标签配置环境名

<nacosConfigAddr>标签配置nacos服务的ip:端口

<nacosNameSpace>标签配置nacos命名空间

<nacosUserName>标签配置连接nacos服务的账号

<nacosPassword>标签配置连接nacos服务的密码

2.每个微服务模块下的bootstrap.yml配置文件配置如下:

业务模块配置:

  1. spring:
  2. security:
  3. type: springboot
  4. profiles:
  5. active: @activatedProperties@
  6. cloud:
  7. nacos:
  8. config:
  9. # 共享配置的DataId,多个使用,分隔
  10. # 越靠后,优先级越高;
  11. # .yaml后缀不能少,只支持yaml/properties
  12. shared-dataids: common.yaml #共享配置
  13. refreshable-dataids: common.yaml #可刷新共享配置
  14. server-addr: @nacosConfigAddr@ #nacos server地址
  15. namespace: @nacosNameSpace@ #命名空间,代指某个环境
  16. file-extension: yaml #dataId扩展名
  17. username: @nacosUserName@
  18. password: @nacosPassword@
  19. application:
  20. name: test-center #服务名称

api-gateway网关模块配置:

  1. spring:
  2. security:
  3. type: gateway
  4. profiles:
  5. active: @activatedProperties@
  6. cloud:
  7. nacos:
  8. config:
  9. # 共享配置的DataId,多个使用,分隔
  10. # 越靠后,优先级越高;
  11. # .yaml后缀不能少,只支持yaml/properties
  12. shared-dataids: common.yaml #共享配置
  13. refreshable-dataids: common.yaml #可刷新共享配置
  14. server-addr: @nacosConfigAddr@ #nacos server地址
  15. file-extension: yaml #dataId扩展名
  16. namespace: @nacosNameSpace@ #命名空间 代指某个环境
  17. username: @nacosUserName@
  18. password: @nacosPassword@
  19. sentinel:
  20. transport:
  21. # 指定sentinel 控制台的地址
  22. dashboard: 127.0.0.1:8080
  23. eager: true
  24. application:
  25. name: api-gateway
  26. main:
  27. allow-bean-definition-overriding: true
  28. user:
  29. name: admin
  30. password: admin@123
  31. roles: admin
  32. #metrics
  33. management:
  34. endpoints:
  35. web:
  36. exposure:
  37. include: "*"
  38. endpoint:
  39. gateway:
  40. enabled: false
  41. chaosmonkey:
  42. enabled: true
  43. health:
  44. show-details: always

项目启动或者打包时,idea工具勾选对应的环境,项目就会动态获取对应环境的nacos配置,去连接nacos配置中心了。这种方式是把nacos账密信息打在程序包里,项目启动时读取程序里的配置信息连接nacos服务获取项目的业务配置信息。

        这种方式有个弊端就是,在生产环境,当我们需要定期修改nacos配置信息以保障项目安全时,每次修改nacos服务的密码,都需要重新打包部署项目服务。要想在修改了nacos密码后不需要重新打包就能更新nacos密码,就需要将bootstrap.yml配置放到服务器上,这样修改完nacos配置信息,只需要在服务器上重启服务就好了。

二、配置文件bootstrap.yml放在服务器上

1.服务器微服务jar包同级目录创建config文件夹

mkdir config;

将bootstrap.yml配置文件放到config目录下,把启动环境信息还有nacos账密信息放到yml文件中,其余每个项目特有的信息(如:应用名称,security类型)放到项目代码中的bootstrap.yml配置文件中。

2.服务器上bootstrap.yml配置文件

  1. spring:
  2. profiles:
  3. active: prod
  4. cloud:
  5. nacos:
  6. config:
  7. # 共享配置的DataId,多个使用,分隔
  8. # 越靠后,优先级越高;
  9. # .yaml后缀不能少,只支持yaml/properties
  10. shared-dataids: common.yaml #共享配置
  11. refreshable-dataids: common.yaml #可刷新共享配置
  12. server-addr: 127.0.0.3:4848 #nacos server地址
  13. namespace: d4460cce-yrhs-4a3e-92a8-51f597049997 #命名空间代指某个环境
  14. file-extension: yaml #dataId扩展名
  15. username: nacos
  16. password: ENC(qDYb89YM4BP9gRFvjqTTqZGeQ==)
  17. #jasypt加密
  18. jasypt:
  19. encryptor:
  20. password: 1115@11

3.代码中resource目录下bootstrap.yml配置文件 

业务模块的配置:

  1. spring:
  2. security:
  3. type: springboot
  4. application:
  5. name: test-center

api-gateway网关模块配置:

  1. spring:
  2. security:
  3. type: gateway
  4. sentinel:
  5. transport:
  6. # 指定sentinel 控制台的地址
  7. dashboard: 127.0.0.1:8080
  8. eager: true
  9. application:
  10. name: api-gateway
  11. main:
  12. allow-bean-definition-overriding: true
  13. user:
  14. name: admin
  15. password: admin@123
  16. roles: admin


总结

        springCloud项目启动时会先读取项目jar包同级目录下config目录中的yml配置,然后才会去项目jar包中读取resource目录下的yml配置,我们把各微服务模块共用的nacos账密信息和启动环境等配置放到服务器上,把各模块个性化配置放到服务jar包中,这样就能很好的处理nacos账密定期更新的问题,降低nacos密码更新对项目变更的影响。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/145712
推荐阅读
相关标签
  

闽ICP备14008679号