【发布时间】:2016-12-26 16:30:26
【问题描述】:
我在我的部署管道中使用以下命令来设置 kubectl 以与容器引擎一起使用
gcloud auth activate-service-account ***@***.iam.gserviceaccount.com --key-file /var/go/.gcloud/***.json
gcloud config set account ***@***.iam.gserviceaccount.com
gcloud config set project gcloud-projectx
gcloud container clusters get-credentials gke-cluster --zone europe-west1-c
由于最近在运行 kubectl 版本时进行了 gcloud 更新,因此失败并出现以下错误
Client Version: version.Info{Major:"1", Minor:"3", GitVersion:"v1.3.4", GitCommit:"dd6b458ef8dbf24aff55795baa68f83383c9b3a9", GitTreeState:"clean", BuildDate:"2016-08-01T16:45:16Z", GoVersion:"go1.6.2", Compiler:"gc", Platform:"linux/amd64"}
error: You must be logged in to the server (the server has asked for the client to provide credentials)
使用 Google Cloud SDK 122.0.0 和 kubectl-linux-x86_64 1.3.4,而 Google Cloud SDK 119.0.0 和 kubectl-linux-x86_64 1.2.5 输出
Client Version: version.Info{Major:"1", Minor:"2", GitVersion:"v1.2.5", GitCommit:"25eb53b54e08877d3789455964b3e97bdd3f3bce", GitTreeState:"clean"}
Server Version: version.Info{Major:"1", Minor:"3", GitVersion:"v1.3.5", GitCommit:"b0deb2eb8f4037421077f77cb163dbb4c0a2a9f5", GitTreeState:"clean", BuildDate:"2016-08-11T20:21:58Z", GoVersion:"go1.6.2", Compiler:"gc", Platform:"linux/amd64"}
gcloud 和 kubectl 工具最近已更改为使用 OAuth2 身份验证而不是客户端证书,这会导致问题。
2016 年 8 月 17 日
Kubernetes v1.3.5 是新集群的默认版本。云 将 container/use_client_certificate 属性默认值更改为 错误的。这使得 gcloud 容器集群创建和 gcloud 容器集群 get-credentials 命令配置 kubectl 使用 默认情况下 Google OAuth2 凭据而不是旧客户端 证书。
我可以通过使用这些命令恢复到客户端证书身份验证来修复较新版本的问题
gcloud config set container/use_client_certificate True
export CLOUDSDK_CONTAINER_USE_CLIENT_CERTIFICATE=True
我的问题是如何让 OAuth2 身份验证正常工作,这样我就不必回退到客户端证书身份验证?我原以为这会透明且没有错误地发生。
【问题讨论】:
标签: kubernetes google-kubernetes-engine