Spring Cloud Config不获取配置文件



我刚刚将我们的spring-boot项目从boot升级到v2.6.2,并从spring-cloud更新到2021.0.0。

现在,我的远程配置获取功能都不起作用,应用程序也无法获取正确的属性文件

[min]INFO o.s.c.c.ConfigServicePropertySourceLocator-正在从以下位置的服务器获取配置:http://localhost:8080

[min]WARN o.s.c.c.ConfigServicePropertySourceLocator-找不到PropertySource:无法提取响应:找不到适合响应类型[class org.springframework.cloud.config.environment.environment]和内容类型[text/html;charset=UTF-8]的HttpMessageConverter

[min]INFO eu.hermes.esb.cloud.Application-未设置活动配置文件,回退到默认配置文件:默认

[min]INFO o.s.b.c.config.ConfigDataLoader-正在从以下位置的服务器获取配置:http://localhost:8080

[min]INFO o.s.d.r.c.RepositoryConfigurationDelegate-在DEFAULT模式下引导Spring Data JPA存储库。**

我们使用基于gitrepo的springcloud-config,gitrepo中填充了以下结构中的配置yml文件。

  • app-one-dev.yml
  • app-on-prod.yml
  • app-two-dev.yml
  • app-two-prod.yml等等

我试着按照一些答案的建议将这两个依赖项添加到客户端服务中,但没有成功。

  1. spring-cloud-starter配置
  2. spring cloud启动器引导程序

这是我的配置服务yml:

spring.cloud.config.server:
git:
uri: https://bitbucket-prod.doa.otc.hlg.de/scm/inp-cloud/esb-spring-boot-config.git
username: foo
password: bar
force-pull: true
spring.security:
basic:
enabled: true
user:
name: inp
password: hermes

我的应用程序运行时具有以下属性:

-Dspring.config.import=configserver:http://inp:hermes@localhost:8080
-Dspring.cloud.config.name=esb-config-service
-Dspring.cloud.config.username=foo
-Dspring.cloud.config.username=bar
-Dspring.application.name=app-one
-Dspring.profiles.active=dev,console,gelf

我们的服务在OKD中的Kubernetes上运行。但我在windows机器上本地复制了同样的情况,所以我不认为这是特定于环境的。

问题很可能是客户端配置中的凭据错误,即用户名和密码。

根据所提供的信息很难说是肯定的。特别是,由于问题中提供的凭据可能是匿名的。但请注意,在给定的配置片段中,您设置了两次用户名,而不是密码。此外,服务器配置的代码段没有正确缩进。客户端的属性可能应该包含

-Dspring.config.import=configserver:http://localhost:8080
-Dspring.cloud.config.username=inp
-Dspring.cloud.config.username=hermes

Spring Boot对Spring Security的自动配置与Spring Cloud Config Server并不完美匹配。问题是,当配置客户端的默认Accept Header使用错误凭据发送时,服务器会转发到登录页面。这就是为什么配置客户端会收到一个媒体类型为HTML的响应体,而客户端对此并不理解。

请仔细检查配置中的凭据。如果你不需要的话,防止将来出现这个问题的最直接的方法是在配置服务器中禁用登录页面。然后你会在客户端中收到一条关于坏凭据的清晰日志消息。

相关内容

  • 没有找到相关文章

最新更新