使用 OIDC 的 Kubernetes 服务帐户角色

Kubernetes service account role using OIDC

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

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

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

因此,要让 IRSA 发挥作用,需要做一些事情:

  1. 必须有一个与集群关联的 OIDC 提供商,遵循 here
  2. 的说明
  3. IAM 角色必须与 OIDC 提供商建立信任关系,如 AWS CLI 示例中所定义 here
  4. 服务帐户必须用匹配的 eks.amazonaws.com/role-arn 注释。
  5. 根据 API docs.
  6. ,pod 必须在其 spec 中使用 serviceAccountName 指定适当的服务帐户
  7. 应用程序的 SDK 需要支持 AssumeRoleWithWebIdentity API 调用。奇怪的是,aws-sdk-go-v2 SDK 目前根本不支持它("old" aws-sdk-go 支持)。

它正在与节点角色一起工作,因为未满足上述要求之一,这意味着凭证链 "falls through" 到基础节点角色。