首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Google IAM服务帐户验证Kubectl

使用Google IAM服务帐户验证Kubectl
EN

Stack Overflow用户
提问于 2019-02-21 22:37:44
回答 1查看 438关注 0票数 1

我有一个Google Cloud IAM服务帐户密钥文件( json格式),其中包含以下数据。

代码语言:javascript
复制
{
"type": "service_account",
"project_id": "****",
"private_key_id":"****",
"private_key": "-----BEGIN PRIVATE KEY----blah blah -----END PRIVATE KEY-----\n",
"client_email": "*****",
"client_id": "****",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth/v1/certs",
"client_x509_cert_url": "****"
}

通过将此密钥文件传递给kube API客户端库,我可以使用此服务帐户访问kubernetes API服务器。

但是,我找不到任何方法来将此服务帐户传递给kubectl二进制文件,以使kubectl获得此服务帐户为其创建的项目的身份验证。

有没有什么方法可以让Kubectl使用这个服务帐户文件进行身份验证?

EN

回答 1

Stack Overflow用户

发布于 2019-02-22 05:07:53

这个答案提供了一些指导:Access Kubernetes GKE cluster outside of GKE cluster with client-go?,但它并不完整。

你需要做两件事:

  1. GOOGLE_APPLICATION_CREDENTIALS环境变量设置为IAM服务帐户的JSON密钥文件的路径,并使用kubectl设置此变量后,应使用令牌对您进行身份验证。
  2. (这可能是可选的,但不确定)创建一个仅包含您的群集IP和CA证书的自定义KUBECONFIG,保存此文件,并使用它连接到群集。

步骤2看起来像这样:

代码语言:javascript
复制
cat > kubeconfig.yaml <<EOF
apiVersion: v1
kind: Config
current-context: cluster-1
contexts: [{name: cluster-1, context: {cluster: cluster-1, user: user-1}}]
users: [{name: user-1, user: {auth-provider: {name: gcp}}}]
clusters:
- name: cluster-1
  cluster:
    server: "https://$(eval "$GET_CMD --format='value(endpoint)'")"
    certificate-authority-data: "$(eval "$GET_CMD --format='value(masterAuth.clusterCaCertificate)'")"
EOF

所以有了这个,你应该做

代码语言:javascript
复制
export GOOGLE_APPLICATION_CREDENTIALS=<path-to-key.json>
export KUBECONFIG=kubeconfig.yaml
kubectl get nodes
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54809596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档