gpt4 book ai didi

kubectl - 将 EKS token 传递给其他 kubectl cli 命令

转载 作者:行者123 更新时间:2023-12-02 18:38:52 29 4
gpt4 key购买 nike

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

aws eks get-token --region us-west-2 --cluster-name eks1

结果如下:

{"status": {"token": "k8s-aws-v1.aHR0.....Ni"}, "kind": "ExecCredential", "apiVersion": "client.authentication.k8s.io/v1alpha1", "spec": {}}

如何将 token 传递给其他 cli 命令?像这样:

kubectl get svc --token="$token-from-above"

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

error: You must be logged in to the server (Unauthorized)

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

生成的 token 相同

我尝试运行这个:

export AWS_SESSION_TOKEN="$token-from-above"
kubectl get svc

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

最佳答案

@MrCholo,您是否已确定将您的 KUBECONFIG 配置为使用 exec 凭据流程?使用 EKS 和/或身份验证器,您不需要生成 token ,然后将其注入(inject)到每个请求中。kubectl 有一种为您exec'ing 二进制文件的方法。我们已将所有这些内容融入 update-kubeconfig cli 命令中,您可以看到 https://docs.aws.amazon.com/eks/latest/userguide/getting-started-console.html#eks-configure-kubectl

但是它看起来是这样的:

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

您需要确保您至少拥有 1.10+ 的 kubectl 客户端版本,您可以使用 kubectl version --client --short 检查该版本。

其他需要注意的事项,此 token 不是 AWS IAM token ,它是生成并签名的 URL,API 服务器使用它来验证用户是谁。底层请求实际上是aws sts get-caller-identity,但我们没有完成请求,我们只是对URL进行签名,然后对其进行base64编码并将其封装在JSON中以提交到api服务器。一旦它被传递到 api 服务器, token 就会被发送到控制平面中的身份验证器 Web 服务器,该服务器解码然后“完成”STS 调用以返回您是谁,然后使用它来验证您是否在用户白名单中.

希望有帮助。

关于kubectl - 将 EKS token 传递给其他 kubectl cli 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56227322/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com