当我创建一个未经身份验证的(公共)Cloud Run 端点来托管 API 时,我有哪些选项可以保护此端点免受发出数十亿 HTTP 请求的恶意用户的攻击?
只需 10 美元,您就可以发起第 7 层HTTP 洪水攻击,每秒可以发送 25 万个请求。让我们假设您的 Cloud Run 端点扩展并处理所有请求。仅就调用而言,您将支付 360 美元/小时(每百万个请求 0.40 美元)。
请注意,如果攻击未分布在多个 Cloud Run 终端节点上,您可能会遇到并发限制和最大实例限制。我还有哪些其他控件?
据我了解,Cloud Armor和Cloud CDN的常用防御绑定到Global Load Balancer,Cloud Run 不可用,但 Cloud Run on GKE 可用。
我有这种情况,因为文档不清楚。该gcloud builds submit --tag gcr.io/[PROJECT-ID]/helloworld命令将
快速指南只认为应用程序是一个预编译的应用程序,并且需要按照 .gitignore 文件夹的所有内容来运行应用程序。人们不会意识到新技术的所有这些。我只是自己想出来的。
因此,完成所有这些操作的另一种方法是在 docker 文件中包含构建步骤(这将使我的图像变重)或在本地(手动)创建一个 docker 图像,然后将图像提交到存储库(手动)然后发布到云运行(使用记录的或手动的第二个命令)。
我这里有什么遗漏吗?
docker google-cloud-platform google-cloud-build google-cloud-run
我是 Docker 方面的超级新手,最近将一个项目从 App Engine 移至 Cloud Run。很简单,很喜欢。
然而,现在我正在尝试更新图像(因为我添加了一些新代码)。我知道我需要进入实际的容器来更新图像(我认为?),但是当我尝试这样做时docker run,我收到unexpected operator错误。
这让我彻底抓狂。
我无法启动容器。我无法编辑我的图像。我无法在 Cloud Run 上上传新版本。
据我所知,unexpected operator错误必须处理 Dockerfile。这是我的 Dockerfile(由 Google 提供,用于在 Cloud Run 上部署映像)。
Dockerfile
#Use the official Node.js 10 image
#https://hub.docker.com/_/node
FROM node:10
#Create and change to the app directory
WORKDIR /usr/src/app
#Copy application dependency manifests to the container image.
#A wild card is used to ensure both package.json AND package-lock.json are copied.
#Copying this separately prevents re0running npm install on every …Run Code Online (Sandbox Code Playgroud) 我想知道是否可以使用 Google 部署管理器将服务部署到 Cloud Run。如果不是,这是否在路线图上?
https://cloud.google.com/deployment-manager/docs/configuration/supported-resource-types
是否有任何内置方法可以监控在托管 Google Cloud Run 实例中运行的应用程序的内存使用情况?
在托管的 Cloud Run 服务的“Metrics”页面中,有一个名为“Container Memory Allocation”的项目。但是,据我了解,此图是指实例的最大分配内存(在设置中选择),而不是容器内实际使用的内存。(如果我错了,请纠正我。)
在托管 Cloud Run ( https://cloud.google.com/monitoring/api/metrics_gcp#gcp-run )的可用指标的 Stackdriver Monitoring 列表中,似乎也没有任何与内存使用相关的指标,只分配内存。
先感谢您。
有没有办法在 Cloud Run 服务上运行 Cloud Endpoints?
假设我有以下内容,main.tf并且我想在定义 Cloud Endpoints 服务时使用 Cloud Run 的 URL。该 URL 应该存储在google_cloud_run_service.cloud-run.status.url. 下面的配置会引发错误。
输出terraform plan:
Error: Unsupported attribute
on main.tf line 411, in resource "google_endpoints_service" "cloud-run":
411: service_name = "${google_cloud_run_service.cloud-run.status.url}"
This value does not have any attributes.
Run Code Online (Sandbox Code Playgroud)
主要.tf:
[...]
#############
# Cloud Run #
#############
resource "google_cloud_run_service" "cloud-run" {
name = "cloud-run"
provider = "google-beta"
location = "europe-west1"
metadata {
namespace = "${var.gcp_project[var.env]}"
}
spec {
containers {
image = …Run Code Online (Sandbox Code Playgroud) google-cloud-endpoints google-cloud-platform terraform terraform-provider-gcp google-cloud-run
我刚刚将我的应用程序部署到了 Google Cloud Run。它有一个返回流响应的 HTTP 端点,因此客户端可以在数据传入时开始呈现数据,而不是等待响应完成(大约需要 10 秒)。
响应有一个 content-type header application/stream+json,数据作为单独的行写入响应。我已经通过 HTTPS 在其他地方部署了这个应用程序,并且流媒体在那里工作得很好。
但是,当部署在 Google Cloud Run 上时,客户端在响应完成之前不会收到任何数据。
这是 Google Cloud Run 的限制,还是有办法解决这个问题?
我有一个包含 puppeteer 网络爬虫的 docker 图像。当我构建和运行它时,它在我的本地机器上运行良好。它还在云构建中构建良好,部署到云运行并启动 http 服务器。但是,当我运行处理 puppeteer 实例的 cron 作业之一时,它超时并显示以下错误消息:
(node:13) UnhandledPromiseRejectionWarning: TimeoutError: Timed out after 30000 ms while trying to connect to Chrome! The only Chrome revision guaranteed to work is r706915
Run Code Online (Sandbox Code Playgroud)
完整日志:
A 2019-12-03T15:12:27.748625Z (node:13) UnhandledPromiseRejectionWarning: TimeoutError: Timed out after 30000 ms while trying to connect to Chrome! The only Chrome revision guaranteed to work is r706915
A 2019-12-03T15:12:27.748692Z at Timeout.onTimeout (/node_modules/puppeteer/lib/Launcher.js:359:14)
A 2019-12-03T15:12:27.748705Z at ontimeout (timers.js:436:11)
A 2019-12-03T15:12:27.748716Z at tryOnTimeout (timers.js:300:5)
A 2019-12-03T15:12:27.748726Z at listOnTimeout (timers.js:263:5) …Run Code Online (Sandbox Code Playgroud) node.js docker google-cloud-platform puppeteer google-cloud-run
刚接触 Google Cloud Run 并尝试让两个 node.js 微服务通过 gRPC 进行内部通信。
客户端界面:
constructor(address: string, credentials: grpc.ChannelCredentials, options?: object);
Run Code Online (Sandbox Code Playgroud)
客户端代码:
const client: MyClient = new MyClient('my-service-abcdefgh3a-ew.a.run.app:443', grpc.credentials.createSsl());
Run Code Online (Sandbox Code Playgroud)
服务器代码:
const server = new grpc.Server();
server.addService<IMyServer>(MyService, new MyServer());
server.bind(`0.0.0.0:${process.env.PORT}`, grpc.ServerCredentials.createInsecure());
server.start();
Run Code Online (Sandbox Code Playgroud)
服务器设置为侦听 443。
当服务对公共请求开放时,上述内容似乎有效,但当您将服务器设置为内部时则无效。有任何想法吗?
node.js google-cloud-platform grpc grpc-node google-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: …
google-cloud-run ×10
docker ×3
node.js ×3
grpc ×1
grpc-node ×1
knative ×1
puppeteer ×1
serverless ×1
terraform ×1