我们正在使用 Jenkins 项目从 shell 运行“gcloud logs read ...”以从 gcloud 容器中获取日志,我们偶尔会在脚本中看到权限错误:
ERROR: (gcloud.logging.read) PERMISSION_DENIED: Request had insufficient authentication scopes.
我们的 Jenkins 服务器作为 Google Kubernetes Engine 运行。
我没有找到任何关于使用 Kubernetes Engine 进行身份验证的具体内容,我假设它就像一个 Google Cloud,https://cloud.google.com/storage/docs/authentication#libauth说,对于身份验证,
环境已经提供服务账户的身份验证信息,因此无需进一步设置
也许我的假设是错误的?我之所以这样认为是因为它通常有效。
当它正常工作时,gcloud info
返回预期的用户,而当它不正常工作时,它会报告默认服务帐户。
有人知道为什么用户会在项目构建之间做出改变以及如何避免这种情况吗?
其他观察:
- 修改Jenkins中项目的shell脚本似乎可以暂时解决问题。
谢谢!
答案1
所以这里的问题似乎是我的问题的答案是“是”
也许我的假设是错误的?
看起来该项目大多数时候都有效,因为它主要是在运行另一个进行身份验证的项目(在本例中为管道)后在代理上运行。
解决方法是在我的项目中也进行身份验证,并且一周以来它一直有效。