我有一些在 AKS 集群中运行的 pod,它们正在尝试访问 AWS s3 存储桶(由于当前的架构,使用 azure blob 不是一个选项)。我已阅读过有关 Kubernetes 服务帐户的 IAM 角色 的内容,但其中提到了 EKS clsuters。这里有什么办法吗?我们可以在 AKS 中创建一个具有 IAM 角色的服务帐户来访问 AWS 中的 s3 存储桶(可能在不同的位置)
可以在不涉及 Cognito 的情况下解决问题。您需要设置以下内容:
所以它的工作原理如下:当您在 AWS 中创建 OIDC 提供商时,您将 AKS 集群颁发者 URL 放在那里。然后您只需创建一个具有如下信任策略的角色:
{ "版本": "2012-10-17", “陈述”: [ { "效果": "允许", “主要的”: { “联合”:“arn:aws:iam :: MYACCOUNT:oidc-provider/southcentralus.oic.prod-aks.azure.com/something/something/” }, "Action": "sts:AssumeRoleWithWebIdentity", “健康)状况”: { “字符串等于”:{ “southcentralus.oic.prod-aks.azure.com/something/something/:sub”:“系统:serviceaccount:AKS_NAMESPACE:AKS_SERVICE_ACCOUNT” } } } ] }
因此“Federated”和“StringEquals”包含 AKS OIDC 颁发者 URL。
测试一下:
如果 POD 的工作负载身份注释工作正常 - 变异 webhook 将在 pod 内注入一个令牌(您可以使用“env | grep azure -i”找到路径)
然后只需安装 AWS CLI,并使用此令牌运行 Should-role-with-web-identity