从 AKS 群集访问 Azure 存储 Blob
Accessing Azure Storage Blob from an AKS cluster
一点背景信息:我必须将一个项目从我目前使用 ECS 的 AWS 迁移到 Azure,我将在其中使用 AKS,因为他们的 ACS(等效的 ECS)已被弃用。
这是一个常规的 Django 应用程序,其配置变量是从托管在私有 S3 存储桶上的 server-config.json
获取的,EC2 实例具有 S3FullAccess
、[=23= 的正确角色]
我一直在研究重现相同的行为,但用 Azure Blob Storage
代替,但没有取得任何成功:-(。
我尝试使用 Service Principal
概念并将其添加到具有 Storage Blob Data Owner
角色的 AKS Cluster
,但这似乎不起作用。总的来说,这是一次非常令人沮丧的经历——也许我只是很难掌握使用 permissions/scopes 的正确方法。 AKS Cluster
创建自己的资源组这一事实是深不可测的 - 但我也尝试将策略附加到它,但无济于事。然后我转向 Microsoft 指示的解决方案。
我设法通过他们指定的解决方案 aad-pod-identity
将我的 AKS pods 与正确的 User Managed Identity
绑定,但我觉得我遗漏了一些东西。我将 Storage Blob Data Owner/Contributor
分配给身份,但是,当我输入 pods 并尝试访问 Blob(使用 python sdk)时,我仍然收到 resource not found
消息。
我想要实现的目标是否可行?或者我是否必须更改为使用 Azure Keyvault
/类似内容的解决方案?
首先,您可以使用 AKS Engine,它现在或多或少是 Kubernetes 的 ACS。
至于对 blob 存储的访问,你不必使用托管服务身份,你可以只使用帐户 name\key(这有点不安全,但更不容易出错并且更多示例存在 )。您收到 resource not found
错误的事实很可能意味着您的身份验证部分没问题,您只是无权访问该资源,根据 this 存储 blob 贡献者如果您在适当的位置分配它应该没问题范围。要使其 100% 正常工作,只需在订阅级别授予您的身份贡献者访问权限,这样就可以保证正常工作。
我找到了一个使用 python 和 MSI (here) 的例子。您应该从那里开始(并授予您的身份贡献者访问权限)并验证您可以列出资源组。当它起作用时,使读取 blob 起作用应该是微不足道的。
一点背景信息:我必须将一个项目从我目前使用 ECS 的 AWS 迁移到 Azure,我将在其中使用 AKS,因为他们的 ACS(等效的 ECS)已被弃用。
这是一个常规的 Django 应用程序,其配置变量是从托管在私有 S3 存储桶上的 server-config.json
获取的,EC2 实例具有 S3FullAccess
、[=23= 的正确角色]
我一直在研究重现相同的行为,但用 Azure Blob Storage
代替,但没有取得任何成功:-(。
我尝试使用 Service Principal
概念并将其添加到具有 Storage Blob Data Owner
角色的 AKS Cluster
,但这似乎不起作用。总的来说,这是一次非常令人沮丧的经历——也许我只是很难掌握使用 permissions/scopes 的正确方法。 AKS Cluster
创建自己的资源组这一事实是深不可测的 - 但我也尝试将策略附加到它,但无济于事。然后我转向 Microsoft 指示的解决方案。
我设法通过他们指定的解决方案 aad-pod-identity
将我的 AKS pods 与正确的 User Managed Identity
绑定,但我觉得我遗漏了一些东西。我将 Storage Blob Data Owner/Contributor
分配给身份,但是,当我输入 pods 并尝试访问 Blob(使用 python sdk)时,我仍然收到 resource not found
消息。
我想要实现的目标是否可行?或者我是否必须更改为使用 Azure Keyvault
/类似内容的解决方案?
首先,您可以使用 AKS Engine,它现在或多或少是 Kubernetes 的 ACS。
至于对 blob 存储的访问,你不必使用托管服务身份,你可以只使用帐户 name\key(这有点不安全,但更不容易出错并且更多示例存在 )。您收到 resource not found
错误的事实很可能意味着您的身份验证部分没问题,您只是无权访问该资源,根据 this 存储 blob 贡献者如果您在适当的位置分配它应该没问题范围。要使其 100% 正常工作,只需在订阅级别授予您的身份贡献者访问权限,这样就可以保证正常工作。
我找到了一个使用 python 和 MSI (here) 的例子。您应该从那里开始(并授予您的身份贡献者访问权限)并验证您可以列出资源组。当它起作用时,使读取 blob 起作用应该是微不足道的。