我在Gitlab的CI中运行kubectl version
gitlab-runner
在构建服务器上的用户。它在 CI 作业上失败,但在具有相同用户的主机外壳上成功。
我在gitlab-ci.yml
有这份工作:
deploy:
stage: deploy
environment: staging
script:
- whoami
- kubectl version
它失败并显示以下错误:
$ whoami
15 gitlab-runner
16 $ kubectl version
17 Client Version: version.Info{Major:"1", Minor:"17", GitVersion:"v1.17.0", GitCommit:"70132b0f130acc0bed193d9ba59dd186f0e634cf", GitTreeState:"clean", BuildDate:"2019-12-07T21:20:10Z", GoVersion:"go1.13.4", Compiler:"gc", Platform:"linux/amd64"}
18 error: You must be logged in to the server (the server has asked for the client to provide credentials)
22 ERROR: Job failed: exit status 1
使用gitlab-runner
用户在构建服务器的外壳上kubectl version
:
admin@BuildServer:~$ sudo -u gitlab-runner kubectl version
Client Version: version.Info{Major:"1", Minor:"17", GitVersion:"v1.17.0", GitCommit:"70132b0f130acc0bed193d9ba59dd186f0e634cf", GitTreeState:"clean", BuildDate:"2019-12-07T21:20:10Z", GoVersion:"go1.13.4", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.3", GitCommit:"b3cbbae08ec52a7fc73d334838e18d17e8512749", GitTreeState:"clean", BuildDate:"2019-11-13T11:13:49Z", GoVersion:"go1.12.12", Compiler:"gc", Platform:"linux/amd64"}
它在其他项目 CI 作业中工作正常。似乎在这个项目的CI作业中构建服务找不到/home/gitlab-runner/.kube/config
。但我认为当作业使用相同的gitlab-runner
用户运行时,它应该产生与使用同一用户在本地运行相同的结果。
我错过了什么?
因为其他项目的 CI 管道在同一个运行器上工作正常,并且问题只与我的一个项目相关,所以我只使用了管道页面上的Clear Runner Caches
按钮。(我还清除了管理区域中的群集缓存,但我不确定这与问题有关。