使用Azure身份验证的Spring Cloud配置库:无法读取AKS上的配置 [英] Spring cloud config vault with azure authentication : failed to read config on AKS
问题描述
我正在努力实现以下目标:
能够使用Azure用户分配的托管身份(UAMI)从Spring Boot应用程序(部署在AKS中)验证到存储库(部署在Azure上)
Stack:OpenJDK 8、Spring Boot 2.5.4、Spring-Cloud-starter-vault-config 3.0.3、AKS
我在Azure上安装了hashicorp vault。下面的文档建议我在这种情况下可以使用UAMI来验证到存储库。 参考https://cloud.spring.io/spring-cloud-vault/reference/html/
Spring Boot应用程序配置:
应用程序.yml:
server:
port: 8090
spring:
application:
name: my application-service
cloud:
config:
import: vault://secret/somepath_to_secrets
vault:
uri: https://my-vault-uri
scheme: https
namespace: myapp
authentication: AZURE_MSI
azure-msi:
role: pod_identity_role_name
这在我的本地运行得不错,因为日志显示它试图命中上面提到的存储库URI并建立连接,当然,由于Azure MSI,我不能在本地端到端测试这一点。我正在使用用户分配的托管标识(UAMI)。
但当我将其部署到Azure Kubernetes集群时,它给出了以下错误,甚至没有尝试连接到vault。似乎需要作为令牌进行身份验证:
Error creating bean with name 'clientAuthentication' defined in class path resource
caused by java.lang.IllegalArgumentException: Token(spring.cloud.vault.token) must not be empty
这对我来说没有意义,因为本地日志和AKS日志是完全不同的。我在本地和AK上的JK中都有根证书。
谁能帮帮我这个忙。我看了各种文件,但似乎都是旧的。
推荐答案
根据下面的文档Integrating Hashicorp Vault with Azure AKS using Azure POD Identity - Arctiq,您可以将您的Hashicorp文件库与AKS集成。您可以从AKS生成身份验证令牌以对Hashicorp保管库进行身份验证。
Azure AD Pod标识允许您将Pod绑定到在您的群集外部管理的Azure标识。可以将保管库配置为使用Azure AD作为身份提供者,这将使AKS中的容器应用程序能够在不修改任何代码的情况下使用保管库中的机密。在您的AK上启用Azure AD Pod标识。
创建Azure标识。
将Azure标识部署到AKS。
将Hashicorp存储库部署到AKS
验证Azure标识绑定
从Pod会话内部,从Azure元数据获取令牌 服务,然后使用JWT令牌向存储库进行身份验证
这篇关于使用Azure身份验证的Spring Cloud配置库:无法读取AKS上的配置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!