使用令牌通过服务帐户登录GKE

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用令牌通过服务帐户登录GKE相关的知识,希望对你有一定的参考价值。

我试图通过服务帐户访问我在谷歌云上的Kubernetes群集,但我无法使其工作。我有一个带有一些pod和入口的运行系统。我希望能够更新部署的图像。

我想使用这样的东西(远程):

kubectl config set-cluster cluster --server="<IP>" --insecure-skip-tls-verify=true
kubectl config set-credentials foo --token="<TOKEN>"
kubectl config set-context my-context --cluster=cluster --user=foo --namespace=default
kubectl config use-context cluster
kubectl set image deployment/my-deployment boo=eu.gcr.io/project-123456/image:v1

所以我创建了服务帐户,然后获取了秘密令牌:

kubectl create serviceaccount foo
kubectl get secret foo-token-gqvgn -o yaml

但是,当我尝试在任何部署中更新图像时,我会收到:

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

API的IP地址使用地址,该地址在GKE管理中显示为集群端点IP。有什么建议?谢谢。

答案

我试图重新创建你的问题。

我遵循的步骤

  • kubectl create serviceaccount foo
  • kubectl get secret foo-token-* -o yaml

然后,我试着做你做过的事情

我用作令牌的是base64解码令牌。

然后我尝试了这个:

$ kubectl get pods

来自服务器的错误(禁止):禁止使用pod:用户“system:serviceaccount:default:foo”无法列出命名空间“default”中的pod:未知用户“system:serviceaccount:default:foo”

这给了我预期的错误。因为,我需要授予此ServiceAccount的权限。

如何授予此ServiceAccount权限?我需要创建具有必要权限的ClusterRole和ClusterRoleBinding。

阅读更多以了解更多role-based-access-control

我可以做另一件事

$ kubectl config set-credentials foo --username="admin" --password="$PASSWORD"

这将授予您管理员授权。

您需要提供群集凭据。

Username: admin
Password: -----

您将在GKE - > Kubernetes Engine - > {cluster} - > Show credential中获得此信息

以上是关于使用令牌通过服务帐户登录GKE的主要内容,如果未能解决你的问题,请参考以下文章

客户端未经授权使用此方法检索访问令牌服务帐户错误

使用 gcloud 服务帐户登录到 Firebase

iOS:通过自动登录获取 Facebook 访问令牌

使用工作负载身份为 GKE 节点池绑定 GCP IAM

APNS 设备令牌与登录/注销系统相结合

如果黑客设法获取我的会话令牌。那么这是否意味着我的帐户可能会遭到入侵?