Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用OIDC的Kubernetes服务帐户角色_Kubernetes_Openid Connect_Kubernetes Pod_Amazon Eks_Eksctl - Fatal编程技术网

使用OIDC的Kubernetes服务帐户角色

使用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访问权限的角

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

  • 每个服务帐户都与一个不同的角色关联,一个可以访问SQS,另一个不能访问SQS
  • 使用eksutil将OIDC提供程序与集群相关联,还使用kubernetes中的服务帐户创建了iamserviceaccount,并使用附加的访问SQS的策略创建了角色(使用eksctl create iamserviceaccount提供的IAM角色隐式注释服务帐户)
但是,当我尝试启动服务帐户绑定到具有SQS访问权限的角色的pod时,SQS的访问被拒绝,但是如果我将SQS权限添加到工作节点实例角色,则其工作正常


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

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

  • 必须有一个与集群相关联的OIDC提供程序,遵循以下说明
  • IAM角色必须与OIDC提供程序具有信任关系,如AWS CLI示例中所定义
  • 必须使用匹配的
    eks.amazonaws.com/role arn
    对服务帐户进行注释
  • pod必须在其
    规范
    中指定相应的服务帐户,并按照
  • 应用程序的SDK需要支持
    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点才起作用。我在任何地方都找不到那个信息