Cloud Run functions 概览

本指南简要介绍了其他 Google Cloud 服务如何参与 Cloud Run functions 函数部署过程。

准备工作

熟悉 Cloud Run 部署选项和资源模型指南中的 Cloud Run functions 和源代码部署概念。

架构概览

将函数的源代码部署到 Cloud Run functions 时,该源代码存储在 Cloud Storage 存储桶中。Cloud Build 随后会自动将您的代码构建到容器映像中,并将该映像推送到 Artifact Registry 映像注册表。当需要运行容器来执行函数时,Cloud Run functions 会访问此映像。

在下图中,“Cloud Run functions”框表示使用 Cloud Run Admin API 或 Cloud Functions API 在 Cloud Run 中部署的函数。通常,新版函数使用 Cloud Run Admin API 进行部署,而旧版函数使用 Cloud Functions API 进行部署。

从 Google Cloud 控制台调用 Cloud Run Admin API。
图 1:用户准备函数源代码并将其部署到 Cloud Run。

根据部署函数时使用的 API,会发生以下情况:

  • 如果您使用 Cloud Run Admin API 部署了函数,则会发生以下情况:

    1. 源代码会上传到没有保留期限的 Cloud Storage 存储桶。

      1. 如果您使用的是默认加密,则存储桶的名称会自动生成,并命名为 run-sources-PROJECT_ID-REGION
      2. 如果您使用客户管理的加密密钥 (CMEK) 保护数据,则存储桶名称不会自动生成,您必须提供存储桶名称。
    2. 源代码会提交到 Cloud Build,Google Cloud 的 Buildpack 和 Functions 框架会在其中创建容器映像。请注意,Cloud Build 服务账号会构建容器映像。

    3. 然后,容器映像会通过自动创建的存储桶 REGION-docker.pkg.dev/PROJECT_ID/cloud-run-source-deploy 上传到 Artifact Registry。

    4. 映像会作为服务部署到 Cloud Run。

    5. 您可以使用 Eventarc、Pub/Sub 或其他 HTTP 触发器触发或调用函数。

  • 如果您使用 Cloud Functions API (v2) 部署了函数,则会发生以下情况:

    1. 源代码会上传到没有保留期限的 Cloud Storage 存储桶。

      存储桶的名称是自动生成的,遵循以下格式:

      1. 如果您使用的是默认加密,则该存储桶的名称为 gcf-v2-sources-PROJECT_NUMBER-REGION
      2. 如果您使用 CMEK 保护数据,则存储桶的名称为 gcf-sources-PROJECT_NUMBER-REGION-CMEK_KEY_HASH
    2. 源代码会提交到 Cloud Build,Google Cloud 的 Buildpack 和 Functions 框架会在其中创建容器映像。请注意,Cloud Build 服务账号会构建容器映像。

    3. 然后,容器映像会通过自动创建的存储桶 REGION-docker.pkg.dev/PROJECT_ID/gcf-artifacts 上传到 Artifact Registry。

    4. 映像会作为服务部署到 Cloud Run。

    5. 您可以使用 Eventarc、Pub/Sub 或其他 HTTP 触发器触发或调用函数。

后续步骤