我已经为我的webapp应用程序配置了ci/cd管道。没有什么特别的。构建并推送docker hub,然后在Azure Kubernetes Service上应用k8s部署。Escherign工作finde,但我直接将env变量存储在deployment.yaml
文件中,这是不安全的,因为有db连接字符串。配置Azure管道我可以使用Azure Key Vault,这不是问题,但我如何传递这些密钥-对我的Kubernetes部署有什么价值?
基本上在我的deployment.yaml
中,我喜欢这样的东西:
env:
- name: ASPNETCORE_ENVIRONMENT
value: ${Development_variableFromAzure}
- name: ASPNETCORE_URLS
value: ${URLS_variableFromAzure}
字符串
1条答案
按热度按时间rfbsl7qr1#
若要将Azure Key Vault中的环境变量安全地注入到Kubernetes部署中,您可以在AKS群集中启用Secrets Store CSI Driver的Azure Key Vault提供程序作为附加组件。
首先,使用Azure CLI为您的AKS群集启用Azure Key Vault提供程序加载项:
字符串
的数据
此命令将为AKS群集中的Secrets Store CSI驱动程序设置Azure Key Vault提供程序,并创建用户分配的托管身份,以便使用Azure Key Vault进行身份验证。接下来,为加载项创建的托管身份分配必要的权限,以访问Azure Key Vault:
型
的
在Kubernetes集群中定义一个
SecretProviderClass
资源,以引用Azure Key Vault和特定的secret。型
修改
deployment.yaml
以使用SecretProviderClass并将secret作为环境变量引用型
![](https://i.imgur.com/NWYwU2k.png)
应用程序现在可以像往常一样访问这些环境变量。机密将从Azure Key Vault注入到Pod中,并且不会在部署清单中公开。
的
只要确保你的Azure Pipeline is configured to have the necessary permissions to access the Azure Key Vault。
参考文件:
Use Azure KV in your pipeline的
Use Azure KV for Secret Store CSI Driver in AKS