将 EKS 令牌传递给其他 kubectl cli 命令

10 kubectl amazon-eks aws-iam-authenticator

假设我使用以下方式获得 EKS 令牌:

aws eks get-token --region us-west-2 --cluster-name eks1
Run Code Online (Sandbox Code Playgroud)

结果看起来像:

{"status": {"token": "k8s-aws-v1.aHR0.....Ni"}, "kind": "ExecCredential", "apiVersion": "client.authentication.k8s.io/v1alpha1", "spec": {}}
Run Code Online (Sandbox Code Playgroud)

如何将令牌传递给其他 cli 命令?就像是:

kubectl get svc --token="$token-from-above"
Run Code Online (Sandbox Code Playgroud)

没有令牌,我不断收到此错误:

错误:您必须登录到服务器(未经授权)

但我的 AWS 凭证存在,这就是我可以获得令牌的原因。我假设它与生成的令牌相同aws-iam-authenticator token -i eks1

我尝试运行这个:

export AWS_SESSION_TOKEN="$token-from-above"
kubectl get svc
Run Code Online (Sandbox Code Playgroud)

这也不起作用,同样的错误。

bil*_*y91 4

确保您没有配置任何环境变量:

unset AWS_ACCESS_KEY_ID
unset AWS_SECRET_ACCESS_KEY
Run Code Online (Sandbox Code Playgroud)

大多数(如果不是全部)aws 工具都会优先考虑这些配置。AWS_PROFILE例如,当我尝试使用时,我就被这个愚弄了。