gpt4 book ai didi

azure - 使用托管标识将 Azure Key Vault 与 Azure Kubernetes 服务集成

转载 作者:行者123 更新时间:2023-12-02 07:43:13 36 4
gpt4 key购买 nike

我正在 Azure 中设置 Keyvault 与 k8s 集成。我可以使用托管身份在 Azure 中使用 csi 驱动程序挂载包含 secret 的卷。我可以通过 exec-ing 到 pod 并 cat-ing out secret 来验证 secret 是否已安装。但是,现在我想将 secret 公开为环境变量,但我不清楚该怎么做。下面是我部署的 SecretProviderClassPod

spc-keyvault.yaml:

apiVersion: secrets-store.csi.x-k8s.io/v1alpha1
kind: SecretProviderClass
metadata:
name: spc-keyvault
spec:
provider: azure
secretObjects:
- secretName: foobar-secret
data:
- key: foobar
objectName: foobar
type: Opaque
parameters:
keyvaultName: "$keyvault"
usePodIdentity: "true"
useVMManagedIdentity: "false"
userAssignedIdentityID: ""
cloudName: ""
objects: |
array:
- |
objectName: foobar
objectType: secret
objectVersion: ""
resourceGroup: "$resourceGroup"
subscriptionId: "$subId"
tenantId: "$tenantId"

pod.yaml:

apiVersion: v1
kind: Pod
metadata:
name: inject-secrets-from-akv
labels:
aadpodidbinding: azure-pod-identity-binding-selector
spec:
containers:
- name: nginx
image: nginx
env:
- name: SECRET
valueFrom:
secretKeyRef:
name: foobar-secret
key: foobar
volumeMounts:
- name: secrets-store-inline
mountPath: "/mnt/secrets-store"
readOnly: true
volumes:
- name: secrets-store-inline
csi:
driver: secrets-store.csi.k8s.io
readOnly: true
volumeAttributes:
secretProviderClass: spc-keyvault

这是我部署 Pod list 时出现的错误:

Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning Failed 58m (x227 over 108m) kubelet Error: secret "foobar-secret" not found
Normal Pulling 3m51s (x470 over 108m) kubelet Pulling image "nginx"

错误非常明显,没有名为:foobar-secret 的 secret 。我认为 csi 驱动程序会自动创建所需的 secret 。因此,经过一些研究和挖掘文档和源代码后,我发现了在 pod yaml 中添加 nodePublishSecretRef 的建议。然后,您需要使用 aad 客户端 ID 和客户端 key 设置 nodePublishSecretRef。[1, 2] 但是,由于我使用托管身份,我不确定如何执行此操作。

有人使用托管身份来完成这项工作并可以提供任何见解吗?或者我是否需要创建一个启动脚本(通过 configmap?)来将卷安装填充为 env。变量。

  1. https://azure.github.io/secrets-store-csi-driver-provider-azure/configurations/identity-access-modes/service-principal-mode/
  2. https://medium.com/swlh/integrate-azure-key-vault-with-azure-kubernetes-service-1a8740429bea

最佳答案

经过更多挖掘后,我发现 helm 图表中的这一点让 csi 驱动程序创建 k8s secret :

secrets-store-csi-driver.syncSecret.enabled = true

现在我有了 k8s 的 secret 。我想我会分享给其他想要此功能的人。

关于azure - 使用托管标识将 Azure Key Vault 与 Azure Kubernetes 服务集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68686822/

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