设置租户项目和资源

本指南介绍了如何使用 App Lifecycle Manager 租户来整理已部署的单元,以及如何将资源部署到单独的 租户项目 ,以隔离和管理资源。

如需大致了解租户和租户项目,请参阅租户和租户项目。

准备工作

在创建租户项目或资源之前,请执行以下操作:

  1. 在您的提供方项目中创建 Terraform 配置、Artifact Registry 代码库,并创建一个包含 SaaS 应用的制品。如需了解如何设置应用产品,请参阅 使用 App Lifecycle Manager 部署服务实例。
  2. 启用 App Lifecycle Manager 所需的 API。

    启用 API 所需的角色

    如需启用 API,您需要拥有 serviceusage.services.enable 权限。如果您 创建了项目,则可能已通过 所有者角色 (roles/owner) 拥有此权限。否则,您可以通过 Service Usage Admin 角色 (roles/serviceusage.serviceUsageAdmin) 获得此权限。 了解如何授予角色。

    启用 API

  3. 验证您是否已在 提供方项目内获得必要服务账号和 Identity and Access Management 角色的授予。 这包括用户创建的服务帐号,以及在提供方项目中授予 service-PROJECT-NUMBER@gcp-sa-saasservicemgmt. 账号的权限。

设置租户项目

当您将租户的资源预配到单独的项目中时,每个租户的资源、IAM 政策、配额和网络配置都会分开,这样一来,一个租户的违规或错误配置就不太可能影响其他租户。

您需要提供:

  • 一个提供方项目,以及
  • 为每个租户提供一个租户项目。

控制台

如需使用 Google Cloud 控制台设置租户项目和提供方项目,请执行以下操作:

  1. 创建一个提供方项目,并为每个租户创建一个租户项目。
  2. 在租户项目和提供方项目中启用结算功能。
  3. 在租户项目中启用 App Lifecycle Manager 所需的 API。

    启用 API 所需的角色

    如需启用 API,您需要拥有 serviceusage.services.enable 权限。如果您 创建了项目,则可能已通过 所有者角色 (roles/owner) 拥有此权限。否则,您可以通过 Service Usage Admin 角色 (roles/serviceusage.serviceUsageAdmin) 获得此权限。 了解如何授予角色。

    启用 API

  4. 验证您的租户项目是否具有具有必要权限的启动操作服务账号。

    如需了解详情,请参阅 App Lifecycle Manager 服务账号。

您已成功设置租户项目和提供方项目。创建提供方项目和租户项目并为其启用结算功能后,您可以创建租户资源并将单元与租户相关联。

gcloud

如需使用 Google Cloud CLI 设置提供方项目和租户项目,请执行以下操作:

  1. 创建提供方项目,并为每个租户创建一个租户项目:

    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 的字符串标识符 。
  2. 为租户项目和提供方项目启用结算功能:

     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。
  3. 为每个租户项目授予启动操作服务帐号必要的 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', 例如)。

您已成功设置租户项目和提供方项目。创建提供方项目和租户项目并为其启用结算功能后,您可以创建租户资源并将单元与租户相关联。

创建租户资源

在应用产品中创建 租户 资源以代表您的客户:

  1. 在 Google Cloud 控制台中,依次前往 App Lifecycle Manager > 租户。

    前往“租户”页面

  2. 点击创建 。

  3. 在租户名称 框中,输入租户资源的名称。

  4. 可选:在客户资源 框中,提供具有客户定义设置的消费者资源以进行集成。

  5. 在应用产品 框中,选择您要与租户关联的应用产品。

  6. 在区域 下拉列表中,选择要存储租户元数据的区域。

  7. 可选:点击添加标签 ,为租户添加键值对标签。

  8. 点击创建 以创建租户资源。

您已成功创建租户资源。

将单元与租户相关联

创建租户并部署单元后,您可以将它们彼此关联。 此关联主要用作组织标签,可帮助您整理哪些单元属于哪个租户。

如需详细了解如何部署单元,请参阅使用 App Lifecycle Manager 部署 MySQL 实例。

如需将单元与租户相关联,请执行以下操作:

  1. 在 Google Cloud 控制台中,依次前往 App Lifecycle Manager > 租户。

    前往“租户”页面

  2. 点击您要与单元关联的租户的名称。

  3. 点击修改 。

  4. 在关联的单元 部分中,点击添加单元 。

  5. 选择您要与此租户关联的单元。

  6. 点击完成 。

  7. 点击保存 。

所选单元与指示的租户相关联。

使用租户项目变量预配新单元

预配与租户关联的单元时,您必须提供 tenant_project_id 变量。

  1. 在 Google Cloud 控制台中,依次前往 App Lifecycle Manager > 单元 。

    前往“单元”页面

  2. 创建一个与单元种类关联的新单元。

  3. 点击预配 。

  4. 选择要预配到租户单元的版本 。

  5. 选择您在租户项目中授予权限的启动操作服务账号 。您应遵循最小权限原则,并且仅授予受管理资源所需的角色。

  6. 在输入变量 部分中:

    1. 验证 tenant_project_id 变量是否列出,就像您在 Terraform 配置 variables.tf 文件中定义的那样。
    2. 在租户项目 ID 框中,提供租户项目的名称。
    3. 提供在 Terraform 配置中定义的输入变量。如果您尚未在 Terraform 配置中定义其他变量,请跳过此步骤。
  7. 点击预配 。

App Lifecycle Manager 使用指定的启动操作服务帐号触发 Infrastructure Manager。Infrastructure Manager 读取 tenant_project_id 变量,并在 该租户项目内创建虚拟机。

使用新版本重新预配单元

使用新版本重新预配现有单元时,您必须提供 tenant_project_id 变量。

  1. 在 Google Cloud 控制台中,依次前往 App Lifecycle Manager > 单元 。

    前往“单元”页面

  2. 选择与单元种类关联的单元。

  3. 点击修改预配 。

  4. 选择您使用更新后的 Terraform 配置创建的版本 。

  5. 选择您在租户项目中授予权限的启动操作服务账号 。您应遵循最小权限原则,并且仅授予受管理资源所需的角色。

  6. 在输入变量 部分中:

    1. 验证 tenant_project_id 变量是否列出,就像您在 Terraform 配置 variables.tf 文件中定义的那样。
    2. 在租户项目 ID 框中,提供租户项目的名称。
    3. 提供在 Terraform 配置中定义的输入变量。如果您尚未在 Terraform 配置中定义其他变量,请跳过此步骤。
  7. 点击更新 。

App Lifecycle Manager 使用指定的启动操作服务帐号触发 Infrastructure Manager。Infrastructure Manager 读取 tenant_project_id 变量,并在 该租户项目内创建虚拟机。

后续步骤