本指南简要介绍了其他 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 进行部署。
根据部署函数时使用的 API,会发生以下情况:
如果您使用 Cloud Run Admin API 部署了函数,则会发生以下情况:
源代码会上传到没有保留期限的 Cloud Storage 存储桶。
- 如果您使用的是默认加密,则存储桶的名称会自动生成,并命名为
run-sources-PROJECT_ID-REGION
。 - 如果您使用客户管理的加密密钥 (CMEK) 保护数据,则存储桶名称不会自动生成,您必须提供存储桶名称。
- 如果您使用的是默认加密,则存储桶的名称会自动生成,并命名为
源代码会提交到 Cloud Build,Google Cloud 的 Buildpack 和 Functions 框架会在其中创建容器映像。请注意,Cloud Build 服务账号会构建容器映像。
然后,容器映像会通过自动创建的存储桶
REGION-docker.pkg.dev/PROJECT_ID/cloud-run-source-deploy
上传到 Artifact Registry。映像会作为服务部署到 Cloud Run。
您可以使用 Eventarc、Pub/Sub 或其他 HTTP 触发器触发或调用函数。
如果您使用 Cloud Functions API (v2) 部署了函数,则会发生以下情况:
源代码会上传到没有保留期限的 Cloud Storage 存储桶。
存储桶的名称是自动生成的,遵循以下格式:
- 如果您使用的是默认加密,则该存储桶的名称为
gcf-v2-sources-PROJECT_NUMBER-REGION
。 - 如果您使用 CMEK 保护数据,则存储桶的名称为
gcf-sources-PROJECT_NUMBER-REGION-CMEK_KEY_HASH
。
- 如果您使用的是默认加密,则该存储桶的名称为
源代码会提交到 Cloud Build,Google Cloud 的 Buildpack 和 Functions 框架会在其中创建容器映像。请注意,Cloud Build 服务账号会构建容器映像。
然后,容器映像会通过自动创建的存储桶
REGION-docker.pkg.dev/PROJECT_ID/gcf-artifacts
上传到 Artifact Registry。映像会作为服务部署到 Cloud Run。
您可以使用 Eventarc、Pub/Sub 或其他 HTTP 触发器触发或调用函数。
后续步骤
- 了解不同类型的函数以及用于触发函数的选项。
- 如果您之前使用 Cloud Functions API 创建了函数,请参阅 Cloud Run functions 比较指南,了解这两个版本的 Cloud Run functions 之间的区别。