使用OIDC的Kubernetes服务帐户角色
我正在尝试将部署到EKS中同一工作节点的两个POD与不同的服务帐户相关联的功能。以下是步骤使用OIDC的Kubernetes服务帐户角色,kubernetes,openid-connect,kubernetes-pod,amazon-eks,eksctl,Kubernetes,Openid Connect,Kubernetes Pod,Amazon Eks,Eksctl,我正在尝试将部署到EKS中同一工作节点的两个POD与不同的服务帐户相关联的功能。以下是步骤 每个服务帐户都与一个不同的角色关联,一个可以访问SQS,另一个不能访问SQS 使用eksutil将OIDC提供程序与集群相关联,还使用kubernetes中的服务帐户创建了iamserviceaccount,并使用附加的访问SQS的策略创建了角色(使用eksctl create iamserviceaccount提供的IAM角色隐式注释服务帐户) 但是,当我尝试启动服务帐户绑定到具有SQS访问权限的角
- 每个服务帐户都与一个不同的角色关联,一个可以访问SQS,另一个不能访问SQS
- 使用eksutil将OIDC提供程序与集群相关联,还使用kubernetes中的服务帐户创建了iamserviceaccount,并使用附加的访问SQS的策略创建了角色(使用eksctl create iamserviceaccount提供的IAM角色隐式注释服务帐户)
我是否遗漏了任何步骤,我的理解是否正确?因此,要让IRSA发挥作用,需要做一些事情:
eks.amazonaws.com/role arn
对服务帐户进行注释规范
中指定相应的服务帐户,并按照AssumeRoleWithWebIdentity
API调用。奇怪的是,aws-sdk-go-v2
sdk目前根本不支持它(“旧的”aws-sdk-go
支持它)它与节点角色一起工作,因为上面的一个要求没有得到满足,这意味着凭证链“通过”到基础节点角色。@ashsr我认为第1点由ekstcl utils associate oidc api调用负责,第2点和第3点由eksctl create iamserviceaccount负责。与第4点一样,我使用java SDK手动验证您正在使用的所有步骤。确保您的pod指定了
serviceAccountName
。确保您的JavaSDK是正确的。这确实是JavaSDK的问题。我使用的是1.11.573。升级版本后它就可以工作了。@asthasr谢谢。我无法使用eksctl创建iamserviceaccount,因为eks群集不是使用eksctl创建的。只有你的帖子,特别是第3点才起作用。我在任何地方都找不到那个信息