问题标签 [google-cloud-run]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
184 浏览

python - 如何在本地运行我的 Cloud Run 服务?

从 Python 快速入门中获得了以下简单的 Cloud Run 服务:

app.py

Dockerfile

如何在本地运行和测试它?

0 投票
1 回答
2296 浏览

google-cloud-run - 云运行部署失败并出现权限错误

当gcloudgcloud beta run deploy --image gcr.io/mynippets-dev/web:latest项目设置为“mysnippets-dev”时运行会返回以下内容:

错误:(gcloud.beta.run.deploy) Google Cloud Run Service Agent 必须有权读取图像 gcr.io/mynippets-dev/web:latest。确保提供的容器镜像 URL 正确,并且上述账户具有访问镜像的权限。如果您刚刚启用 Cloud Run API,则权限可能需要几分钟才能传播。请注意,[mynippets-dev/web] 不在项目 [mysnippets-dev] 中。必须从该项目向 Google Cloud Run 服务代理授予权限

需要注意的是,GCR 镜像和 Cloud Run 账户都存在于 project 中'mysnippets-dev'。但由于某种原因,它认为这是一个跨项目部署,并且可能认为它'mynippets-dev/web'/web(GCR 存储库)有关。

我也可以在 Cloud Run UI 中重现相同的问题。

部署应该成功。

0 投票
2 回答
4574 浏览

google-cloud-platform - 服务帐号需要哪些预定义的 IAM 角色才能完成 Google Cloud Run 快速入门:构建和部署?

我想将 Google Cloud Run 与 Google App Engine 和 Google Cloud Functions 进行比较。Cloud Run快速入门:构建和部署似乎是一个很好的起点。

我的应用程序默认凭据过于宽泛,无法在开发过程中使用。我想使用一个服务帐户,但我很难配置一个可以无错误地完成快速入门的服务帐户。

问题:

我可以分配给必须无错误地执行这些命令的服务帐户的最低权限的预定义角色集是什么:

当通过具有两个角色的服务帐户运行时,第一个命令失败并出现(看似虚假的)错误:Cloud Build Service AccountCloud Run Admin. 我还没有运行第二个命令。

编辑:错误不是虚假的。该命令构建镜像并将其复制到项目的容器注册表,然后无法将构建日志打印到控制台(权限不足)。

编辑:我运行了第二个命令。它失败了Permission 'iam.serviceaccounts.actAs' denied on {service-account}。我可以通过分配Service Account User角色来解决这个问题。但这允许 deploy 命令充当项目的运行时服务帐户,默认情况下Editor具有角色。创建一个(有效地)同时具有和角色的服务帐户并不比使用我的应用程序默认凭据好多少。ViewerEditor

所以我应该更改运行时服务帐户权限。Cloud Run 服务标识文档对最低权限访问配置有这样的说法:

这会更改项目中所有服务以及 Compute Engine 和 Google Kubernetes Engine 实例的权限。因此,最低权限集必须包含项目中 Cloud Run、Compute Engine 和 Google Kubernetes Engine 所需的权限。

不幸的是,文档没有说明这些权限是什么或哪些预定义角色涵盖了它们。

到目前为止我所做的:

  1. 使用开发控制台创建一个新的 GCP 项目
  2. 使用开发控制台创建具有该Cloud Run Admin角色的新服务帐户
  3. 使用开发控制台为服务帐户创建(和下载)密钥
  4. 为项目创建(并激活)gcloud配置
  1. 使用下载的密钥激活服务帐户
  2. 使用开发控制台启用Cloud Run API
  3. 使用开发控制台启用Container Registry→<code>Settings→<code>Container Analysis API
  4. 创建示例应用程序并Dockerfile按照快速入门文档的说明
  5. 运行gcloud builds submit --tag gcr.io/[PROJECT-ID]/helloworld
    ...由于缺少云构建权限而失败
  6. Cloud Build Editor角色添加到服务帐户并重新提交构建
    ...由于缺少存储权限而失败。我没有仔细注意丢失的内容。
  7. Storage Object Admin角色添加到服务帐户并重新提交构建
    ...由于缺少存储权限而失败
  8. 将服务帐户的Storage Object Admin角色替换为该Storage Admin角色并重新提交构建
    ...失败为
  1. 检查可用角色集和项目自动创建的服务帐户。意识到该Cloud Build Service Account角色拥有比Cloud Build Editor. 这让我很吃惊;旧Editor角色具有“对所有资源的编辑权限”。
  2. 从服务帐户中删除Cloud Build EditorStorage Admin角色
  3. Cloud Build Service Account角色添加到服务帐户并重新提交构建
    ...失败并出现相同的HTTP 403错误(缺少获取日志文件的访问权限)
  4. 在开发控制台中检查Cloud Build→<code>History;找到成功的构建!
  5. 在开发控制台中检查Container Registry→<code>Images;找图片!

至此,我想我可以完成 Google Cloud Run快速入门:构建和部署。但我不想在构建过程中继续处理(看似虚假的)错误消息。

0 投票
3 回答
6885 浏览

google-app-engine - Google App Engine 和 Google Cloud Run 有什么区别?

有谁知道 Google App Engine Flex 和 Google Cloud Run 之间的区别?

谢谢

0 投票
1 回答
334 浏览

google-cloud-platform - Cloud Run 无服务器事件

Cloud Run 与 Knative 的“服务”(HTTP)能力有关。是否有计划实施“事件”功能?有一个用于“事件”的 PubSub 源,但它需要在我们管理的 k8s 集群上运行。

0 投票
1 回答
809 浏览

google-cloud-platform - 为什么启用 Cloud Run API 会创建这么多服务帐号?为什么他们有这么多特权?

启用 Cloud Run API(开发控制台→Cloud Run→启用)会创建五个服务帐户。我想了解他们的目的。我需要知道将它们配置为最低权限访问是否是我的责任。

Default compute service account作用Editor。这是Cloud Run 运行时服务帐号。它的目的很明确,我知道我有责任将其配置为最低特权访问。

App Engine default service account作用Editor。这与Cloud Functions 运行时服务帐户的描述相匹配。鉴于 Cloud Run 运行时服务帐户的存在,其目的尚不清楚。我不知道是否有责任将其配置为最低特权访问。

( role) 和Google Container Registry Service Agent( role )都是Google 管理的服务帐户“用于访问 Google Cloud Platform 服务的 API”:EditorGoogle Cloud Run Service AgentCloud Run Service Agent

我希望看到配置为最低权限访问的 Google 管理的服务帐户。我还希望能够在 GCP 控制台的 IAM 部分过滤 Google 管理的服务帐户。也就是说,我知道我应该忽略它们。

未命名的{project-number}{at}cloudbuild.gserviceaccount.com服务帐户具有该Cloud Build Service Account角色。此服务帐号“可以执行构建”,但未出现在 Cloud Run Building Containers文档中。它用于持续部署——但如果没有额外的用户配置就无法做到这一点。它不是 Google 管理的服务帐户,但它不像运行时服务帐户那样出现在 GCP 控制台的“服务帐户”部分中。其目的尚不清楚。我不知道是否有责任将其配置为最低特权访问。

0 投票
1 回答
970 浏览

google-cloud-platform - Cloud Run 是否受冷启动和最大执行长度的限制?

使用云功能时,我们有与冷启动相关的限制,最大执行时间为 9 分钟。Google Cloud Run 上是否也存在这些限制?

0 投票
1 回答
107 浏览

docker - 从 Go 与 Google API 对话挂起

按照此处的示例,代码似乎挂起通过 gRPC 与 Google API 建立 https 连接。

相同的代码适用于 App Engine Go1.11 和 App Engine Flex。这是我的 Dockerfile

0 投票
2 回答
1277 浏览

google-cloud-run - 容器管理器在信号 9 上保持终止容器

我正在尝试使用 Google Cloud Run,我拥有在 App Engine Flex 中运行良好的相同服务。有什么想法可能是什么问题?

在此处输入图像描述

不知何故,它表明服务是健康的。

在此处输入图像描述

0 投票
3 回答
866 浏览

google-cloud-run - 将一个自定义域映射到多个服务的正确方法是什么?

使用 GKE 和 Cloud Run映射自定义域的说明适用于 1:1 域:服务映射。但是如果我想拥有 1:M domain:services 并与 URI 匹配,

我试过的

第二个域映射创建语句将出错,因为域在服务中必须是唯一的:

以前,当使用手动创建的 Knative 环境时,我可以使用 Istio 来实现VirtualService

但是,虽然我可以通过 Cloud Run 在 GKE 上应用它,但所有内容都被路由到映射到域的服务。

我还尝试删除gcloud beta run domain-mappings创建的,将istio-ingressgatewayLoadBalancer 设置为保留的静态 IP,并将我的域指向 LoadBalancer。但是,这只会导致503s.

为什么我不能只指向istio-ingressgatewayLoadBalancer 并VirtualService为我提供一条路线?