私は次のことを達成しようとしています:
Azure ユーザー割り当てマネージド ID (UAMI) を使用して、スプリング ブート アプリケーション (AKS 内にデプロイ) からコンテナー (Azure にデプロイ) への認証を行うことができます
スタック: openjdk 8 、スプリング ブート 2.5.4 、spring-cloud-starter-vault-config 3.0.3、AKS
Azureにhashicorpボールトがインストールされています。以下のドキュメントは、この場合 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 のためにローカル エンド ツー エンドでこれをテストすることはできません。ユーザー割り当てマネージド ID (UAMI) を使用しています。
しかし、これを Azure Kubernetes クラスターにデプロイすると、次のエラーが発生し、ボールトに接続しようとさえしません。トークンとしての認証を期待しているようです:
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 ログはまったく異なるため、これは意味がありません。local と AKS の両方の JKS にルート証明書があります。
誰かがこれについて私を助けてくれませんか。いろいろ調べてみましたがどれも古いようです。