Spring 配置服务器无法从代码提交中获取属性

时间:2021-05-13 13:09:33

标签: spring-boot kubernetes amazon-iam aws-codecommit spring-cloud-config-server

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

当 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

0 个答案:

没有答案