在GCP上,我尝试使用下面的 Terraform 代码运行Cloud Run服务“renderer”,在此代码中,我使用plus(连接“gcr.io/”、变量var.project_id和“/renderer:latest” +) :
resource "google_cloud_run_service" "renderer" {
name = "renderer"
location = "asia-northeast1"
template {
spec {
containers {
image = "gcr.io/" + var.project_id + "/renderer:latest" // Here
}
service_account_name = google_service_account.renderer_identity.email
}
}
traffic {
percent = 100
latest_revision = true
}
}
Run Code Online (Sandbox Code Playgroud)
然后,当我应用上面的代码时,出现以下错误:
resource "google_cloud_run_service" "renderer" {
name = "renderer"
location = "asia-northeast1"
template {
spec {
containers {
image = "gcr.io/" + var.project_id + …Run Code Online (Sandbox Code Playgroud) google-cloud-platform terraform devops terraform-provider-gcp google-cloud-run
Cloud Run error: The user-provided container failed to start and listen on the port defined provided by the PORT=8080 environment variable. Logs for this revision might contain more information.
Run Code Online (Sandbox Code Playgroud)
我的项目使用端口8080。但Cloud Run似乎无法识别它。貌似JavaScript的node js不需要单独设置,但是这里好像是有必要的。我使用 ts-node 可以正常打开端口。
我想在云运行上部署我的应用程序,我不想给我的云运行默认服务帐户,因为它包含高级别的权限,而是为了安全目的我想创建一个自定义服务帐户
所以我向我的定制服务帐户提供这些权限:-
1.云运行管理
2.服务帐号用户
我是否必须为自定义帐户提供任何其他权限才能连接到云 sql 并使用持续部署功能进行云运行,或者我缺少自定义服务帐户的任何其他权限。
我在 GCP Cloud Run 中设置了一个以 nginx 为前端的 Web 应用程序,效果非常好。我正在尝试使用 nginx 将请求代理到另一个 GCP Cloud Run 服务的特定路由。例如,我希望请求能够https://my-cloud-run-frontend.app.run解析到https://my-cloud-run-frontend.run.app,但是我希望请求能够 https://my-cloud-run-frontend.run.run/api/*被代理https://my-cloud-run-backend.run.app。
这两个云运行服务都使用 IAM Auth。
当我在本地 docker 容器中运行服务时,代理效果很好。同样,如果我frontend在 Cloud Run 设置中从应用程序中删除 IAM 身份验证,一切似乎都会正常。
但是,启用 IAM 身份验证后,请求会https://my-cloud-run-frontend.run.app成功,但请求会https://my-cloud-run-frontend.run.app/api/因未经授权而失败(具体来说,错误是从frontend云运行应用程序引发的)。
https://my-cloud-run-backend.run.app我已经确认,通过使用相同的身份验证令牌并直接向 和发出请求https://my-cloud-run-frontend.run.app,身份验证可以正常工作,并且工作正常。
做了一些研究,我发现我可能需要设置一个Host标头,所以我尝试将标头设置Host为我的目的地(https://my-cloud-run-backend.run.app网址)。这会导致调用返回https://my-cloud-run-frontend.run.app/api400 错误。
我的nginx.conf.template文件:
server {
access_log /dev/stdout;
listen 8080;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files …Run Code Online (Sandbox Code Playgroud) nginx google-cloud-platform nginx-reverse-proxy google-cloud-run
我在 Cloud Run 后端前面有一个 Google Cloud Api 网关。如果两者都是公开的,一切正常。
如果我在 Cloud Run 上选中“仅允许内部流量”,Api Gateway 无权访问后端。有没有办法在 Api Gateway 和 Cloud Run 之间保持私有连接?
另一个问题。有没有办法使用私有 IP 在我的网络中拥有 Api 网关?
google-cloud-platform google-cloud-run google-cloud-api-gateway
我创建了一个云运行服务,我想在我的 Web 应用程序中访问此服务,该应用程序在 Appengine(灵活实例)中运行。我的网络应用程序位于与创建的云运行服务不同的谷歌云项目中。
我不想让云运行服务向公众开放,因此我在“身份验证”部分选择了“需要身份验证”选项。并在 Ingress 部分选择“允许所有流量”。还为我托管 web 应用程序的 appengine 服务帐户添加了云运行权限。完成这些设置后,我无法通过 appengine 访问云运行服务(url)。它返回禁止错误。我正在通过 sshing 到 Appengine 实例来测试对 url 的访问。
那么,推荐的选项和设置是什么?
我在将 [项目 A] Cloud Run 实例连接到 [项目 B] Cloud SQL 实例时遇到问题。
我已经按照本文所述设置了服务帐户权限:https://cloud.google.com/sql/docs/mysql/connect-run
哪些是这样的:
这两个项目都启用了 Cloud SQL Admin API,如果我在 [项目 B] 上构建相同的 Cloud Run 实例,它的连接不会出现任何问题,所以我想这是一个权限问题。
我从 [Project A] Cloud Run 的日志中收到的错误是:googleapi: Error 403: The client is notauthorized to make this request., notAuthorized
permissions google-cloud-sql google-cloud-platform google-cloud-run
我有一个使用 Fastify 的节点服务器应用程序。我可以毫无问题地在本地构建并运行该映像。但是当我部署到云时,它无法启动并给出Uncaught signal: 11 - Segmentation failure。经过一番挖掘后,我发现这是由于第三方库造成的,当我删除它时问题就消失了。库是https://www.npmjs.com/package/@transmute/vc.js
不幸的是,不使用该库不是一个选择。本地一切正常,但在云端却失败。我尝试了从 14.18 到最新的不同节点版本。我还尝试将容器内存限制增加到 1024Mi,但没有成功。
有人有主意吗?
segmentation-fault node.js google-cloud-platform fastify google-cloud-run
这有点类似于如何检查最新的 Cloud Run 版本是否已准备好提供服务
\n我想列出 Cloud Run 服务的非活动修订版本,以便我可以删除它们。我可以使用以下方式列出它们:
\ngcloud run revisions list --region europe-west1 --service service-name\nRun Code Online (Sandbox Code Playgroud)\n清单如下所示:
\n REVISION ACTIVE SERVICE DEPLOYED DEPLOYED BY\n\xe2\x9c\x94 xxxxx-server-00083-ban yes xxxxx-server 2022-12-22 18:13:50 UTC xxxxx-server@***.iam.gserviceaccount.com\n\xe2\x9c\x94 xxxxx-server-00082-few xxxxx-server 2022-12-22 18:09:27 UTC xxxxx-server@***.iam.gserviceaccount.com\n\xe2\x9c\x94 xxxxx-server-00081-zex xxxxx-server 2022-12-22 18:03:00 UTC xxxxx-server@***.iam.gserviceaccount.com\n\xe2\x9c\x94 xxxxx-server-00080-bad xxxxx-server 2022-12-22 18:02:02 UTC xxxxx-server@***.iam.gserviceaccount.com\nRun Code Online (Sandbox Code Playgroud)\n现在我想只过滤那些没有的ACTIVE:yes。我尝试添加--filter=\'-active:*\',但似乎没有任何效果,并且收到警告:
WARNING: The following filter keys were not present in any resource : active\nRun Code Online (Sandbox Code Playgroud)\n--format=JSON当我尝试使用或列出信息时--format=YAML,我对信息不知所措,其中包括列出所有过去的状态转换,例如:
status:\n …Run Code Online (Sandbox Code Playgroud) 我用 Rust 构建了一个 API,并通过 Google Cloud Run 部署它。在我的 API 中,我访问存储为环境变量的远程数据库的 URI。
当我在本地计算机上运行该程序时,可以使用 访问环境变量env!("MONGODB_URI_2")。
当我使用该标志将程序部署到 gcloud 时,--set-env-vars "MONGODB_URI_2", "theurigoeshere"相同的 env 宏找不到变量并出现恐慌。
编辑: 我尝试从键中删除下划线并将文本全部小写,然后再发布此内容,但没有帮助..