我希望有人能帮助我。
我在 azure 中有一个基本配置,其中包含 Web 应用程序和数据库。
网络应用程序能够使用托管身份连接到数据库,并且这里的一切都工作正常,但我想使用 aks 尝试相同的配置。
我部署了 AKS 并启用了托管身份。我将一个 pod 部署到集群中,如下所示:
apiVersion: apps/v1
kind: Deployment
metadata:
name: webapp-deployment
labels:
app: webapp
spec:
replicas: 1
selector:
matchLabels:
app: webapp
template:
metadata:
labels:
app: webapp
spec:
containers:
- name: webapp
image: dockerimage
ports:
- containerPort: 80
env:
- name: "ConnectionStrings__MyDbConnection"
value: "Server=server-url; Authentication=Active Directory Managed Identity; Database=database-name"
- name: "ASPNETCORE_ENVIRONMENT"
value: "Development"
securityContext:
allowPrivilegeEscalation: false
restartPolicy: Always
部署过程非常顺利,一切正常。但这就是我遇到问题的地方,无法找出最佳解决方案。
env block 是纯文本形式,我想通过将它们存储在 keyvault 中来保护这些环境变量。
我一直在浏览不同的论坛和文档,这些选项开始让我感到困惑。在这种情况下有什么好的方法可以实现安全吗?
在我的网络应用程序中,在配置下我启用了托管身份,使用它我可以访问 keystore 中的 secret 并检索它们。我可以使用 AKS 做同样的事情吗?
非常感谢您提供或提供的任何帮助。
如果我的问题不是 100% 清楚,请告诉我
最佳答案
- Upgrade an existing AKS cluster with Azure Key Vault Provider for Secrets Store CSI Driver support
- Use a user-assigned managed identity to access KV
- Set an environment variable to reference Kubernetes secrets
您需要阅读一些内容,但过程很简单。 KV key 将存储在 k8s key 中,您可以在 pods 环境变量中引用该 key 。
关于azure - Aks pods 环境变量 keyvault,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75086432/