标签: google-cloud-run

GCP 托管的 Cloud Run 的出站 IP 范围是多少?

我正在使用 GCP 托管的 Cloud Run 和 MongoDB Atlas 开发应用程序。如果我允许从任何地方连接 Atlas 的 IP 白名单,Cloud Run 与 MongoDB Atlas 完美配合。但是,我只想限制必要 IP 的连接,但我在云中找不到 Cloud Run 的出站 IP。有什么办法可以知道出站IP吗?

google-cloud-run

13
推荐指数
3
解决办法
7020
查看次数

如何获取或生成 Google Cloud Run 服务的部署 URL

如何在 CI 环境中以编程方式获取已部署服务的 URL?成功部署后会记录 URL,但是如果我想以编程方式提取和使用 URL,作为部署后需求的一部分,例如发布 URL 以进行验收测试,该怎么办。

google-cloud-run

13
推荐指数
3
解决办法
2692
查看次数

如何为 Cloud Build 用于 Cloud Run 部署的 Cloud Storage 存储分区指定区域?

将 docker 容器映像部署到 Cloud Run 时,我可以选择一个区域,这很好。Cloud Run 将构建委托给 Cloud Build,它显然创建了两个存储桶来实现这一点。意外的行为是存储分区不是在 Cloud Run 部署的区域中创建的,而是默认为美国多区域。

如何将区域指定为“us-east1”,以便“始终免费”层承担存储成本? (显然,美国多区域存储桶将数据存储在免费层限制之外的区域,这导致了意外账单 - 我试图避免该账单。)

如果重要的话,我也在这个项目中使用 Firebase。我在 us-east1 区域创建了 Firebase 默认存储桶,希望它也能成为其他桶的默认存储桶,但事实并非如此。最终的存储桶列表如下所示,您可以在其中看到使用不需要的多区域设置自动创建的两个存储桶。

在此处输入图片说明

这是我用来构建和部署的 shell 脚本:

#!/bin/sh

project_id=$1
service_id=$2

if [ -z "$project_id" ]; then
    echo "First argument must be the Google Cloud project ID" >&2
    exit 1
fi

if [ -z "$service_id" ]; then
    echo "Second argument must be the Cloud Run app name" >&2
    exit 1
fi

echo "Deploying $service_id to $project_id"

tag="gcr.io/$project_id/$service_id"

gcloud builds submit \
    --project …
Run Code Online (Sandbox Code Playgroud)

google-cloud-storage google-cloud-platform google-cloud-build google-cloud-run

13
推荐指数
1
解决办法
2313
查看次数

如何在已部署的 Cloud Run Service(托管)中使用 Google Secret?

我有一个正在运行的云运行服务user-service。出于测试目的,我通过环境变量以纯文本形式传递客户端机密。现在,由于一切正常,我想使用一个秘密。

在“编辑修订版”选项的“变量”选项卡中,我可以声明环境变量,但我不知道如何传递秘密?我是否只需要像${my-secret-id}变量的值字段中那样传递秘密名称?没有关于如何在此选项卡中使用机密的文档,只有顶部的提示:

Store and consume secrets using Secret Manager
Run Code Online (Sandbox Code Playgroud)

在这种情况下这不是很有帮助。

google-cloud-run google-secret-manager

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

如何将 Docker Hub 镜像拉到 Google Cloud Run?

我正在尝试将 Docker 映像拉入 Google Cloud Run。我看到我可能需要先将它拉到 Google Container Registry,但我能以某种方式避免它吗?另外,我宁愿直接从源头获得它以使其保持最新状态。

在此处输入图片说明

docker google-cloud-platform google-container-registry google-cloud-run

13
推荐指数
2
解决办法
1848
查看次数

如何修复 CloudRun 错误“请求已中止,因为没有可用的实例”

我正在使用托管 CloudRun 部署一个带有concurrency=1. 部署后,我将并行触发四个长时间运行的请求。大多数情况下,一切正常——但偶尔,我会在几秒钟内面对来自其中一个节点的 500 个;日志仅提供主题中提供的错误消息。

使用带指数退避的重试并没有改善这种情况;重试也以 500 秒结束。StackDriver 日志也​​不提供更多信息。

可能相关的gcloud beta run deploy论点:

--memory 2Gi --concurrency 1 --timeout 8m --platform managed

错误消息的确切含义是什么——我该如何解决这个问题?

google-cloud-platform serverless google-cloud-run

12
推荐指数
3
解决办法
4091
查看次数

如何以编程方式获取Google云运行API中的当前项目ID

我有一个容器化的 API,并在 cloud run 内运行。如何获取正在执行云运行的当前项目 ID?我努力了:

  • 我在日志中的 textpayload 中看到它,但我不确定如何读取 post 函数内的 textpayload ?我收到的 pub sub 消息缺少此信息。
  • 我已经阅读了查询元数据 api 的内容,但不太清楚如何从 api 中再次执行此操作。有链接吗?

还有其他办法吗?

编辑:

经过下面的一些评论后,我最终在Cloud Run中运行的 .net API 中得到了这段代码。

        private string GetProjectid()
        {
            var projectid = string.Empty;
            try {
                var PATH = "http://metadata.google.internal/computeMetadata/v1/project/project-id";
                using (var client = new HttpClient())
                {
                    client.DefaultRequestHeaders.Add("Metadata-Flavor", "Google");
                    projectid = client.GetStringAsync(PATH).Result.ToString();
                }

                Console.WriteLine("PROJECT: " + projectid);
            }
            catch (Exception ex) {
                Console.WriteLine(ex.Message + " --- " + ex.ToString());
            }
            return projectid;
        }
Run Code Online (Sandbox Code Playgroud)

更新一下,可以用了 我的构建推送一直失败,但我没有看到。感谢大家。

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

12
推荐指数
3
解决办法
1万
查看次数

Google Cloud Run 与本地机器相比非常慢

我们有一个小脚本,可以抓取网页(约 17 个条目),并将它们写入 Firestore 集合。为此,我们在 Google Cloud Run 上部署了一项服务。

使用 Docker 容器镜像在本地测试时,此代码的执行需要约 5 秒。部署到 Cloud Run 的同一映像需要 1 多分钟。

即使是“删除集合中的所有文档”这样的简单命令,在本地需要 2-3 秒,而在 Cloud Run 上部署时需要 10 多秒。

我们知道冷启动,所以我们在第三次、第四次和第五次运行中测试了 Cloud Run 的性能,但它仍然很慢。

我们还尝试了 CPU 数、实例数、并发数、内存数,使用两端的默认值和极值,但 Cloud Run 的性能很慢。

这是预期的吗?Cloud Run 的单个实例真的这么弱吗?我们可以做些什么来让它更快吗?

这种缓慢的问题在于,如果我们为大量条目运行我们的代码,Cloud Run 最终会超时(更不用说每秒 Cloud Run 的成本)

google-cloud-run

12
推荐指数
1
解决办法
2202
查看次数

使用用户帐户凭据访问私有 Cloud Run/Cloud Functions

这是我的用例。

  • 我已经以私有模式部署了 Cloud Run 服务。(与云功能相同的问题)
  • 我正在开发一项使用此 Cloud Run 的新服务。我使用应用程序中的默认凭据进行身份验证。它适用于 Compute Engine 和 Cloud Run,因为默认凭据是从元数据服务器获取的。

但是,在我的本地环境中,我需要使用服务帐户密钥文件来实现此目的。(例如,当我设置 GOOGLE_APPLICATION_CREDENTIALS 环境变量时)

但是,我无法使用我的用户帐户凭据。

Java、Node 或 Go 中的日志跟踪非常清晰:不可能在用户凭证类型上生成身份令牌。

所以,

  • 为什么谷歌身份验证库不允许这样做?
  • 为什么 Google 前端仅接受 Google 签名的身份令牌?
  • 是否存在继续使用用户帐户的解决方法?

还有一段上下文:我们希望避免使用服务帐户密钥文件。今天,这是我们的重大安全漏洞(文件被复制、通过电子邮件发送、甚至公开提交到 Github 上......)。用户帐户默认凭据适用于所有 Google Cloud API,但不适用于 IAP 和 CLoud Run/Functions。

编辑

这是一些错误的例子。

爪哇

我这样做

        Credentials credentials = GoogleCredentials.getApplicationDefault().createScoped("https://www.googleapis.com/auth/cloud-platform");

        IdTokenCredentials idTokenCredentials = IdTokenCredentials.newBuilder()
                .setIdTokenProvider((IdTokenProvider) credentials)
                .setTargetAudience(myUri).build();

        HttpRequestFactory factory = new NetHttpTransport().createRequestFactory(new HttpCredentialsAdapter(idTokenCredentials));
Run Code Online (Sandbox Code Playgroud)

我的用户凭证不符合IdTokenProvider接口


Caused by: java.lang.ClassCastException: class com.google.auth.oauth2.UserCredentials cannot be cast to class com.google.auth.oauth2.IdTokenProvider (com.google.auth.oauth2.UserCredentials and com.google.auth.oauth2.IdTokenProvider …
Run Code Online (Sandbox Code Playgroud)

google-cloud-platform google-cloud-functions google-iam google-cloud-run

12
推荐指数
1
解决办法
5306
查看次数

CloudRun 突然得到`Improper path /cloudsql/{SQL_CONNECTION_NAME} to connect to Postgres Cloud SQL instance "{SQL_CONNECTION_NAME}"`

几个月来,我们一直在完全托管的 CloudRun 上使用 NestJS 和 TypeORM 运行服务,没有出现任何问题。昨天下午Improper path /cloudsql/{SQL_CONNECTION_NAME} to connect to Postgres Cloud SQL instance "{SQL_CONNECTION_NAME}",我们的日志开始出现错误。

我们没有围绕此时间戳进行任何服务器/SQL 更改。目前对服务没有影响,所以我们不确定这是否是一个严重的问题。

这个错误不是来自我们的代码,我们的第三方模块不应该知道我们是否使用 Cloud SQL,所以我不知道这个错误来自哪里。

我的假设是 Cloud SQL 代理或 Cloud Run 中使用的任何 SQL 客户端都会导致此错误。在使用“gcloud run deploy”CLI 命令进行部署时,我们使用 --add-cloudsql-instances 标志。

问题链接在这里

postgresql google-cloud-sql google-cloud-platform typeorm google-cloud-run

12
推荐指数
1
解决办法
446
查看次数