alibaba / nacos

an easy-to-use dynamic service discovery, configuration and service management platform for building cloud native applications.
https://nacos.io
Apache License 2.0
30.32k stars 12.85k forks source link

nacos加载yml配置文件中的信息时机太早,出现某些包还没有处理完yml配置,nacos无法获取正确的配置 #12101

Closed aiYunS-love closed 5 months ago

aiYunS-love commented 6 months ago

例子: 我对yml中的所有ip地址进行了加密操作,springboot启动加载时,应当加载解密之后的信息,但是nacos很早就要加载nacos服务的地址,导致获取的是加密的ip,无法连接nacos服务.redis,rabbitmq等软件都是正常加载的,请提高通用型 兼容性 WX20240515-144734@2x

aiYunS-love commented 6 months ago

![Uploading WX20240515-162923@2x.png…]()

aiYunS-love commented 6 months ago

nacos: config: server-addr: ${encpt.ip}:38848

aiYunS-love commented 6 months ago

encpt: ip: ENC(LDhWy5HYSN5OtWL25iAB3APJ+OTACf/P)

KomachiSion commented 5 months ago

和nacos无关, bean的加载顺序是应用程序和spring控制的, 如果需要使用解密starter,请自行确保解密starter在配置加载之后执行。

KomachiSion commented 5 months ago

或者有什么方案可以提供,以无侵入的方式确保能够保证解密

aiYunS-love commented 5 months ago

和nacos无关, bean的加载顺序是应用程序和spring控制的, 如果需要使用解密starter,请自行确保解密starter在配置加载之后执行。

你们的机制肯定有问题! 加密方式是通用的三方包jasypt-spring-boot-starter, 都是交给spring管理的,从日志的输出也可以看出, 你们nacos的加载时机早于redis或者rabbitmq等,经过测试只有nacos加密不行, 单独把nacos的换成明文是可以的.

aiYunS-love commented 5 months ago

或者有什么方案可以提供,以无侵入的方式确保能够保证解密

我感觉你们像是用了一些侵入式的方式 强制优先加载了你们的内容

KomachiSion commented 5 months ago

那可以帮助社区排查一下问题,以更好的兼容这个场景。

一般来说,配置的加载肯定要早于其他的starter,比如redis等,否则redis之类的starter已经完成初始化配置的时候, 配置还没有从nacos中读取,那肯定是有问题的。

aiYunS-love commented 5 months ago

那可以帮助社区排查一下问题,以更好的兼容这个场景。

一般来说,配置的加载肯定要早于其他的starter,比如redis等,否则redis之类的starter已经完成初始化配置的时候, 配置还没有从nacos中读取,那肯定是有问题的。

这样说是有道理的 本身也是管理配置的 优先级高还是有道理的 有空我研究下

KomachiSion commented 5 months ago

issue先关闭了, 如果有结果可以重新提交一个issue说明问题原因,如果能带有修复方案,或者直接向nacos-spring-boot repo提交PR就更好了。