Cloud Run 配置详解:身份、入口、容量与网络

验证:未记录
适用版本
未记录
验证范围
尚未登记验证记录。

Cloud Run 实验的配置参考,按服务创建顺序查阅。

服务、任务与版本#

对象 是什么 什么时候选
Service 通过 HTTP 请求或事件调用的服务,提供稳定 URL 网站、API、Webhook;本系列使用它
Job 执行到完成的任务,可手动或定时触发 批处理、数据迁移;容器完成后退出
Revision 保存某次部署的镜像与配置,创建后不可修改 发布、流量分配、回滚的目标
Instance 运行某个 Revision 容器的实例,可自动增加或回收 承载请求;不要当成固定 VM
Traffic tag 给 Revision 指定的访问标签,如 candidate 在正式切流前访问候选版本;不是容器镜像 tag

Service 可按比例把流量分给多个 Revision。镜像 tag(如 hello:v1)可变,digest 标识具体内容;发布记录应保存 Revision 与 digest。资源模型

从哪里创建,以及镜像如何准备#

Console:Cloud Run → Services → Deploy container / Create service,选择 Project、Region、镜像和服务名。镜像可来自 Artifact Registry;源码部署另需构建权限与 API。部署容器

优先与区域数据库部署在同 Region,以减少往返延迟;Serverless NEG 直接引用服务,无须固定容器 VPC IP。

容器端口和启动#

入口容器需监听 0.0.0.0:$PORT;127.0.0.1 无法被平台访问。--port=8080 设置目标端口及 PORT 环境变量,应用须自行使用该值。

平台终止 HTTPS,容器通常提供 HTTP。startup probe 检查启动,liveness probe 判断是否重启;它们与 ALB 的 VM 健康检查分开。

默认可写文件系统消耗内存且不持久;业务数据放 Cloud SQL / Cloud Storage 等存储。容器契约 另规定架构、启动与信号处理要求。

三种身份不要混用#

身份 做什么 本例
部署者 创建服务、发布新 Revision;还需能使用runtime Service Account 你登录 gcloud 的 Google 用户
runtime Service Account 容器访问 Google API 时使用的身份 lab-run;按需授予 Secret、Storage、SQL 等权限
调用者 向服务发 HTTP 请求的用户或程序 lab-caller;授予 roles/run.invoker

部署者在 runtime SA 上需 actAs(通常由 roles/iam.serviceAccountUser 提供)。跨项目镜像拉取还需给相应 service agent 仓库权限;runtime SA 的业务授权不能替代它。服务身份

IAM 保护的服务通常接收 ID token,audience 标识接收方,本例为 run.app URL。它不同于 Google 管理 API 的 access token;改用 ALB 域名时,仍用受支持的服务 audience 或显式配置自定义 audience。服务间认证

Ingress 和 IAM 是两层控制#

Ingress 管网络来源,IAM 管调用权限。 all 不等于匿名公开;放行 ALB 不等于 ALB 会自动替调用者完成认证。

Ingress 含义 场景
All(all) 允许从互联网等支持的入口到达,仍受调用认证约束 先验证服务本身;可以保持 IAM 认证
Internal(internal) 只接受符合 Cloud Run 内部来源定义的请求 内部服务,不接受外部 ALB 入口
Internal + Allow traffic from external Application Load Balancers(internal-and-cloud-load-balancing) 允许内部来源及外部 ALB 转发 用 ALB 作为外部入口,同时阻止互联网直接访问 run.app

Internal 不是简单的“同 Project 白名单”:

来源示例 被识别为 internal 的前提
同 Project 的 Cloud Scheduler / Tasks / Pub/Sub 使用默认 run.app URL;IAM authentication 仍单独满足
另一个 Cloud Run service / App Engine 即使同 Project,也需把调用路由经过被目标识别为 internal 的 VPC;不能只凭项目相同判断
本机普通公网请求 不因操作者拥有项目权限而成为 internal;需要符合规则的私网路径或改用允许的 ALB 入口

Shared VPC、VPC Service Controls 的条件见 内部来源规则。

ALB 许可不绑定具体 LB。关联关系是 ALB → Backend service → Serverless NEG → Cloud Run,见 ALB 架构。

组合 实际效果
All + 要求认证 公网可到达,但调用者需要身份和调用权限
Internal + 匿名允许 仍必须满足内部来源要求,匿名许可不会突破 ingress
Internal and Cloud Load Balancing + 匿名允许 可公开访问 ALB;互联网直连 run.app 仍受 ingress 限制
Internal and Cloud Load Balancing + 要求认证 经 ALB 到达后仍需有效调用身份;或另外配置受支持的 IAP 方案

本例用 allUsers → roles/run.invoker 公开服务;另有关闭 Invoker IAM check 的方式,删除 allUsers 不会重新开启该检查。公开访问还受 Organization Policy 限制。公开服务

实例数、并发、CPU 与内存#

配置 控制什么 选择依据
Minimum instances 保持就绪的最低实例数 0 允许空闲缩到零;大于 0 可减少冷启动
Maximum instances 限制扩容规模 结合后端容量设定;不要视为严格数据库连接配额
Concurrency 单个实例同时处理多少请求 依据代码线程安全、内存和处理时长压测
CPU / Memory 单实例资源 单请求开销及并发总开销,内存超限可能导致实例终止
Request timeout 平台等待请求响应的时长 与应用服务器、客户端及 ALB 限制一起核对
CPU allocation / Billing setting CPU 是否仅在请求期间分配等行为 有无请求外后台处理;必须结合当前模式确认

平台根据多项负载指标扩缩容,应用须支持多实例和重试;长批处理可选择 Job。并发、扩缩容

服务级和 Revision 级容量设置的范围不同;本实验 --min / --max 使用服务级设置。多个 Revision 同时运行时,数据库连接池还需考虑所有实例与滚动发布阶段。

超时、重试与后台工作#

Cloud Run 返回 504 时,处理该请求的容器不一定停止,代码可能继续写数据库;客户端或上游随后重试,会产生重复操作。写入接口应使用业务幂等键,并协调应用、调用方和平台 timeout。需要脱离请求持续执行的工作,按语义选择 Job 或持久队列,不能把返回 HTTP 响应当作后台任务已被可靠接管。Request timeout

配置与密钥#

普通配置用环境变量,密码与 API key 用 Secret Manager,仅授权 runtime SA 读取所需 Secret。环境变量和挂载方式的版本解析、刷新行为不同,见 Secret 实验及 配置说明。

出站网络:服务主动访问谁#

Ingress 管理别人如何访问 Cloud Run;egress 管理 Cloud Run 如何访问数据库、内部 API 或互联网。

  • Direct VPC egress:让服务直接使用指定 VPC、同 Region subnet 的网络路径,无需单独部署连接器。
  • Serverless VPC Access connector:另一种通过托管连接器接入 VPC 的方式。选型时核对功能支持与容量,不必与 Direct VPC egress 同时配置。
  • private-ranges-only:仅将匹配内部地址范围的流量送入 VPC。
  • all-traffic:将所有出站流量送入 VPC;普通公网出口还需相应路由和 NAT 等设计。

私网 Cloud SQL 还需数据库网络路径与认证,Auth Proxy 不自动建立该路径。Direct VPC egress、私网实验

Binary Authorization:检查哪些镜像可部署#

Binary Authorization 是部署时的镜像策略检查服务,例如要求可信流水线对镜像 digest 签发 attestation(签名证明)。

构建镜像 → 测试/扫描 → 生成批准证明 → 部署时核验策略 → 允许或拒绝发布

测试、扫描及 attestation 签发由流水线完成;勾选开关不会自动建立这些流程。接入时定义允许条件和签发权限,并验证合规镜像通过、缺少证明的镜像被拒绝。Binary Authorization

发布前检查#

确认目标项目与 Region、镜像与监听端口、运行身份、调用策略、ingress、实例容量和依赖网络。部署后检查 Revision Ready,测试允许的调用成功、应拒绝的入口失败,再切流。日志与常见状态码见 端到端排障。

搜索文档

输入关键词,搜索所有文档。

↑ ↓ 选择 · Enter 打开 · Esc 关闭