标签: google-cloud-run

是否可以禁用 Google Cloud Run 的 Stackdriver 日志记录?

我在 Google Cloud Run 上建立了一个小项目,我正在查看生成的成本,Stackdriver Logging 看起来相当昂贵。是否可以禁用它?如何?我在文档中找不到它。

google-cloud-platform google-cloud-run

2
推荐指数
1
解决办法
1288
查看次数

将 python 库从 Cloud Source Repository 安装到 Cloud Run 容器

我有一个 Google 源存储库,它镜像了我的私有 Github 存储库,其中包含 Python 包的代码。我还有一个 Cloud Run 实例,我想在其中安装这个私有 Python 库。我怎样才能在cloudbuild.yamlor中做到这一点Dockerfile

google-cloud-platform google-cloud-source-repos google-cloud-run

2
推荐指数
1
解决办法
616
查看次数

Google Cloud Run 内部服务之间的通信

我有 2 个云运行服务:

这个想法是calculator-api公开的,它将向 提出请求add-apiadd-api由于某种原因,当ingress 为 时,我收到 403 internal,但如果我将 ingress 更改为 to Allow all traffic,则它可以正常工作。

我使用以下代码正确获取 IdToken,然后将令牌注入 header 中Authorization: Bearer IdToken。我的接收者拥有角色add-api许可。calculator-apiCloud Run Invoker

GET request "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/identity?audience=https://add-api.a.run.app"

Header: {"Metadata-Flavor", "Google"}
Run Code Online (Sandbox Code Playgroud)

因此,我认为问题不在于身份验证,而在于入口设置为 时的某种网络限制internal

google-cloud-platform google-cloud-run

2
推荐指数
1
解决办法
3628
查看次数

我是否需要清理/删除在 Cloud Run 实例部署中创建的映像?

我在我的 Google Cloud Platform 项目上启动并运行了一个 Cloud Run 实例。

每当我对main.py文件进行任何更改时,我都会执行以下步骤:

gcloud builds submit --tag ${CONTAINER}
gcloud run deploy ${SERVICE} --image $CONTAINER --platform managed
Run Code Online (Sandbox Code Playgroud)

它构建一个新映像并将容器部署到托管实例。

查找并删除旧部署的映像是一个很好的做法,还是由 GCP 自动管理?

python google-cloud-platform google-cloud-run

2
推荐指数
1
解决办法
1244
查看次数

Cloud Scheduler 调用的 GCP Cloud Run 应用当前的最大超时是多少

我正在考虑使用 Cloud Scheduler 在 Cloud Run 上触发 python 应用程序的日常执行。该应用从第三方 API 提取数据并将其插入 BigQuery。唯一的问题是,根据我读过的许多文章,Cloud Run 有 15 分钟的执行时间限制,这可能太短了。

不过,查看 Cloud Run 文档:https://cloud.google.com/run/quotas#cloud_run_limits似乎表明最大执行时间为 60 分钟。

哪个是对的?Cloud Run 实际上可以运行长达 60 分钟的进程吗?如果该过程需要超过 30 分钟,我在使用 Cloud Schedular 触发云运行时是否可能会遇到任何问题?

python google-cloud-scheduler google-cloud-run

2
推荐指数
1
解决办法
3475
查看次数

如何(或者是否可以)使用 Terraform 创建 Google Cloud Run 容量设置?

我是 Terraform 新手,但我做了很多研究但找不到答案。我使用简单的 Terraform 文件创建 Cloud Run 实例没有问题。我可以毫无问题地设置环境变量和秘密。但是,我不知道如何创建其他设置,例如“内存分配”、“CPU 分配”等。 在此输入图像描述

我的 terraform 文件如下所示:

resource "google_cloud_run_service" "myproject" {  
project  ="myproject" 
name     = "cloud-run-name"  
location = "us-east1"


template {
 spec {
  containers {
    image = "gcr.io/myproject/image"

   env {
      name = "VARIABLE1"
      value = "variable1"
    }
    env {
      name = "VARIABLE2"
      value = "variable1"
    }
   
  }
}
}

traffic {
percent         = 100
latest_revision = true
}
}
Run Code Online (Sandbox Code Playgroud)

google-cloud-platform terraform google-cloud-run

2
推荐指数
1
解决办法
3015
查看次数

在 Cloud Run docker 实例中哪里可以找到 python print 语句?

如果我在 Cloud Run 中运行容器并在 python 代码中执行打印语句。我在哪里可以查看?云日志似乎显示包含本身的日志(构建等)?

为了经常调试我的代码,我会编写一些语句来帮助我弄清楚发生了什么。该打印输出位于哪里?

python docker google-cloud-platform google-cloud-run

2
推荐指数
1
解决办法
2524
查看次数

PubSub:如何设置没有指数退避的重试策略?

我有一个推送订阅,可将消息发送到 Cloud Run 服务。如果 Cloud Run 服务未成功确认消息(否定确认),我希望以最大次数重新发送消息,重试之间的时间间隔始终相同(例如,重试 10 次,每次重试 1 分钟后)。

  1. 我知道我可以设置使用死信队列重新发送消息的最大次数(我也可以在没有死信队列的情况下设置此数字吗?因此,在没有消息的最大传递尝试次数后丢弃/删除消息去另一个队列吗?)。
  2. 另外,通过重试策略,我可以设置最小退避(例如 1 分钟)来决定第一次重试发生的时间,但之后 PubSub 的重试策略会使用一些指数延迟。我可以不在这里指定线性延迟(始终相同的时间间隔)吗?

这是否可以通过此处提到的 PubSub 推送订阅设置https://cloud.google.com/pubsub/docs/admin#using_subscription_properties实现?

预先感谢您的任何帮助。

google-cloud-platform google-cloud-pubsub google-cloud-run

2
推荐指数
1
解决办法
2751
查看次数

GCP Cloud Run 无法从其他项目中的工件注册表中提取映像

我有一个项目,其中为 docker 配置了工件注册表。

子项目有一个云运行服务,需要从父项目提取其映像。

子项目还有一个服务账户,该账户有权通过 IAM 角色Roles/artifactregistry.writer访问存储库。

当我尝试启动服务时,我收到一条错误消息:

Google Cloud Run Service Agent 必须有权读取映像 europe-west1-docker.pkg.dev/test-parent-project/docker-webank-private/node:custom-1。确保提供的容器镜像 URL 正确,并且上述帐户有访问该镜像的权限。如果您刚刚启用 Cloud Run API,则权限可能需要几分钟才能传播。请注意,该图像来自项目 [test-parent-project],与此项目 [test-child-project] 不同。必须从此项目向 Google Cloud Run 服务代理授予权限。

我已经测试过使用docker 登录并使用服务帐户的私钥手动连接,并且docker pull命令在我的电脑上完美运行。

cat $GOOGLE_APPLICATION_CREDENTIALS | docker login -u _json_key --password-stdin https://europe-west1-docker.pkg.dev
> Login succeeded
docker pull europe-west1-docker.pkg.dev/bfb-cicd-inno0/docker-webank-private/node:custom-1
> OK
Run Code Online (Sandbox Code Playgroud)

该服务帐户还附加到云运行服务:

在此输入图像描述

docker gcloud google-cloud-run

2
推荐指数
1
解决办法
4723
查看次数

当最大实例数 = 1 时,“正常关闭”如何工作?

https://cloud.google.com/run/docs/reference/container-contract

然后,容器实例接收一个 SIGTERM 信号,指示关闭之前10 秒周期的开始(使用 SIGKILL 信号)。在此期间,容器实例将被分配CPU并计费。如果容器实例没有捕获 SIGTERM 信号,它将立即关闭。

答:如果我将最大实例数设置为 1 ,那么在我的容器进程捕获 SIGTERM 且处于“10 秒关闭期”,新请求到达 Cloud Run 代理时会发生什么情况?

我假设HTTP请求将等到关闭完成,然后Cloud Run将启动一个新的新容器来处理HTTP请求?

这有保证吗?

我之所以这么问,是因为我的容器假定它是唯一改变网络资源的进程,并且两个容器会创建竞争条件(或在 SIGTERM 事件之后再处理一个 HTTP 请求)。

https://cloud.google.com/blog/topics/developers-practitioners/graceful-shutdowns-cloud-run-deep-dive

但是,有时您可能会在容器由于底层基础设施原因而关闭之前收到此信号,并且您的容器可能仍具有正在进行的连接。因此,并不总是能保证优雅终止。

B:这种情况有多常见?容器总是收到 SIGTERM 信号吗?

我可以等到http_requests_outstanding = 0 AND SIGTERM_has_been_triggered运行关闭代码(此时不会再将 HTTP 请求转发到实例)吗?

google-cloud-run

2
推荐指数
1
解决办法
638
查看次数