使用假定的IAM角色从EKS pod访问远程EKS群集



我已经阅读了本指南,允许在我的EKS集群上运行的一个pod使用kubectl访问远程EKS集群。

我目前正在集群内使用amazon/aws cli运行一个pod,安装一个服务帐户令牌,该令牌允许我根据上面的指南担任使用kubernetes RBAC配置的IAM角色。我已经通过运行aws sts get-caller-identity确保了角色的正确承担,事实确实如此。

我现在已经安装了kubectl,并像这样配置了kube/config-

apiVersion: v1
clusters:
- cluster:
certificate-authority-data: <redacted>
server: <redacted>
name: <cluster-arn>
contexts:
- context:
cluster: <cluster-arn>
user: <cluster-arn>
name: <cluster-arn>
current-context: <cluster-arn>
kind: Config
preferences: {}
users:
- name: <cluster-arn>
user:
exec:
apiVersion: client.authentication.k8s.io/v1alpha1
args:
- --region
- us-east-2
- eks
- get-token
- --cluster-name
- <cluster-name>
- --role
- <role-arn>
command: aws
env: null

然而,我尝试使用kubectl执行的每一次操作都会导致此错误-
error: You must be logged in to the server (Unauthorized)

我不知道我误解了什么,如果能知道如何获得更详细的错误消息,我将不胜感激。

如果AWS CLI已经在使用所需角色的标识,则不需要指定--role&kubeconfig参数中的<role-arn>

如果将它们保留在中,则aws sts get-caller-identity中的角色需要具有角色<role-arn>sts:AssumeRole权限。如果它们是相同的,那么角色需要能够自我承担——这是多余的。

所以我会尝试从kubeconfig.yml中删除这些args,看看它是否有帮助。

最新更新