我在GKE中运行jenkins。构建的一个步骤是使用kubectl
来部署另一个群集。我在jenkins容器中安装了gcloud-sdk。有问题的构建步骤是这样做的:
gcloud auth activate-service-account --key-file /etc/secrets/google-service-account
gcloud config set project XXXX
gcloud config set account xxxx@xxx.iam.gserviceaccount.com
gcloud container clusters get-credentials ANOTHER_CLUSTER
但是我收到了这个错误(虽然它在本地工作正常):
kubectl get pod
error: You must be logged in to the server (the server has asked for the client to provide credentials)
注意:我注意到没有配置(〜/ .kube为空)我可以使用kubectl并访问当前正在运行pod的群集。 我不确定它是怎么做的,是否使用/var/run/secrets/kubernetes.io/serviceaccount/来访问集群
编辑:如果它还没有测试,但是将服务帐户添加到目标集群并在jenkins中使用它可能有效:
答案 0 :(得分:0)
请在此处查看此答案:kubectl oauth2 authentication with container engine fails
在执行gcloud auth activate-service-account --key-file /etc/secrets/google-service-account
之前,您需要做的是将gcloud设置为旧的auth模式:
CLOUDSDK_CONTAINER_USE_CLIENT_CERTIFICATE=True
gcloud config set container/use_client_certificate True
但是我没有成功使用其他env var:GOOGLE_APPLICATION_CREDENTIALS