了解 App Hosting 及其工作原理

App Hosting 会处理一系列复杂的后台任务,以简化应用的部署。本页介绍了该任务流程的关键部分,并提供了有关您可能需要根据应用需求自定义流程的各个位置的信息。

Google Cloud 和 App Hosting 架构

App Hosting 会协调一组 Google Cloud 产品,以便您部署、分发和监控 Web 应用。应用使用 Cloud Build 构建,在 Cloud Run 上分发,并缓存在 Cloud CDN 中。Cloud Secret Manager 等集成服务可确保 API 密钥安全无虞。

本页中介绍的架构的示意图。

  1. 当提交内容推送到您的正式分支时,Google Cloud Developer Connect 会向 Firebase App Hosting 发送事件。
  2. 为了响应此事件,Firebase App Hosting 会为连接到代码库的每个后端启动新的发布。
  3. Firebase App Hosting 会为您的提交创建一个新的 Cloud Build build。在此作业中,Google Cloud Buildpack 会确定应用中使用的框架,以创建适合应用的容器和配置(包括环境变量、密钥、实例最小值或最大值、并发内存、CPU 和 VPC 配置)。
  4. Cloud Build 作业完成后,您的容器会存储在专用于 Firebase App HostingArtifact Registry 代码库中。然后,Firebase App Hosting 会使用您的映像和配置向 Cloud Run 服务添加新的 Cloud Run 修订版本。验证 Cloud Run 修订版是否正常运行后,Firebase App Hosting 会修改其流量配置,将所有新请求指向新的 Cloud Run 修订版。至此,该功能的发布已完成。
  5. 当请求发送到 Firebase App Hosting 上托管的网站时,启用了 Cloud CDN 的 Google Cloud 负载平衡器会处理该请求。未缓存的请求会发送到您的 Cloud Run 服务。

框架集成

App Hosting 为以下框架中开发的 Web 应用提供预配置的构建和部署支持:

  • Next.js 13.5.x 及更高版本
  • Angular 18.2.x 及更高版本

如需详细了解特定版本和支持级别,请参阅支持时间表

除了 Next.js 和 Angular 之外,App Hosting 还支持能够提供与我们的输出软件包规范相匹配的构建输出的任何 Web 框架。如需详细了解 App Hosting 支持的框架、框架适配器和相关工具,请参阅 App Hosting 的框架和工具

App Hosting 代码库集成的工作原理

GitHub 代码库与 App Hosting 后端之间的重要连接由 Developer Connect 处理,这是 Google Cloud 面向外部 DevOps 工具的连接平台。在创建 App Hosting 后端期间,Developer Connect 的界面工作流会引导您完成 Firebase GitHub 应用的安装。此过程中的关键步骤如下:

  1. 您向 Developer Connect 授予 Secret Manager Admin 角色。这样,系统便可将凭据安全地存储为 Cloud Secret Manager 中的“Secret”。
  2. 您授权 Firebase GitHub 应用访问您的 GitHub 代码库。您可能需要额外的 GitHub 权限才能访问正确的代码库。
  3. Developer Connect 会在项目的 Secret Manager 代码库中存储专用的 GitHub 授权令牌;请勿修改或删除此令牌。

此外,App Hosting 还与 GitHub Checks API 集成,以提供对发布版本的检查。通过此检查,您可以在 GitHub 中查看发布状态,并在出现任何错误时调试部署流程。

与 Firebase 和其他 Google 服务集成

App Hosting 会同时设置 build 和运行时环境,以便您使用 Google 应用默认凭据初始化 Firebase Admin SDK。这样,您的后端便可以在构建和运行时与其他 Firebase 产品进行通信。如需详细了解如何初始化应用以及其他与 Firebase SDK 相关的主题,请参阅在 Web 应用中集成 Firebase SDK

App Hosting 个位置

App Hosting 会在特定位置(称为您的主要区域)创建后端资源。虽然 App Hosting 会与全球 CDN 集成以实现快速传送,但未缓存的内容会从应用的主要区域传送。这种 Web 应用位置的灵活性具有以下关键优势:

  • 将数据在地理位置上更靠近用户,从而提升性能并缩短延迟时间。
  • 某个区域的 App Hosting 发生灾难性故障不会影响在其他区域部署的 Web 应用。

在控制台或 Firebase CLI 中创建 App Hosting 后端时,您可以选择以下任一区域:

  • us-central1(爱荷华)
  • asia-east1(台湾)
  • europe-west4(荷兰)

App Hosting 后端服务账号

在构建期间和运行时,您的 App Hosting 后端会使用服务账号与其他 Google 服务进行身份验证。当您首次在 Firebase 项目中启用 App Hosting 时,系统会创建一个用于以下用途的默认服务账号:

firebase-app-hosting-compute@PROJECT ID.iam.gserviceaccount.com

此服务账号默认适用于所有后端,并且具有一组最少的权限,可让您构建、运行和监控应用。它还具有使用应用默认凭据对 Admin SDK 进行身份验证的权限,以便执行从 Cloud Firestore 加载数据等操作。请参阅 Firebase App Hosting 角色

如果您的应用需要在构建时或通过正在运行的后端与其他 Google 服务交互,您可以通过添加角色来自定义默认服务账号。例如,如果您的应用需要 Vertex AI 权限,您可能需要添加 roles/aiplatform.user 或某个相关角色。

关键术语和定义

  • 后端App Hosting 创建的一系列托管资源,用于构建和运行 Web 应用。
  • 发布版本:正式版应用的特定版本,与 git 提交关联。
  • 正式版分支:GitHub 代码库中要部署到正式版网址的分支。通常,它是功能分支或开发分支合并到的分支。