1

我在使用 Kubernetes 服务帐户授予对 spring 配置服务器的 codecommit 存储库的访问权限时遇到了问题。

当 AWSCodeCommitReadOnly 被授予 EKS cluster.worker-node 角色时,配置服务器能够成功获取属性,但是使用服务帐户复制它会导致配置服务器抛出以下错误:

Cannot clone or checkout repository: https://git-codecommit.eu-west-1.amazonaws.com/v1/repos/config-server-properties

已使用 CodeCommit 策略创建了一个单独的 IAM 角色,并将其附加到带有注释的服务账户:

Annotations:         eks.amazonaws.com/role-arn: arn:aws:iam::accountnum:role/test-pod-iam-permissions

iam 角色具有 eks 集群的受信任实体和以下条件:

system:serviceaccount:namespace:test-pod-iam-permissions

我们还创建了一个集群角色,它应该可以访问所有动词/资源:

Labels:       <none>
Annotations:  <none>
PolicyRule:
  Resources  Non-Resource URLs  Resource Names  Verbs
  ---------  -----------------  --------------  -----
  *          []                 []              [*]

和相关的绑定:

Name:         iam-permissions-binding
Labels:       <none>
Annotations:  <none>
Role:
  Kind:  ClusterRole
  Name:  iam-permissions
Subjects:
  Kind            Name                      Namespace
  ----            ----                      ---------
  ServiceAccount  test-pod-iam-permissions  namespace

按照此文档https://docs.aws.amazon.com/eks/latest/userguide/specify-service-account-role.html,我们似乎已经勾选了所有框,因此我们不确定可能缺少什么。

部署添加了服务帐户,当我们执行到 pod 中时,它会穿上 IAM 角色 ARN:

$ kubectl exec -n namespace config-service-pod env | grep AWS
AWS_DEFAULT_REGION=eu-west-1
AWS_ROLE_ARN=arn:aws:iam::accountnum:role/test-pod-iam-permissions
AWS_REGION=eu-west-1
AWS_WEB_IDENTITY_TOKEN_FILE=/var/run/secrets/eks.amazonaws.com/serviceaccount/token

一个单独的服务帐户可以覆盖我们在这里尝试授予的权限吗?我们更新了配置服务器 pom 以将 1.11.623 用于 aws-java-sdk-core,并添加了 aws-java-sdk-sts 的依赖项

4

0 回答 0