使用OIDC的Kubernetes服务帐户角色

时间:2019-12-02 08:12:23

标签: kubernetes openid-connect kubernetes-pod amazon-eks eksctl

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

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

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

我缺少任何步骤吗?我的理解正确吗?

1 个答案:

答案 0 :(得分:0)

因此,要使IRSA正常工作,需要做一些事情:

  1. 必须遵循here的指示,与群集关联的OIDC提供程序。
  2. 如AWS CLI示例here中所定义,IAM角色必须与OIDC提供程序具有信任关系。
  3. 服务帐户必须使用匹配的provider "aws" { profile = "default" #pertains to the default profile included in credentials file region = "us-east-2" version = "~> 2.26.0" } 进行注释。
  4. 根据API docs,广告连播必须在其eks.amazonaws.com/role-arn中具有用serviceAccountName指定的适当服务帐户。
  5. 该应用程序的SDK需要支持spec API调用。奇怪的是,AssumeRoleWithWebIdentity SDK目前根本不支持它(“旧的” aws-sdk-go-v2支持)。

它与节点角色一起工作是因为未满足上述要求之一,这意味着凭据链“落入”了基础节点角色。