标签: google-cloud-run

输入与Google Cloud Run一起运行的Docker容器

是否可以输入由Google Cloud Run驱动的容器?以某种方式docker exec -it CONTAINER /bin/bash

我遇到一个错误,我无法在本地或基于Google Cloud Shell的容器上基于相同的映像来复制运行容器。
对于使用Cloud Shell连接到Cloud Run还是从本地环境进行连接,我并不挑剔。

docker docker-exec google-cloud-run

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

Google Cloud Run部署无法使用`gcloud` SDK CLI进行工作

我在Google Cloud run上创建了一项服务,可以使用Container注册表中的图像通过Google Cloud Console手动进行部署。但是从CLI部署失败。这是我正在使用的命令以及出现的错误。我无法理解我所缺少的内容:

$ gcloud beta run deploy service-name --platform managed --region region-name --image image-url
Deploying container to Cloud Run service [service-name] in project [project-name] region [region-name]
X Deploying...
  . Creating Revision...
  . Routing traffic...
Deployment failed
ERROR: (gcloud.beta.run.deploy) INVALID_ARGUMENT: The request has errors
- '@type': type.googleapis.com/google.rpc.BadRequest
  fieldViolations:
  - description: spec.revisionTemplate.spec.container.ports should be empty
    field: spec.revisionTemplate.spec.container.ports

Run Code Online (Sandbox Code Playgroud)

更新1: 我已使用来更新SDK gcloud components update,但仍然存在相同的问题

这是我的SDK版本

$gcloud version
Google Cloud SDK 270.0.0
beta 2019.05.17
bq 2.0.49
core 2019.11.04
gsutil 4.46
Run Code Online (Sandbox Code Playgroud)

我正在使用多阶段docker构建。这是我的Dockerfile: …

google-cloud-platform knative google-cloud-run

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

Firebase 托管缓存 ​​Google Cloud Run 请求

因此,我正在为 Web 应用程序试验 Firebase 托管和 Google Cloud Run。

我在 firebase 托管上部署了一个静态 SPA,以及一个重写规则,以将所有以 /api 开头的请求定向到我的 Google Cloud Run 服务。

我的 firebase.json 文件如下所示:

{
  "hosting": {
    "public": "dist",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ],
    "rewrites": [
      {
        "source": "**/api/**",
        "run": {
          "serviceId": "myservice-api",  
          "region": "europe-west1"     
        }
      },
      {
        "source": "**",
        "destination": "/index.html"
      }
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

起初,似乎一切都按预期进行,所有 /api 请求都由我的 Google Cloud Run 服务处理。然而,我开始注意到一些请求的奇怪行为,因为服务器返回的响应完全不是我所期望的。进一步研究一下,我注意到这些请求没有显示在我的 Cloud Run 服务的日志中。

所以我检查了浏览器收到的响应标头,并注意到响应来自 Firebase 缓存而不是 Cloud Run 服务:

accept-ranges: bytes
access-control-allow-origin: *
content-length: 245
content-type: application/json
date: Wed, …
Run Code Online (Sandbox Code Playgroud)

firebase firebase-hosting google-cloud-run

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

是否可以在 GCP 中使用带有防火墙的完全托管服务(Cloud Run 或 App Engine)?

问题。我正在寻找一种敏捷的方式来将 docker 容器(存储在 GCR.IO 上)拍摄到 GCP 上的托管服务:

  • 一个gcr.io/project/helloworld带有私有数据的docker 容器(比如 Cloud SQL 后端)——无法面对现实世界。
  • 一堆我想公开它的 IP:说 ["1.2.3.4" , "2.3.4.0/24" ]。

我的理想平台是 Cloud Run,但 GAE 也能工作。

我想以敏捷的方式进行开发(比如用 2-3 行代码部署),是否可以秘密地运行我的服务,但又超级容易?我们不是在谈论一个巨大的生产项目,而是在谈论玩弄和编写一个 POC,你想通过互联网安全地分享给几个朋友,确保世界其他地方得到 403。

到目前为止我尝试过的。

唯一容易工作的想法是带有 docker-friendly 操作系统(如 cos)的 GCE vm,我可以在其中设置防火墙规则。这有效,但它是一次性 VM 上的一个蹩脚的 docker 应用程序。除非我在 cron/startup 上稳定它,否则机器将永远运行并在重新启动时死亡。看起来我在做别人的工作。

到目前为止我尝试过的其他一切都失败了:

  • 云跑。令人惊讶,但无法在其上设置防火墙规则,或 Cloud Director,.. 似乎只能与 IAP 一起使用,这很难设置。
  • 盖伊。适用于多个 IP,并且无法分离公共 IP 或对其设置防火墙。我设法在应用程序中进行 IP 过滤但似乎有点冒险。我不 [想] 相信我的编码技能 :)
  • 云甲。仅支持我没有的 HTTPS 负载均衡器。我也没有 MIG 可以指出。我想要简单。
  • Traffic Director并且需要一个 HTTP L7 平衡器。但是我在一个 …

cloud google-app-engine google-cloud-platform google-cloud-armor google-cloud-run

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

使用“--set-sql-instance”参数部署到云运行时,云构建权限被拒绝

我正在尝试配置构建maven springboot项目然后部署到云运行的云构建触发器。当我没有指定要连接的云 sql 实例时,我遇到了一个问题,但是当我添加"--set-cloudsql-instances", "${_DATABASE_CONNECTION_NAME}"为参数之一时,它会在云构建中引发错误,如下所示:

Step #1: ERROR: (gcloud.beta.run.deploy) PERMISSION_DENIED: The caller does not have permission
Finished Step #1
ERROR
ERROR: build step 1 "gcr.io/cloud-builders/gcloud" failed: exit status 1
Run Code Online (Sandbox Code Playgroud)

以下是我的 cloudbuild.yml

steps:
  - name: 'gcr.io/kaniko-project/executor:latest'
    args:
      - --destination=gcr.io/$PROJECT_ID/${_IMAGE_NAME}
      - --cache=true
  - name: 'gcr.io/cloud-builders/gcloud'
    args: [
      "beta", "run",
      "deploy", "${_SERVICE_NAME}-${_PROFILE}",
      "--image", "gcr.io/${PROJECT_ID}/${_IMAGE_NAME}",
      "--region", "${_REGION}",
      "--platform", "managed",
      "--set-cloudsql-instances", "${_DATABASE_CONNECTION_NAME}",
      "--allow-unauthenticated",
      "--set-env-vars", "SPRING_PROFILES_ACTIVE=${_SPRING_PROFILE},DATABASE_CONNECTION_NAME=${_DATABASE_CONNECTION_NAME},DATABASE_NAME=${_DATABASE_NAME},DATABASE_USERNAME=${_DATABASE_USERNAME},DATABASE_PASSWORD=${_DATABASE_PASSWORD},MINIO_ACCESS_KEY=${_MINIO_ACCESS_KEY},MINIO_SECRET_KEY=${_MINIO_SECRET_KEY},MINIO_HOSTNAME=${_MINIO_HOSTNAME},MINIO_PORT=${_MINIO_PORT}"
    ]
images:
  - gcr.io/${PROJECT_ID}/${_IMAGE_NAME}
Run Code Online (Sandbox Code Playgroud)

我已经为服务帐户设置了角色/权限,如下所示:

  • {PROJECT_ID}-compute@developer.gserviceaccount.com : 编辑器,Cloud Sql 客户端 <-- 默认 SA
  • <Cloud run service …

google-cloud-sql google-cloud-platform google-cloud-build google-cloud-run

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

Google Cloud 上的 IP 过滤运行

我有一个 Angular Web 应用程序,我想使用 Google Cloud run 进行部署。但是,我只需要从预定义的 IP 地址列表中才能看到该应用程序。

我可以简单地在谷歌云平台防火墙下设置 ip 允许/拒绝规则还是需要其他方法?

提前致谢,

妮可

google-cloud-run

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

使用 VPC 和对等网络时,如何从 Google Cloud Run 连接到 MongoDB Atlas?

我正在尝试使用 VPC 和对等网络从 Google Cloud Run 连接到 MongoDB,但我似乎无法建立连接。目标是能够从 Cloud Run 连接到 Atlas,同时只允许特定的 IP 范围。

我的设置是:

  • 在 Google Cloud 上运行的 MongoDB Atlas。
  • 在与 MongoDB 图集相同的区域上运行 NodeJS 服务器的 Google Cloud Run 容器(尽管据我所知这无关紧要)。

我采取了以下步骤:

  1. 按照https://cloud.google.com/vpc/docs/using-vpc 中的说明在 Google Cloud 端创建 VPC 。

  2. 在我的 VPC 和 MongoDB Atlas VPC 之间设置网络对等互连:https : //docs.atlas.mongodb.com/security-vpc-peering/

  3. 使用连接器设置无服务器 VPC 访问:https : //cloud.google.com/vpc/docs/configure-serverless-vpc-access

  4. 使用上述连接器重新部署的云运行容器:https : //cloud.google.com/run/docs/configuring/connecting-vpc

  5. 将步骤 3 中的 CIDR 范围添加到 MongoDB 图集中的白名单中,并删除了之前的开放范围 0.0.0.0/0。

所有步骤都成功(绿点等),但是当我在第 5 步之后尝试连接时,连接失败。我错过了什么?

mongodb google-cloud-platform mongodb-atlas google-cloud-run

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

Google Cloud Run(完全托管):无法自定义域映射

当我尝试将自定义域映射到我的服务时,我得到:“无法创建域映射:在 europe-west3 中不允许创建域映射”。如果 Google Run 无法映射到自定义域,那么它在许多用例中似乎毫无用处,所以我想知道这是否真的不可能,或者这是一个错误,或者我必须先启用某些功能才能使用此功能。

google-cloud-run

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

Google Cloud Run - 使用 Eventarc API 触发(资源名称语法)

Google 最近发布了新的 Eventarc API 触发器,例如 Cloud run。我的想法是为我的云存储构建一个触发器,例如:存储桶中的新文件?触发云运行(带审计日志触发器)

cloud_run_path: ...run.app/api/v1/data-fetcher bucket_id: test-bucket

我刚刚使用以下命令创建了触发器,并且成功了:

gcloud beta eventarc triggers create test-event-trigger \
--location=europe-west1 \
--destination-run-service=test-event-data-fetcher \
--destination-run-path=/api/v1/data-fetcher \
--destination-run-region=europe-west1 \
--matching-criteria="type=google.cloud.audit.log.v1.written" \
--matching-criteria="serviceName=storage.googleapis.com" \
--matching-criteria="methodName=storage.objects.create" \
--matching-criteria="resourceName=projects/_/buckets/test-bucket" \
--service-account=$PROJECT_NR-compute@developer.gserviceaccount.com
Run Code Online (Sandbox Code Playgroud)

问题是,我不希望触发器在项目的所有存储桶中查找新文件,只为一个特定的存储桶(例如 test-bucket)查找。我现在用不同的文字测试了几个选项(用 :, =~, ...),但触发器不接受这些。也许您可以帮助我解决语法问题或向我展示如何为我的项目中的一个特定存储桶创建触发器?像这样它不起作用......

sdk google-cloud-storage google-cloud-platform google-cloud-run event-arc

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

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
查看次数