gpt4 book ai didi

azure - 使用 Secret Store CSI 驱动程序将 AKV 变量导入应用程序

转载 作者:行者123 更新时间:2023-12-03 05:21:51 26 4
gpt4 key购买 nike

按照此处概述的方式更新我的 CSI Secrets Store 驱动程序:

https://learn.microsoft.com/en-us/azure/aks/csi-secrets-store-driver

我之前通过使用 secretObjects 来完成它:

apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
name: aks-akv-secret-provider
spec:
provider: azure
secretObjects:
- secretName: myapp-prod-secrets
type: Opaque
data:
- objectName: SENDGRID-API-KEY
key: SENDGRID_API_KEY
parameters:
usePodIdentity: "true"
keyvaultName: myappakvprod
cloudName: ""
objects: |
array:
- |
objectName: SENDGRID-API-KEY
objectType: secret
objectVersion: ""
tenantId: $tenantId

例如,在 API list 中,我会:

...
env:
- name: SENDGRID_API_KEY
valueFrom:
secretKeyRef:
name: myapp-prod-secrets
key: SENDGRID_API_KEY
volumeMounts:
- name: secrets-store01-inline
mountPath: /mnt/secrets-store
readOnly: true
volumes:
- name: secrets-store01-inline
csi:
driver: secrets-store.csi.k8s.io
readOnly: true
volumeAttributes:
secretProviderClass: aks-akv-secret-provider
...

然后在代码中我会做类似的事情,它会起作用:

EMAIL_KEY = os.environ['SENDGRID_API_KEY']

基本上,它将 AKV key 挂载到 Pod,然后创建 Kubernetes key 环境变量。

但是,文档中的这种方法似乎是事后的想法(“您有时可能......”而不是“您必须”):

https://learn.microsoft.com/en-us/azure/aks/csi-secrets-store-driver#sync-mounted-content-with-a-kubernetes-secret

我将此解释为表明只需将 secret 安装到 Pod 就足够了,并且为它们创建 Kubernetes secret 是无关的。

我的问题是这样的:

如果您只是将 secret 安装到 Pod,如果它们不是环境变量,您应该如何从应用程序代码访问它们?

可以通过以下方式访问它们:

kubectl exec busybox-secrets-store-inline -- cat /mnt/secrets-store/ExampleSecret

所以我想象在 Python、JavaScript 等中,您可以执行类似的命令来读取 secret ,而不是 os.environ['ExampleSecret']。但是,如果您在本地开发中没有以相同的方式安装 secret ,则代码库中就会存在差异。

只是寻求对此的澄清。

最佳答案

如果您只是将 secret 挂载到 Pod,则 secret 将在挂载位置上以文件形式提供

  • 文件名将是 secret 的名称(或您在 secret 提供程序类中指定的别名)
  • 文件的内容将是 secret 值。

要访问和使用代码中的 secret ,您需要读取文件以检索 secret 值。许多框架都内置了将此类结构映射到配置对象的功能,例如在 .NET 中,有 Key-per-file configuration provider

But if you aren't mounting secrets the same way in local development, there's disparity in the code base.

是的,这是正确的,并且对于您在开发和生产中所做的任何不同的事情都是如此。如果您想避免差异,请使用相同的机制通过环境变量或文件向开发和生产中的应用程序提供 secret 值。

关于azure - 使用 Secret Store CSI 驱动程序将 AKV 变量导入应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71520228/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com