gpt4 book ai didi

azure - 使用 CSI 驱动程序获取 secret 后,未在 AKS 中创建 secret

转载 作者:行者123 更新时间:2023-12-02 16:03:10 26 4
gpt4 key购买 nike

通过使用 https://learn.microsoft.com/en-us/azure/aks/csi-secrets-store-nginx-tls 的引用在本文档中,我尝试将 TLS secret 从 AKV 获取到 AKS pod。最初,我使用用户分配的托管身份创建并配置了CSI 驱动程序配置

我已执行以下步骤:

  • 创建具有 1 个节点池的 AKS 集群。
  • 创建 AKV。
  • 创建了用户分配的托管身份并将其分配给节点池,即为 AKS 创建的 VMSS。
  • 在 AKS 的“kube-system”命名空间中安装了 CSI 驱动程序 helm 图表。并完成了执行此操作的所有要求。
  • 已创建 TLS 证书和 key 。
  • 通过使用 TLS 证书和 key ,创建了 .pfx 文件。
  • 上传了名为“ingresscert”的 AKV 证书中的 .pfx 文件。
  • 在 AKS 中创建了名为“ingress-test”的新命名空间。
  • 在该命名空间中部署的 SecretProviderClass 如下:
apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
name: azure-tls
spec:
provider: azure
secretObjects: # secretObjects defines the desired state of synced K8s secret objects
- secretName: ingress-tls-csi
type: kubernetes.io/tls
data:
- objectName: ingresscert
key: tls.key
- objectName: ingresscert
key: tls.crt
parameters:
usePodIdentity: "false"
useVMManagedIdentity: "true"
userAssignedIdentityID: "7*******-****-****-****-***********1"
keyvaultName: "*****-*****-kv" # the name of the AKV instance
objects: |
array:
- |
objectName: ingresscert
objectType: secret
tenantId: "e*******-****-****-****-***********f" # the tenant ID of the AKV instance
  • 在同一命名空间中部署 nginx-ingress-controller helm 图表,其中证书与应用程序绑定(bind)。
  • 已部署的 Busy Box 部署如下:
apiVersion: apps/v1
kind: Deployment
metadata:
name: busybox-one
labels:
app: busybox-one
spec:
replicas: 1
selector:
matchLabels:
app: busybox-one
template:
metadata:
labels:
app: busybox-one
spec:
containers:
- name: busybox
image: k8s.gcr.io/e2e-test-images/busybox:1.29-1
command:
- "/bin/sleep"
- "10000"
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: "azure-tls"
---
apiVersion: v1
kind: Service
metadata:
name: busybox-one
spec:
type: ClusterIP
ports:
- port: 80
selector:
app: busybox-one
  • 使用命令检查 secret 是否已创建
kubectl get secret -n <namespaceName>

这里需要注意的一件事是,如果我将 shell 附加到 busy box pod 并转到我提供的用于挂载 secret 的挂载路径,我会看到 secret 已成功获取到那里。但这些 secret 并没有显示在 AKS 的 secret 列表中。

我已对所有 AKS、KV 和 list 文件进行了故障排除,但没有找到任何内容。如果我错过了什么或者有人有解决方案,请告诉我。

提前致谢..!!!

最佳答案

我将此添加为新答案,因为评论中的格式很糟糕:

当您使用 Helm Chart 时,您必须在 Helm Chart 的 values.yaml 中激活 secret 同步:

secrets-store-csi-driver:
syncSecret:
enabled: true

我仍然建议使用 csi-secrets-store-provider-azure 作为 AKS 插件,而不是 Helm-Chart

关于azure - 使用 CSI 驱动程序获取 secret 后,未在 AKS 中创建 secret ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70154936/

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