使用容器引擎的 kubectl oauth2 身份验证失败
kubectl oauth2 authentication with container engine fails
我在我的部署管道中使用以下命令来设置 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
由于最近的 gcloud 更新 运行 kubectl 版本失败并出现以下错误
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 身份验证而不是客户端证书,这导致了问题。
August 17, 2016
Kubernetes v1.3.5 is the default version for new clusters. gcloud
changed the container/use_client_certificate property default value to
false. This makes the gcloud container clusters create and gcloud
container clusters get-credentials commands configure kubectl to use
Google OAuth2 credentials by default instead of the legacy client
certificate.
我可以通过使用这些命令恢复客户端证书身份验证来修复较新版本
gcloud config set container/use_client_certificate True
export CLOUDSDK_CONTAINER_USE_CLIENT_CERTIFICATE=True
我的问题是如何让 OAuth2 身份验证工作,这样我就不必退回到客户端证书身份验证?我本以为这会透明地发生并且没有错误。
Kubectl 配置为使用 Application Default Credentials 向 Kubernetes 主服务器进行身份验证。要指定您希望它使用的服务帐户,请将 GOOGLE_APPLICATION_CREDENTIALS
设置为您的密钥文件的位置。所以对你来说:
export GOOGLE_APPLICATION_CREDENTIALS=/var/go/.gcloud/***.json
抱歉,它没有您(和我们)希望的那样透明和顺畅。
截至 2016 年 10 月,您可以使用命令
gcloud container clusters get-credentials your-cluster-name
从 Google Cloud Platform 检索和设置令牌。
要检查是否为 kubectl
命令设置了令牌,请发出命令
kubectl config view | grep access-token
我在我的部署管道中使用以下命令来设置 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
由于最近的 gcloud 更新 运行 kubectl 版本失败并出现以下错误
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 身份验证而不是客户端证书,这导致了问题。
August 17, 2016
Kubernetes v1.3.5 is the default version for new clusters. gcloud changed the container/use_client_certificate property default value to false. This makes the gcloud container clusters create and gcloud container clusters get-credentials commands configure kubectl to use Google OAuth2 credentials by default instead of the legacy client certificate.
我可以通过使用这些命令恢复客户端证书身份验证来修复较新版本
gcloud config set container/use_client_certificate True
export CLOUDSDK_CONTAINER_USE_CLIENT_CERTIFICATE=True
我的问题是如何让 OAuth2 身份验证工作,这样我就不必退回到客户端证书身份验证?我本以为这会透明地发生并且没有错误。
Kubectl 配置为使用 Application Default Credentials 向 Kubernetes 主服务器进行身份验证。要指定您希望它使用的服务帐户,请将 GOOGLE_APPLICATION_CREDENTIALS
设置为您的密钥文件的位置。所以对你来说:
export GOOGLE_APPLICATION_CREDENTIALS=/var/go/.gcloud/***.json
抱歉,它没有您(和我们)希望的那样透明和顺畅。
截至 2016 年 10 月,您可以使用命令
gcloud container clusters get-credentials your-cluster-name
从 Google Cloud Platform 检索和设置令牌。
要检查是否为 kubectl
命令设置了令牌,请发出命令
kubectl config view | grep access-token