是否可以输入由Google Cloud Run驱动的容器?以某种方式docker exec -it CONTAINER /bin/bash?
我遇到一个错误,我无法在本地或基于Google Cloud Shell的容器上基于相同的映像来复制运行容器。
对于使用Cloud Shell连接到Cloud Run还是从本地环境进行连接,我并不挑剔。
我在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: …
因此,我正在为 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) 问题。我正在寻找一种敏捷的方式来将 docker 容器(存储在 GCR.IO 上)拍摄到 GCP 上的托管服务:
gcr.io/project/helloworld带有私有数据的docker 容器(比如 Cloud SQL 后端)——无法面对现实世界。我的理想平台是 Cloud Run,但 GAE 也能工作。
我想以敏捷的方式进行开发(比如用 2-3 行代码部署),是否可以秘密地运行我的服务,但又超级容易?我们不是在谈论一个巨大的生产项目,而是在谈论玩弄和编写一个 POC,你想通过互联网安全地分享给几个朋友,确保世界其他地方得到 403。
到目前为止我尝试过的。
唯一容易工作的想法是带有 docker-friendly 操作系统(如 cos)的 GCE vm,我可以在其中设置防火墙规则。这有效,但它是一次性 VM 上的一个蹩脚的 docker 应用程序。除非我在 cron/startup 上稳定它,否则机器将永远运行并在重新启动时死亡。看起来我在做别人的工作。
到目前为止我尝试过的其他一切都失败了:
cloud google-app-engine google-cloud-platform google-cloud-armor google-cloud-run
我正在尝试配置构建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
我有一个 Angular Web 应用程序,我想使用 Google Cloud run 进行部署。但是,我只需要从预定义的 IP 地址列表中才能看到该应用程序。
我可以简单地在谷歌云平台防火墙下设置 ip 允许/拒绝规则还是需要其他方法?
提前致谢,
妮可
我正在尝试使用 VPC 和对等网络从 Google Cloud Run 连接到 MongoDB,但我似乎无法建立连接。目标是能够从 Cloud Run 连接到 Atlas,同时只允许特定的 IP 范围。
我的设置是:
我采取了以下步骤:
按照https://cloud.google.com/vpc/docs/using-vpc 中的说明在 Google Cloud 端创建 VPC 。
在我的 VPC 和 MongoDB Atlas VPC 之间设置网络对等互连:https : //docs.atlas.mongodb.com/security-vpc-peering/
使用连接器设置无服务器 VPC 访问:https : //cloud.google.com/vpc/docs/configure-serverless-vpc-access
使用上述连接器重新部署的云运行容器:https : //cloud.google.com/run/docs/configuring/connecting-vpc
将步骤 3 中的 CIDR 范围添加到 MongoDB 图集中的白名单中,并删除了之前的开放范围 0.0.0.0/0。
所有步骤都成功(绿点等),但是当我在第 5 步之后尝试连接时,连接失败。我错过了什么?
mongodb google-cloud-platform mongodb-atlas google-cloud-run
当我尝试将自定义域映射到我的服务时,我得到:“无法创建域映射:在 europe-west3 中不允许创建域映射”。如果 Google Run 无法映射到自定义域,那么它在许多用例中似乎毫无用处,所以我想知道这是否真的不可能,或者这是一个错误,或者我必须先启用某些功能才能使用此功能。
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
我使用 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) google-cloud-run ×10
mongodb ×2
cloud ×1
docker ×1
docker-exec ×1
event-arc ×1
firebase ×1
javascript ×1
knative ×1
node.js ×1
reactjs ×1
sdk ×1