GCP:如何为GKE的Python测试代码设置用户ID以使用个人GCP账号认证
报错根因
你收到的403报错是因为在GKE集群内部访问Kubernetes API服务器时,请求没有携带有效身份凭证,被API服务器识别为未认证的system:anonymous匿名用户,无权限执行对应操作。你在集群外部访问时,本地环境已经缓存了gcloud auth login的凭证,所以可以正常访问,集群内部运行环境默认不会自动加载你本地的登录凭证。
临时测试解决方案(无需提前配置服务账号,适配当前命令行测试需求)
- 首先确认你已经获取了目标集群的访问凭证,执行以下命令同步本地kubeconfig:
gcloud container clusters get-credentials 你的集群名称 --region 集群所属区域 --project 对应GCP项目ID - 如果你是通过kubectl启动临时Pod运行测试,直接把本地kubeconfig挂载到Pod内即可继承你的登录权限:
kubectl run -it --rm test-workload --image=你的测试镜像名称 \ --volume=kube-config:/root/.kube \ --mount type=bind,source=$HOME/.kube/config,target=/root/.kube/config \ -- 你要执行的测试命令
- 如果你是直接在GKE节点的命令行运行测试,执行以下命令导入当前用户的认证凭证到会话环境即可:
export KUBECONFIG=$HOME/.kube/config - 如果之前的角色绑定没有生效,可以临时给你的登录账号绑定管理员权限完成测试(生产环境禁止使用该配置):
kubectl create clusterrolebinding temp-admin-binding --clusterrole=cluster-admin --user=$(gcloud config get-value account)
权限验证
执行kubectl auth can-i post /,返回yes即说明权限配置生效,再运行你的测试代码即可正常访问端点。
内容的提问来源于stack exchange,提问作者Mark McWiggins
相关产品推荐
相关产品推荐

