使用托管标识进行 AKS 文件共享持久挂载 - 密钥轮换后出现问题

Posted

技术标签:

【中文标题】使用托管标识进行 AKS 文件共享持久挂载 - 密钥轮换后出现问题【英文标题】:AKS File Share Persistent Mounting with Managed Identity - Having issue after key Rotation 【发布时间】:2021-11-15 00:17:06 【问题描述】:

使用具有读取器和存储帐户密钥操作员服务角色的集群 UAMI 在 AKS 部署中安装 Azure 文件共享。它已成功挂载在所有 POD 副本中,并且能够从 pod 创建文件/列出 Azure 文件共享的所有文件。但是,它在密钥轮换后不起作用。另外,我尝试创建新的部署、存储类、PVC。尽管如此,在创建 POD 时仍面临权限问题。

第一阶段:(第一次处理)

已创建 AKS 群集、存储文件共享、用户管理的标识。 将 UAMI 分配给集群,并在新的存储范围内提供读取器和存储帐户关键操作员服务角色。 创建了新的自定义存储类、PVC、部署。 结果:所有功能都按预期工作。

第 2 阶段:(失败过程)

在密钥轮换后创建了新部署,因为现有 POD 无法访问 Azure 文件共享。权限问题。 然后,创建了新的存储类/PVC/部署 - 仍然存在相同的权限问题。

错误:

default 13s Warning FailedMount pod/myapp-deploymentkey1-67465fb9df-9xcrz MountVolume.SetUp failed for volume "xx" : mount failed: exit status 32
Mounting command: mount
Mounting arguments: -t cifs -o file_mode=0777,dir_mode=0777,vers=3.0,actimeo=30,mfsymlinks,<masked> //StorageName.file.core.windows.net/sample1 /var/lib/kubelet/pods/xx8/volumes/kubernetes.io~azure-file/pvc-cxx
Output: mount error(13): Permission denied
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
default 13s Warning FailedMount pod/myapp-deploymentkey1-67465fb9df-jwmcc MountVolume.SetUp failed for volume "xx" : mount failed: exit status 32
Mounting command: mount
Mounting arguments: -t cifs -o file_mode=0777,dir_mode=0777,vers=3.0,actimeo=30,mfsymlinks,<masked> //StorageName.file.core.windows.net/sample1 /var/lib/kubelet/pods/xxx/volumes/kubernetes.io~azure-file/pvc-xx
Output: mount error(13): Permission denied

【问题讨论】:

【参考方案1】:

• 您在Kubernetes Pod上挂载文件共享时遇到的错误表示存在通信协议问题,即用于连接Azure文件共享并在密钥轮换后将其挂载到Pod上的通信通道未加密并且连接尝试是从与文件共享所在的 Azure 数据中心不同的位置进行的。

• 此外,请检查存储帐户的“安全传输”所需属性是否已启用,因为如果启用,则任何源自不安全连接的请求都会被拒绝。 Microsoft 建议您始终要求对所有存储帐户进行安全传输。

• 因此,对于此问题,您可以尝试禁用文件共享存储帐户上的“安全传输”属性,因为文件共享将为所有现有 pod 共享,因此,如果具有新密钥轮换的新 pod 部署与检测到用户分配的托管标识,现有的可能与分配的新密钥不兼容,或者可能不会更新。

• 您还可以检查用于现有 Pod 和新部署的 Pod 的 SMB 加密版本。请参考以下链接了解更多信息:-

https://docs.microsoft.com/en-us/answers/questions/560362/aks-file-share-persistent-mounting-with-managed-id.html

https://docs.microsoft.com/en-us/azure/storage/files/storage-troubleshoot-linux-file-connection-problems#mount-error13-permission-denied-when-you-mount-an-azure-file-share

【讨论】:

你好@Kaliranjan,如果我的回答对你有帮助,你可以投票并接受它作为答案(点击答案旁边的复选标记,将其从灰色切换为填充。)。这对其他社区成员可能是有益的。谢谢。

以上是关于使用托管标识进行 AKS 文件共享持久挂载 - 密钥轮换后出现问题的主要内容,如果未能解决你的问题,请参考以下文章

8.Azure文件(文件共享)-NAS(中)

AKS使用Azure Disk实现动态持久化存储(下)

是否可以使用托管标识从 C# 控制台代码连接 Azure 文件共享(存储帐户)

两个托管对象上下文可以共享一个持久存储协调器吗?

停止 AKS(Azure 托管 Kubernetes)中的所有计算

docker数据共享与持久化