You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure AKS使用托管身份访问Key Vault卷挂载失败排查

问题排查结论

核心错误原因

你遇到的挂载失败核心报错是failed to get credentials, nodePublishSecretRef secret is not set,根本原因是你使用用户分配托管身份访问Key Vault的前提条件不满足,配置存在多处缺失:

  • 你的AKS集群未启用Pod Identity功能,从az aks show输出可见podIdentityProfile为null,CSI Secrets Store驱动无法获取你指定的用户托管身份凭证
  • 你没有将创建的用户托管身份和Pod做绑定,也没有给Pod添加对应的身份绑定标签
  • SecretProviderClass的机密配置存在逻辑错误,你将username和password两个别名都映射到了Key Vault中同一个名为test的机密,不符合常规的用户名密码分开存储的配置逻辑

修复步骤

前置检查

首先确认你已在AKS集群中部署了Azure Secrets Store CSI驱动,未部署的话执行以下命令安装:

helm repo add azure-secrets-store-csi-driver https://azure.github.io/secrets-store-csi-driver-provider-azure/charts
helm repo update
helm install csi-secrets-store-provider-azure azure-secrets-store-csi-driver/csi-secrets-store-provider-azure --namespace kube-system

分步配置

  1. 启用AKS集群的Pod Identity功能,执行命令:
az aks update --name SonarQubeCluster --resource-group RG --enable-pod-identity

等待集群配置更新完成。

  1. 将你创建的用户托管身份添加为AKS的Pod身份,替换命令中占位符为你托管身份的完整资源ID:
az aks pod-identity add --resource-group RG --cluster-name SonarQubeCluster --namespace default --name az-kv-identity --identity-resource-id <你的用户托管身份完整资源ID>
  1. 修改Deployment的Pod模板配置,添加身份绑定标签,让Pod能匹配到上面创建的Pod身份:
template:
  metadata:
    labels:
      app: sonarqube
      aadpodidbinding: az-kv-identity # 新增这行标签
  1. 修正SecretProviderClass的机密映射配置,将objectName替换为你Key Vault中实际存储用户名和密码的机密名称:
objects:  |
  array:
    - |
      objectName: <Key Vault中存用户名的机密名称>
      objectType: secret
      objectAlias: username
      objectVersion: "" 
    - |
      objectName: <Key Vault中存密码的机密名称>
      objectType: secret 
      objectAlias: password  
      objectVersion: ""
  1. 确认Key Vault访问策略配置,给你创建的用户托管身份授予**机密获取(Get)和机密列表(List)**权限,无需额外配置Azure角色分配,用访问策略即可满足权限要求。

  2. 重新部署修改后的SecretProviderClass和Deployment,删除旧的故障Pod等待重建即可。


内容的提问来源于stack exchange,提问作者X T

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 07:45:01