从K8S集群调用时,Google API中的“身份验证范围不足”

时间:2018-10-19 06:14:08

标签: node.js kubernetes google-kubernetes-engine google-cloud-error-reporting

我正在尝试通过运行在带有RBAC的GCP / GKE集群上的我们的kubernetes部署之一,将Node.js错误报告给Google错误报告。 (即在与群集相关联的服务帐户中定义的权限)

const googleCloud = require('@google-cloud/error-reporting');
const googleCloudErrorReporting = new googleCloud.ErrorReporting();
googleCloudErrorReporting.report('[test] dummy error message');

这仅在某些环境中有效:

  • 使用具有“错误编写者”角色的服务帐户在笔记本电脑上运行时,它可以正常工作
  • 在将“错误编写器”角色添加到该群集的服务帐户后,在作为K8S作业在我的群集中运行时,它可以正常工作
  • 从在我的一个K8S部署中运行的Node.js应用程序调用时,会导致以下错误:
  

ERROR:@ google-cloud / error-reporting:在尝试将错误传输到Stackdriver Error Reporting API时遇到错误。

     

错误:请求的身份验证范围不足。

感觉这项工作确实获得了群集服务帐户的权限更改,而我的部署却没有。

我确实尝试重新创建部署以使其刷新其身份验证令牌,但错误仍在发生...

有什么想法吗?

  

更新:我最终遵循Jérémie Girault's suggestion:创建一个服务帐户并将其绑定到我的部署中。可行!

1 个答案:

答案 0 :(得分:1)

该错误消息与使用默认服务帐户时在群集上设置的访问范围有关。您必须启用对相应API的访问。

正如您提到的,创建一个单独的服务帐户,为其提供适当的IAM权限并将其链接到您的群集或工作负载也将绕过此错误。