多租户功能提供了一种在单个 NSX 部署上跨租户隔离安全和网络配置的方法。为了支持多租户功能,NSX 4.0.1.1 引入了组织和项目。
NSX 策略数据模型采用分层结构,并具有两个系统创建的分支:
-
/infra
,由基础架构管理员管理。 /orgs/default
,用于保存多租户结构。
注: 为
NSX 部署设置多租户是可选操作,其实施情况对现有
NSX 配置没有任何影响。
下图说明了多租户的数据模型。
组织
NSX 部署具有一个默认组织。您无法创建、修改或删除该组织。组织对象由系统在启动时创建。组织可以访问系统中的所有 Tier-0 网关和 Edge 集群。
组织对象由系统使用以下标识符创建:
/orgs/default项目
在组织下,您可以为要从 NSX 环境中管理的每个租户创建一个项目。项目在 /orgs/default
下创建,以支持每个租户具有一组独立的配置:
- 项目在特定的隔离上下文中提供策略层次结构模型。项目配置在
/orgs/default/projects/<project-id>/infra
下进行设置。 - 无法在项目下创建 Tier-0 网关和 Edge 集群。企业管理员可以与组织共享
/infra
空间中的 Tier-0 网关和 Edge 集群,然后可将其提供给组织下的项目使用。 - 项目有权访问已从
/infra
空间共享的某些对象和配置。 - 您可以从
infra
空间创建规则以应用于项目中虚拟机。要从infra
空间创建这些规则,请利用项目默认组,或者创建具有动态成员资格或虚拟机静态成员资格的组。 - 除了从
infra
空间创建规则之外,不支持从infra
空间配置其他项目资源。例如,您无法使用项目中虚拟机/项目默认组以外的静态成员在组织下创建组。不支持从基础架构空间配置属于项目的 Tier-1 网关。必须从项目中配置项目资源。
您可以进行以下 API 调用以在组织下创建项目:
PATCH /policy/api/v1/orgs/default/projects/<project-id>创建项目时,请指定项目将使用的 Tier-0 网关和 Edge 集群。可将此 Tier-0 网关用于该项目中的所有配置。分配给项目的 Edge 集群必须属于默认传输区域。此传输区域是创建项目网络的位置。
示例请求:
URL:
PATCH https:/{{nsx-manager-ip}}/policy/api/v1/orgs/default/projects/Project-Dev
正文:
{ "site_infos": [ { "edge_cluster_paths": [ "/infra/sites/default/enforcement-points/default/edge-clusters/ca1b2a4f-057d-42da-b3b8-cf218b1c1a51" ], "site_path": "/infra/sites/default" } ], "tier_0s": [ "/infra/tier-0s/Tier0GatewayTest" ] }
创建项目时,会创建一些默认对象,例如默认域、安全策略和默认组。您可以根据自己的要求选择创建多个项目。
创建项目后,您可以进行 API 调用以完成 DHCP、Tier-1 网关和分段等的网络配置。
注: 要使项目管理员能够将分段或 Tier-1 网关连接到 Tier-0 网关或 Tier-0 VRF,请为具有项目管理员角色的用户分配其他自定义角色。您分配的自定义角色必须对系统 Tier-0 网关具有读取访问权限。这样,项目管理员才能查看系统中的所有 Tier-0 网关。有关创建自定义角色的详细信息,请参见
创建或管理自定义角色。
创建自定义角色时,选择网络,并将所有权限重置为 None。在设置权限对话框中,选择 ,然后将 Tier-0 网关权限设置为只读。
资源配额
您可以使用限制定义项目中资源的配额。通过配额,您可以对给定项目的特定资源定义最大限制。如果未定义任何限制,则应用系统默认限制。
进行以下 API 调用以定义项目的限制:
PATCH /policy/api/v1/infra/constraints/<contraint-id>示例请求:
URL:
PATCH https://{{nsx-manager-ip}}/policy/api/v1/infra/constraints/c-1正文:
{ "display_name": "TestConstraint", "constraint_expression": { "resource_type": "EntityInstanceCountConstraintExpression", "count": 10, "operator": "<=" }, "target": { "path_prefix": "/orgs/default/projects/project-1", "target_resource_type": "Group" } }