我正在尝试将java spring应用程序Dockerize并将其部署在Azure kubernetes中。此应用程序已连接到数据库,并且当前它从配置文件中读取连接字符串。
由于此应用程序将被Dockerized并部署在AKS上,我想使用托管身份从Azure密钥保管库读取连接字符串。
是否有任何可用的样本来证明上述情况?
您可以将连接存储为密钥库机密,然后使用javasdk获取它。
请确保已将MSI(托管身份(添加到密钥保管库访问策略中,然后使用以下代码。
1.创建秘密客户端
它使用DefaultAzureCredential
进行身份验证,不设置环境变量,然后它将使用您的MSI进行自动身份验证,您也可以使用ManagedIdentityCredentialBuilder
而不是DefaultAzureCredentialBuilder
,指定MSI的clientId
。
import com.azure.identity.DefaultAzureCredentialBuilder;
import com.azure.security.keyvault.secrets.SecretClient;
import com.azure.security.keyvault.secrets.SecretClientBuilder;
SecretClient secretClient = new SecretClientBuilder()
.vaultUrl("<your-key-vault-url>")
.credential(new DefaultAzureCredentialBuilder().build())
.buildClient();
2.检索一个秘密
KeyVaultSecret secret = secretClient.getSecret("<secret-name>");
System.out.printf("Retrieved secret with name "%s" and value "%s"%n", secret.getName(), secret.getValue());
有关更多详细信息,请参阅-Azure Key Vault Secret Java客户端库-4.2.0版