本指南介绍了如何使用 App Lifecycle Manager 租户来整理已部署的单元,以及如何将资源部署到单独的 租户项目 ,以隔离和管理资源。
如需大致了解租户和租户项目,请参阅租户和租户项目。
准备工作
在创建租户项目或资源之前,请执行以下操作:
- 在您的提供方项目中创建 Terraform 配置、Artifact Registry 代码库,并创建一个包含 SaaS 应用的制品。如需了解如何设置应用产品,请参阅 使用 App Lifecycle Manager 部署服务实例。
启用 App Lifecycle Manager 所需的 API。
启用 API 所需的角色
如需启用 API,您需要拥有
serviceusage.services.enable权限。如果您 创建了项目,则可能已通过 所有者角色 (roles/owner) 拥有此权限。否则,您可以通过 Service Usage Admin 角色 (roles/serviceusage.serviceUsageAdmin) 获得此权限。 了解如何授予角色。验证您是否已在 提供方项目内获得必要服务账号和 Identity and Access Management 角色的授予。 这包括用户创建的服务帐号,以及在提供方项目中授予
service-PROJECT-NUMBER@gcp-sa-saasservicemgmt.账号的权限。
设置租户项目
当您将租户的资源预配到单独的项目中时,每个租户的资源、IAM 政策、配额和网络配置都会分开,这样一来,一个租户的违规或错误配置就不太可能影响其他租户。
您需要提供:
- 一个提供方项目,以及
为每个租户提供一个租户项目。
控制台
如需使用 Google Cloud 控制台设置租户项目和提供方项目,请执行以下操作:
- 创建一个提供方项目,并为每个租户创建一个租户项目。
- 在租户项目和提供方项目中启用结算功能。
在租户项目中启用 App Lifecycle Manager 所需的 API。
启用 API 所需的角色
如需启用 API,您需要拥有
serviceusage.services.enable权限。如果您 创建了项目,则可能已通过 所有者角色 (roles/owner) 拥有此权限。否则,您可以通过 Service Usage Admin 角色 (roles/serviceusage.serviceUsageAdmin) 获得此权限。 了解如何授予角色。验证您的租户项目是否具有具有必要权限的启动操作服务账号。
如需了解详情,请参阅 App Lifecycle Manager 服务账号。
您已成功设置租户项目和提供方项目。创建提供方项目和租户项目并为其启用结算功能后,您可以创建租户资源并将单元与租户相关联。
gcloud
如需使用 Google Cloud CLI 设置提供方项目和租户项目,请执行以下操作:
创建提供方项目,并为每个租户创建一个租户项目:
gcloud projects create PRODUCER_PROJECT_ID --name="SaaS producer project" [--folder=folder-id] gcloud projects create TENANT_PROJECT_ID --name="SaaS tenant A project" [--folder=folder-id]将
PRODUCER_PROJECT_ID替换为表示提供方项目 ID 的字符串标识符。TENANT_PROJECT_ID:表示租户项目 ID 的字符串标识符 。
为租户项目和提供方项目启用结算功能:
gcloud beta billing projects link PRODUCER_PROJECT_ID --billing-account=BILLING_ACCOUNT_ID gcloud beta billing projects link TENANT_PROJECT_ID --billing-account=BILLING_ACCOUNT_ID将
PRODUCER_PROJECT_ID替换为表示提供方项目 ID 的字符串标识符。TENANT_PROJECT_ID:表示租户项目 ID 的字符串标识符 。BILLING_ACCOUNT_ID替换为您要与指定项目关联的结算账号的 ID。
为每个租户项目授予启动操作服务帐号必要的 Identity and Access Management 角色:
gcloud projects add-iam-policy-binding TENANT_PROJECT_ID \ --member='serviceAccount:SERVICE_ACCOUNT@PRODUCER_PROJECT_ID.' \ --role=ROLE将
TENANT_PROJECT_ID:表示租户项目 ID 的字符串标识符 。PRODUCER_PROJECT_ID替换为表示提供方项目 ID 的字符串标识符。SERVICE_ACCOUNT替换为您要在指定项目中授予角色的服务帐号。ROLE替换为要授予的 Identity and Access Management 角色。您需要为您要授予指定服务帐号的每个 角色运行
gcloud projects add-iam-policy-binding(--role='roles/compute.admin', 例如)。
您已成功设置租户项目和提供方项目。创建提供方项目和租户项目并为其启用结算功能后,您可以创建租户资源并将单元与租户相关联。
创建租户资源
在应用产品中创建 租户 资源以代表您的客户:
在 Google Cloud 控制台中,依次前往 App Lifecycle Manager > 租户。
点击创建 。
在租户名称 框中,输入租户资源的名称。
可选:在客户资源 框中,提供具有客户定义设置的消费者资源以进行集成。
在应用产品 框中,选择您要与租户关联的应用产品。
在区域 下拉列表中,选择要存储租户元数据的区域。
可选:点击添加标签 ,为租户添加键值对标签。
点击创建 以创建租户资源。
您已成功创建租户资源。
将单元与租户相关联
创建租户并部署单元后,您可以将它们彼此关联。 此关联主要用作组织标签,可帮助您整理哪些单元属于哪个租户。
如需详细了解如何部署单元,请参阅使用 App Lifecycle Manager 部署 MySQL 实例。
如需将单元与租户相关联,请执行以下操作:
在 Google Cloud 控制台中,依次前往 App Lifecycle Manager > 租户。
点击您要与单元关联的租户的名称。
点击修改 。
在关联的单元 部分中,点击添加单元 。
选择您要与此租户关联的单元。
点击完成 。
点击保存 。
所选单元与指示的租户相关联。
使用租户项目变量预配新单元
预配与租户关联的单元时,您必须提供 tenant_project_id 变量。
在 Google Cloud 控制台中,依次前往 App Lifecycle Manager > 单元 。
创建一个与单元种类关联的新单元。
点击预配 。
选择要预配到租户单元的版本 。
选择您在租户项目中授予权限的启动操作服务账号 。您应遵循最小权限原则,并且仅授予受管理资源所需的角色。
在输入变量 部分中:
- 验证
tenant_project_id变量是否列出,就像您在 Terraform 配置variables.tf文件中定义的那样。 - 在租户项目 ID 框中,提供租户项目的名称。
- 提供在 Terraform 配置中定义的输入变量。如果您尚未在 Terraform 配置中定义其他变量,请跳过此步骤。
- 验证
点击预配 。
App Lifecycle Manager 使用指定的启动操作服务帐号触发 Infrastructure Manager。Infrastructure Manager 读取 tenant_project_id 变量,并在 该租户项目内创建虚拟机。
使用新版本重新预配单元
使用新版本重新预配现有单元时,您必须提供 tenant_project_id 变量。
在 Google Cloud 控制台中,依次前往 App Lifecycle Manager > 单元 。
选择与单元种类关联的单元。
点击修改预配 。
选择您使用更新后的 Terraform 配置创建的版本 。
选择您在租户项目中授予权限的启动操作服务账号 。您应遵循最小权限原则,并且仅授予受管理资源所需的角色。
在输入变量 部分中:
- 验证
tenant_project_id变量是否列出,就像您在 Terraform 配置variables.tf文件中定义的那样。 - 在租户项目 ID 框中,提供租户项目的名称。
- 提供在 Terraform 配置中定义的输入变量。如果您尚未在 Terraform 配置中定义其他变量,请跳过此步骤。
- 验证
点击更新 。
App Lifecycle Manager 使用指定的启动操作服务帐号触发 Infrastructure Manager。Infrastructure Manager 读取 tenant_project_id 变量,并在 该租户项目内创建虚拟机。
后续步骤
- 了解如何管理单元之间的依赖关系。
- 详细了解如何使用变量和变量映射。
- 查看服务账号所需的权限。