为什么在 GKE 实例中 运行 时 @google-cloud/profiler 抛出 'permission_denied' 错误?
Why is @google-cloud/profiler throwing 'permission_denied' errors when running inside a GKE instance?
我一直在按照 https://cloud.google.com/profiler/docs/profiling-nodejs#gke 上的说明进行操作
为我的 nodejs 应用程序使用 gcloud 分析器:
我将 RUN npm install @google-cloud/profiler
添加到我的 dockerfile 中。
我添加了
require('@google-cloud/profiler').start({
serviceContext: {
service: 'your-service',
version: '1.0.1',
},
});
到我的 app.js 文件。
然后我 运行 GKE 集群上的容器并收到以下错误:
@google-cloud/profiler Failed to create profile, waiting 8.6s to try again: Error: generic::permission_denied
根据我对文档的理解,当 运行 来自 gcloud 托管实例中的代码时,我不需要明确的身份验证或权限来创建配置文件。
错误本身并不是很有帮助,我在这里有点不知所措。
我已经尝试过使用 --(autoprovisioning-)scopes "https://www.googleapis.com/auth/cloud-platform"
创建集群是否可以解决问题,但也没有运气。
知道这里的问题是什么吗?
您说得对,文档建议您不需要凭据但是我认为您需要(而且文档不完整)。
当应用程序(例如 Profiler)使用 Google 的应用程序默认凭据并在例如Compute Engine(App Engine、Cloud 运行 等)它能够从环境中获取 credentials automatically(在 GCP 上使用元数据服务;由开发人员在本地使用,将 GOOGLE_APPLICATION_CREDENTIALS
导出到密钥) .
在 GKE 上,我认为这 不是 正确的(除非 Google 在某处做一些魔术)并且该应用程序将无法访问凭证会自动 除非 您在 GKE 中代表它们。我 认为 (!?) 您需要创建一个服务帐户并且:
NOTE Workload Identity is a neat feature but it's only useful if you only ever plan to use GKE (and not some other Kubernetes implementation).
在继续之前,让我们看看其他人是否回复告诉我我错了。
我 wrote 关于使用当时称为 Stackdriver Profiler 的 GKE 部署应用程序。文章已过时,但它应该提供您需要执行的操作的概要。
我一直在按照 https://cloud.google.com/profiler/docs/profiling-nodejs#gke 上的说明进行操作 为我的 nodejs 应用程序使用 gcloud 分析器:
我将 RUN npm install @google-cloud/profiler
添加到我的 dockerfile 中。
我添加了
require('@google-cloud/profiler').start({
serviceContext: {
service: 'your-service',
version: '1.0.1',
},
});
到我的 app.js 文件。
然后我 运行 GKE 集群上的容器并收到以下错误:
@google-cloud/profiler Failed to create profile, waiting 8.6s to try again: Error: generic::permission_denied
根据我对文档的理解,当 运行 来自 gcloud 托管实例中的代码时,我不需要明确的身份验证或权限来创建配置文件。
错误本身并不是很有帮助,我在这里有点不知所措。
我已经尝试过使用 --(autoprovisioning-)scopes "https://www.googleapis.com/auth/cloud-platform"
创建集群是否可以解决问题,但也没有运气。
知道这里的问题是什么吗?
您说得对,文档建议您不需要凭据但是我认为您需要(而且文档不完整)。
当应用程序(例如 Profiler)使用 Google 的应用程序默认凭据并在例如Compute Engine(App Engine、Cloud 运行 等)它能够从环境中获取 credentials automatically(在 GCP 上使用元数据服务;由开发人员在本地使用,将 GOOGLE_APPLICATION_CREDENTIALS
导出到密钥) .
在 GKE 上,我认为这 不是 正确的(除非 Google 在某处做一些魔术)并且该应用程序将无法访问凭证会自动 除非 您在 GKE 中代表它们。我 认为 (!?) 您需要创建一个服务帐户并且:
NOTE Workload Identity is a neat feature but it's only useful if you only ever plan to use GKE (and not some other Kubernetes implementation).
在继续之前,让我们看看其他人是否回复告诉我我错了。
我 wrote 关于使用当时称为 Stackdriver Profiler 的 GKE 部署应用程序。文章已过时,但它应该提供您需要执行的操作的概要。