标签: google-cloud-run

Google Cloud Run 适合运行 Spring Boot?

我们有一个 Docker 容器,用于打包 Java Spring Boot 应用程序。应用程序有时需要大约 40 秒才能启动。

Google Cloud Run 是否适合运行这样一个“重量级”的应用程序?

假设它会缩小到 0 个副本,然后将需要 40 秒以上的时间来处理以下内容。或者 Cloud Run 方面是否有一些逻辑可以避免这种情况。

java spring-boot google-cloud-platform google-cloud-run

5
推荐指数
1
解决办法
2082
查看次数

REACT APP 无法访问谷歌云运行环境变量

我使用 GitLab ci 作为我的 CI/CD 工具。我正在将 dockerized react 应用程序部署到 cloud run,但我无法访问在 cloud run 上声明的环境变量。谢谢!

文件

# build environment
FROM node:8-alpine as react-build

WORKDIR /app
COPY . ./

RUN npm install
RUN npm run build

# server environment
FROM nginx: alpine
COPY nginx.conf /etc/nginx/conf.d/configfile.template

COPY --from=react-build /app/build /usr/share/nginx/html

ENV PORT 8080
ENV HOST 0.0.0.0
EXPOSE 8080
CMD sh -c "envsubst '\$PORT' < /etc/nginx/conf.d/configfile.template > /etc/nginx/conf.d/default.conf && nginx -g 'daemon off;'"
Run Code Online (Sandbox Code Playgroud)

gitlab-ci.yml

default:
  image: google/cloud-sdk:alpine
  before_script:
    - gcloud config set project PROJECTID …
Run Code Online (Sandbox Code Playgroud)

javascript mongodb node.js reactjs google-cloud-run

5
推荐指数
1
解决办法
675
查看次数

Cloud Run 是否支持服务器发送事件 (SSE)?

我们无法让 SSE 从 Google Cloud Run 上的容器发送。我试过用一个简单的 SSE 示例(https://github.com/kljensen/node-sse-example)来托管一个容器,看看它是否在我们的库中——不。

我从服务器看到客户端连接(就像最初的 GET 工作一样),但没有从服务器发送事件。该EventSource客户端从不改变CONNECTINGCONNECTED

从 Cloud Run 文档来看,是否支持这有点含糊不清(强调我的):

Cloud Run(全代管式)目前不支持 HTTP 流式传输。因此,不支持使用 WebSockets 和 gRPC(流式 RPC)等协议的入站请求。

作为一个例外,Cloud Run(全托管式)服务支持用于入站请求的一元 gRPC。

对于出站请求,Cloud Run(完全托管)支持 WebSockets 和 gRPC。

SSE 不会算作出站请求,还是我误解了?

google-cloud-run

4
推荐指数
1
解决办法
1009
查看次数

将我自己的 SSL 证书与 Google Cloud Run(完全托管)一起用于 SSL 固定

我想固定我的完全托管的 Google Cloud Run 集群的证书。

我可以固定 Google 生成的 SSL 证书,但我不知道我是否可以依靠它们来保留相同的证书,直到它过期,而且我无法为客户端准备他们将生成的未来 SSL 证书,因为我不是在 Google 自动安装它们之前就知道它们。

换句话说,他们的软件可能会偶尔重新生成它以进行优化或其他一些内部逻辑。

是否有其他解决方案(不包括签署每个回复)?

谢谢

ssl-certificate google-cloud-platform google-cloud-run

4
推荐指数
1
解决办法
633
查看次数

使用“gcloud run deploy”时,如何使用命令行参数指定服务名称?

使用时gcloud run deploy,如何使用命令行参数指定服务名称?我希望防止在部署时需要交互。

我目前正在像这样部署我的服务:

gcloud run deploy --image gcr.io/<PROJECT>/<TAG> --platform managed
Run Code Online (Sandbox Code Playgroud)

google-cloud-platform gcloud google-cloud-run

4
推荐指数
1
解决办法
577
查看次数

尝试在 Cloud Run 中使用 Google Cloud Storage 时调用方没有权限

我正在尝试使用 Cloud Storage 在 Google Cloud Run 上设置 Node 项目。使用创建的服务帐户时遇到身份验证问题。

创建服务帐户时,我确实成功下载了 JSON 令牌,并在本地开发环境中正确运行了所有内容。

问题是当我将应用程序成功部署到 Cloud Run 时,我收到以下错误: Error: The caller does not have permission

当我尝试获取用于将文件上传到存储桶的签名 URL 时会发生这种情况。

我像这样创建存储客户端:

const { Storage } = require("@google-cloud/storage");
const storage = new Storage();
Run Code Online (Sandbox Code Playgroud)

...在我的脚本中,调用是这样的:

const [url] = await storage
  .bucket(bucketName)
  .file(filename)
  .getSignedUrl(options);
Run Code Online (Sandbox Code Playgroud)

我已经为 IAM 服务账户设置了以下权限:

  • Cloud SQL 客户端- 也许相关?我让 Cloud SQL 在已部署的环境中成功运行。
  • 服务帐户用户- 需要用作服务帐户吗?
  • 存储对象创建器- 我只需要能够从这个项目创建签名的上传 url。

我还通过控制台将提到的服务帐户分配给了 Cloud Run 实例。

只是为了确认,该应用程序使用服务帐户 JSON 密钥在本地 100% 正确运行,只是在 Google Cloud 中运行时无法正常工作。

node.js google-cloud-storage google-cloud-platform google-cloud-iam google-cloud-run

4
推荐指数
1
解决办法
1176
查看次数

Google Cloud Run 中的 docker-compose.yml

当涉及到 docker-compose、Dockerfile 以及 GCP 的服务 Cloud Run 的工作原理时,我有一个很大的理解问题。这使我无法在我拥有的项目中取得进展,而且我几乎无所事事可尝试。

我有一个 docker-compose.yml 文件,内容如下:

version: '2'

services:

    # The Application
    app:
        container_name: laravel_app
        build:
            context: ./
            dockerfile: docker/app.dockerfile
        volumes:
            - ./storage:/var/www/storage

    # The Web Server
    web:
        container_name: nginx_server
        build:
            context: ./
            dockerfile: docker/web.dockerfile
        volumes:
        - ./storage/logs/:/var/log/nginx
        ports:
        - 8080:80
Run Code Online (Sandbox Code Playgroud)

如您所见,它非常简单,有两种服务,一种用于带有 php 的应用程序,另一种用于服务器。两者都有自己的 dockerfiles 并且构建是正确的。在本地一切正常,没有问题。

我现在想在 GCP 上的 Cloud Run 服务中部署这些服务。在挖掘之后,我发现可能只能使用单个Dockerfile. 有没有办法将 docker-compose.yml 容器部署到 Cloud Run?我应该使用其他服务吗?

docker google-cloud-platform docker-compose google-cloud-run

4
推荐指数
1
解决办法
4104
查看次数

使用 GCP API 网关通过私有入口将 Cloud Run 后端前置

我想在我的 Cloud Run 托管 API 前面使用 API 网关,并且只允许从 API 网关访问 Cloud Run URL。

我目前有一个 API 部署到 Cloud Run,并启用了“公共”入口和授权。这有效,但是我很好奇是否可以将 Cloud Run 上的入口模型更改为“内部”,以完全避免将任何互联网流量路由到我的 Cloud Run 容器。

我知道 API Gateway 处于 Beta 版,内部入口的某些方面似乎也是 Beta 版——但是我很好奇是否有办法使这项工作发挥作用。

根据入口文档,似乎如果我能以某种方式使我的 API 网关请求来自 VPC 网络,则此设置应该可以工作,但是我无法找到在 API 网关端实现此目的的方法。

google-cloud-platform google-cloud-run google-vpc google-cloud-api-gateway

4
推荐指数
1
解决办法
414
查看次数

如何在 Cloud Run 中以特权运行 docker 容器

我有一个 docker 容器,需要使用 --privileged 运行,以便在启动后建立 VPN 连接

我正在使用 Cloud Build 将其迁移到 Cloud Run

我尝试了 --container-privileged 但这似乎只适用于 GCE,我还在cloudbuild.yaml 中的调用中添加了以下内容,但它args抱怨gcloud run deployerror: "Invalid command \"docker run --privileged\": file not found anywhere in PATH

   - --command
    - docker run --privileged
Run Code Online (Sandbox Code Playgroud)

docker google-cloud-platform google-cloud-build google-cloud-run docker-privileged

4
推荐指数
1
解决办法
1302
查看次数

如何将 Cloud Run 容器执行到 Airflow DAG 中?

我正在尝试使用 Cloud Run 来运行容器作为 Airflow 的 DAG 的任务。

似乎没有像 CloudRunOperator 或类似的东西,我在文档中找不到任何内容(Cloud Run 和 Airflow 都可以)。

有人处理过这个问题吗?如果是,我如何使用 Cloud Run 运行容器并处理 xcom?

提前致谢!!

google-cloud-platform airflow google-cloud-composer google-cloud-run

4
推荐指数
1
解决办法
5378
查看次数