将单元与租户关联

在本快速入门中,您将修改应用产品,以将已部署的虚拟机单元与租户资源关联,并将虚拟机预配到由租户拥有的专用租户项目中。

这种方法可增强资源隔离,让您可以单独管理每个租户的资源,并为应用产品提供更好的安全性和合规性。

我们将以使用 App Lifecycle Manager 部署 MySQL 实例快速入门中的场景为基础,对其进行修改,以将已部署的虚拟机单元与租户资源关联,并将虚拟机预配到由租户拥有的专用项目中:

  1. 在 App Lifecycle Manager 中创建租户资源。
  2. 将虚拟机与租户资源关联。
  3. 配置 App Lifecycle Manager 和 Terraform 配置,以将资源部署到单独的租户项目中。
  4. 解决跨项目部署时常见的权限和 API 启用问题。

在本快速入门结束时,您将为具有多个租户的应用产品奠定基础,让您可以通过创建租户并将其与单元关联来设置租户级配置和政策。

准备工作

在创建租户或将其与单元关联之前,您应该 了解 App Lifecycle Manager 生态系统的基础知识,并创建应用产品。

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

    Verify that billing is enabled for your Google Cloud project.

  2. 使用 App Lifecycle Manager 部署 MySQL 实例, 包括创建 Terraform 配置、Artifact Registry 代码库、 应用产品、单元种类、单元和组件(包括 terraform-files.zip)。

    • 验证是否已在生产者项目中启用快速入门的准备工作 部分中列出的 API。
    • 验证您是否已在生产者项目中获得必要的服务账号和 IAM 角色。 这包括用户创建的服务帐号以及在生产者项目中授予 service-PROJECT-NUMBER@gcp-sa-saasservicemgmt. 账号的权限。
  3. 在创建和关联租户资源之前,您需要创建生产者项目和所有租户项目。 如需了解详情,请参阅 设置租户项目。

创建和关联租户资源

您可以使用租户对单元资源进行分组。在生产者项目的应用产品中创建租户资源以代表您的客户:

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

    前往“租户”

  2. 点击创建 。

  3. 在创建租户 页面上,在租户名称 框中输入 vm-quickstart-tenant。

  4. 在应用产品 框中,选择 vm-quickstart-saas-offering。

  5. 在区域 下拉列表中,选择 us-central1。

  6. 点击添加单元 。系统会显示新单元 部分。

  7. 在单元 下拉列表中,选择 projects/YOUR-PROJECT-NAME/locations/us-central1/units/vm-quickstart-unit 单元。

  8. 点击完成 ,将 vm-quickstart-unit 资源与 vm-quickstart-tenant 资源关联。

  9. 点击创建 以创建租户资源。 您已成功创建 vm-quickstart-tenant 资源并将其与 vm-quickstart-unit 资源关联。此 关联主要用作 Google Cloud 控制台中的组织标记,可帮助您识别哪些单元属于哪些 租户。

创建租户版本

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

    前往“版本”

  2. 在版本 页面上,点击创建 。

  3. 在创建版本 页面上,在版本名称 框中输入 vm-quickstart-tenant-release。

  4. 在单元种类 框中,选择 vm-quickstart-unit-kind。点击下一步 。

  5. 在选择蓝图 步骤中,点击从 Artifact Registry 中选择现有映像 开关。

  6. 在存储蓝图 步骤中,点击浏览 并选择与 vm-quickstart-tenant-blueprint 关联的制品。点击下一步 。

  7. 点击创建 。您已成功创建 vm-quickstart-tenant-release 资源。

创建租户项目并部署单元

在使用 App Lifecycle Manager 部署 MySQL 实例快速入门 中, 您将 App Lifecycle Manager 资源预配到包含应用产品配置的同一项目中。

在本快速入门中,您将资源预配定向到租户 项目,而不是生产者项目。

在单元预配期间,您需要传递修改后的变量 tenant_project_id 和 tenant_project_number。

  1. 创建一个租户项目,您将在其中部署 terraform-vm.zip 文件:

    gcloud projects create quickstart-tenant-project --name="SaaS Tenant A Project"
    
  2. 在租户项目中启用 API 并授予 IAM 角色。如需将单元部署到租户项目中,您需要在租户项目中启用 Compute Engine API 并授予 IAM 角色。

在租户项目中启用 API

使用 Google Cloud 控制台在租户项目中启用 Compute Engine API:

  1. 转到项目选择器。

    转到项目选择器

  2. 点击选择项目 。

  3. 选择 quickstart-tenant-project。

  4. 启用 Compute Engine API(如果尚未启用)。

    启用 API 所需的角色

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

    启用 API

  5. 确保您在项目中拥有以下一个或多个角色: roles/compute.admin

    检查角色

    1. 在 Google Cloud 控制台中,前往 IAM 页面。

      转到 IAM
    2. 选择项目。
    3. 在主账号 列中,找到标识您或您所属的所有组的所有行。如需了解您所属的组,请与您的 管理员联系。

    4. 对于指定或包含您的所有行,请检查角色 列,查看 角色列表是否包含所需的角色。

    授予角色

    1. 在 Google Cloud 控制台中,前往 IAM 页面。

      转到 IAM
    2. 选择项目。
    3. 点击 授予访问权限。
    4. 在新的主账号 字段中,输入您的用户标识符。 这通常是员工身份池中的用户的标识符。如需了解详情, 请参阅 在 IAM 政策中表示员工池用户,或与您的管理员联系。

    5. 点击选择角色,然后搜索相应角色。
    6. 如需授予其他角色,请点击 添加 其他角色 ,然后添加其他各个角色。
    7. 点击 Save (保存)。

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

从生产者项目中,使用租户项目的输入变量预配新单元:

  1. 转到项目选择器。

    转到项目选择器

  2. 点击选择项目 。

  3. 选择您的生产者项目。

  4. 在 Google Cloud 控制台中,依次前往 App Lifecycle Manager > Units 。

    前往“单元”

  5. 选择 vm-quickstart-unit 资源。

  6. 点击预配 。

  7. 选择 vm-quickstart-tenant-release 资源。

  8. 选择您在租户项目中授予权限的执行启动操作的服务账号 。

  9. 在 Input Variables (输入变量)部分:

    • 系统会列出 tenant_project_id 变量,因为您已在 variables.tf 中对其进行了定义。
    • 在 Tenant Project ID (租户项目 ID)框中,输入 quickstart-tenant-project。
  10. 点击预配 。

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

清理

为避免因本页中使用的资源导致您的 Google Cloud 账号产生费用,请按照以下步骤操作。

  1. 在 Google Cloud 控制台中,前往 管理资源 页面。

    转到“管理资源”

  2. 在项目列表中,选择要删除的项目,然后 点击 删除。
  3. 在提示符处,输入项目 ID,然后点击关停 。

后续步骤