我正在尝试将java spring应用程序Docker化,并将其部署到Azure kubernetes中。此应用程序已连接到数据库,当前它从配置文件中读取连接字符串。
由于此应用程序将被Docker化并部署在AKS上,因此我希望使用托管身份从Azure密钥库读取连接字符串。
有没有演示上述场景的示例?
发布于 2020-09-11 10:13:22
您可以将连接存储为密钥库密钥,然后使用java sdk获取它。
确保你有added your MSI(managed identity) to the keyvault access policy,然后使用下面的代码。
它使用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();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 client library for Java - Version 4.2.0
https://stackoverflow.com/questions/63829022
复制相似问题