0

我正在尝试将部署到 EKS 中同一工作节点的 2 个 pod 关联到不同服务帐户的功能。以下是步骤

  • 每个服务帐户都与不同的角色相关联,一个可以访问 SQS,另一个则不能访问。
  • 使用 eksutil 将 OIDC 提供程序与集群相关联,并在 kubernetes 中创建了带有服务帐户的 iamserviceaccount,并使用附加的访问 SQS 的策略创建了角色(由 eksctl create iamserviceaccount 提供的带有 IAM 角色的服务帐户的隐式注释)。

但是,当我尝试启动具有与具有 SQS 访问权限的角色绑定的服务帐户的 pod 时,我的 SQS 访问被拒绝,但是如果我将 SQS 权限添加到工作节点实例角色,它工作正常。

我是否遗漏了任何步骤,我的理解是否正确?

4

1 回答 1

2

因此,要让 IRSA 工作,需要做一些事情:

  1. 按照此处的说明,必须有一个与集群关联的 OIDC 提供程序。
  2. IAM 角色必须与 OIDC 提供商建立信任关系,如此处的 AWS CLI 示例中所定义
  3. 服务帐户必须使用匹配的eks.amazonaws.com/role-arn.
  4. 根据API 文档, pod 必须serviceAccountName在其中使用 a 指定适当的服务帐户。spec
  5. 应用的 SDK 需要支持AssumeRoleWithWebIdentityAPI 调用。奇怪的是,aws-sdk-go-v2SDK 目前根本不支持它(“旧”支持aws-sdk-go)。

它与节点角色一起工作,因为没有满足上述要求之一,这意味着凭证链“落入”底层节点角色。

于 2019-12-02T08:31:55.140 回答