Spring Cloud Config 不获取配置文件

问题描述 投票:0回答:1

我刚刚将我们的 Spring Boot 项目从 boot 升级到 v2.6.2,从 Spring Cloud 升级到 2021.0.0。

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

[主要]信息 o.s.c.c.c.ConfigServicePropertySourceLocator - 从服务器获取配置:http://localhost:8080

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

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

[主要]信息 o.s.b.c.config.ConfigDataLoader - 从服务器获取配置:http://localhost:8080

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

我们使用基于 git repo 的 Spring Cloud 配置,其中包含以下结构的配置 yml 文件。

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

我尝试按照一些答案的建议将这两个依赖项添加到客户端服务,但没有任何效果。

  1. spring-cloud-starter-config
  2. spring-cloud-starter-bootstrap

这是我的配置服务 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 计算机上本地复制了相同的情况,因此我认为这不是特定于环境的。

spring-boot spring-cloud java-11 spring-cloud-config
1个回答
0
投票

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

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

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

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

请仔细检查您的配置中的凭据。防止将来出现问题的最直接方法是在配置服务器中禁用登录页面(如果不需要)。然后,您会在客户端中收到一条明确的日志消息,表明凭据错误。

© www.soinside.com 2019 - 2024. All rights reserved.