设置租户项目和资源

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

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

准备工作

在创建租户项目或资源之前:

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

    启用 API 所需的角色

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

    启用 API

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

设置租户项目

当您将租户的资源预配到单独的项目中时,每个租户的资源、IAM 政策、配额和网络配置都会分开,从而降低一个租户发生违规或配置错误而影响其他租户的可能性。

您需要提供:

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

控制台

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

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

    启用 API 所需的角色

    如需启用 API,您需要拥有 serviceusage.services.enable 权限。如果您创建了项目,则可能已经通过 Owner 角色 (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.iam.gserviceaccount.com' \
     --role=ROLE
    

    • TENANT_PROJECT_ID:表示租户项目 ID 的字符串标识符。
    • PRODUCER_PROJECT_ID:表示提供方项目 ID 的字符串标识符。
    • SERVICE_ACCOUNT:您要向指定项目中的服务账号授予的角色。
    • ROLE:要授予的 Identity and Access Management 角色。

      您需要针对要向指定服务账号(例如 --role='roles/compute.admin')授予的每个角色运行 gcloud projects add-iam-policy-binding

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

创建租户资源

在 SaaS 产品中创建 tenant 资源来代表您的客户:

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

    前往“租户”

  2. 点击创建

  3. 租户名称框中,为租户资源输入一个名称。

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

  5. SaaS 产品框中,选择要与租户关联的 SaaS 产品。

  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 变量,并在相应租户项目中创建虚拟机。

后续步骤