【发布时间】:2021-05-17 07:20:50
【问题描述】:
我有一个 Spring Boot Admin 应用程序,它使用 Kubernetes 服务发现来获取 Spring Boot 客户端应用程序。
spring:
cloud:
kubernetes:
discovery:
all-namespaces: true
service-labels:
springbootadmin: true
reload:
enabled: true
period: 60s
strategy: refresh
如果没有安全的执行器端点,这可以正常工作。
但是一旦客户端执行器端点受到基本身份验证的保护,这将不再起作用。 Spring Boot Admin Documentation 描述了如何将身份验证数据添加到 Spring Boot Admin Server 位,它没有描述通过 Kubernetes 发现服务时如何提供此信息。
我已经尝试过这些配置。但它们不起作用:
-
Spring Boot Admin Docs:
spring.boot.admin.instance-auth.default-user-name+password -
Spring Boot Admin Tutorial
spring.boot.admin.client.instance.metadata.user.name+password
我还找到了一个描述如何configure the credentials in the Kubernetes annotations 的答案。这可行,但我更愿意在 Spring Boot Admin 配置(我可以在其中使用 Secrets)中配置凭据,而不是将 Kubernetes 配置中的每个服务单独配置为不安全标签。
我认为我必须在服务发现元数据中注入凭据。但是怎么做呢?
编辑
我检查了服务发现,没有发现可以提供的身份验证配置选项:
- 类 KubernetesDiscoveryProperties.Metadata
- 类 de.codecentric.boot.admin.server.cloud.discovery.DefaultServiceInstanceConverter
【问题讨论】:
-
“我想保护客户端执行器端点”是什么意思。端点位于服务器端。您想知道如何保护执行器端点吗?或者您想知道如何配置客户端以访问受某些凭据保护的执行器端点?
-
@mentallurg 我想知道 Spring Boot Admin 如何访问已经受保护的端点。我也更新了我的问题。
标签: spring-boot spring-boot-admin