您可以从任何能够发出 HTTPS 请求的服务发送 HTTPS 请求,以触发 Cloud Run 托管的服务。请注意,所有 Cloud Run 服务都有稳定的 HTTPS 网址。
部分用例包括:
- 自定义 RESTful Web API
- 专用微服务
- 适用于您的 Web 应用的 HTTP 中间件或反向代理
- 预封装的 Web 应用
创建公共服务
在 Cloud Run 上创建公共服务需要:
- 通过公共互联网访问服务
- 供公众使用的网址
如需将服务设为公开,请在deploy或部署之后的任何时间将您的服务设置为允许未经身份验证的(公共)访问。
您可以将首次部署服务时提供的稳定的自动分配网址用作 Cloud Run 上的公开网址。如需确定已部署服务的网址,请运行以下命令:
gcloud run services describe SERVICE --format 'value(status.url)'
Cloud Run 服务的网址格式为 https://[
TAG---]
SERVICE_IDENTIFIER.run.app
,其中 TAG 是指您请求的修订版本的流量标记,SERVICE_IDENTIFIER 是 Cloud Run 服务的稳定唯一标识符。请勿解析 SERVICE_IDENTIFIER,因为它没有固定格式,并且 SERVICE_IDENTIFIER 生成的逻辑可能会发生变化。
Cloud Run 会将所有 HTTP 请求重定向到 HTTPS,但会在 TLS 进入您的 Web 服务之前终止它。如果您的服务生成的 Web 资源引用了包含不安全网址 (http://
) 的其他 Web 资源,则您的网页可能会出现混合的内容警告或错误。
对所有引用 Web URI 使用 https
协议或考虑 HTTP 请求中的代理指令,例如 X-Forwarded-Proto
HTTP 标头。
您也可以使用自己的自定义网域。
HTTP 和 HTTP/2
默认情况下,当 HTTP/2 请求被发送到容器时,Cloud Run 会将这些请求降级为 HTTP/1。如果要明确将服务设置为使用 HTTP/2 端到端,请参阅使用 HTTP/2。
创建专用服务
如需在 Cloud Run 上创建专用服务,您需要使用 IAM 调用方权限来限制对该服务的访问。
您还可以使用应用级授权和身份验证机制(例如使用 Identity Platform)限制对服务的访问权限。
测试专用服务
测试专用服务的最简单方法是使用 Google Cloud CLI 中的 Cloud Run 代理。这会将专用服务代理到 http://localhost:8080
(或使用 --port
指定的端口),并向服务提供活跃账号的令牌或您指定的其他令牌。这使您可以使用网络浏览器或 curl
等工具。这是在浏览器中对网站或 API 进行非公开测试的推荐方法。
您可以在 Linux、macOS、WSL(首选)或 cygwin 环境中使用下面一行命令,在本地通过代理连接服务:
gcloud run services proxy SERVICE --project PROJECT-ID
您还可以使用 curl
等工具在 Authorization
标头中传递身份验证令牌,从而在不使用代理的情况下测试专用服务:
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" SERVICE_URL
专用服务到服务
Cloud Run 服务可以使用服务到服务身份验证来调用其他 Cloud Run 服务。
调用专用服务的示例代码
如需查看演示如何获取 ID 令牌并向专用服务发出 HTTP 请求的代码示例,请参阅对服务到服务进行身份验证主题。
使用中间件增强您的服务
HTTPS 代理可以分流 HTTP 服务中的常见功能,例如缓存、请求验证或授权。对于微服务,许多 HTTP 代理都是 API Gateway 解决方案或 Istio 等服务网格的一部分。
可用于增强 Cloud Run 服务的 Google Cloud 产品包括:
API 网关:您可以使用它来创建、保护和监控要用作其他 Cloud Run 服务的代理的 API。
Firebase 托管,您可以使用它来构建一个 Web 应用前端,该前端与 Cloud Run 作为动态后端一起使用。