你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

群集管理器:如何在 Operator Nexus 中管理群集管理器

群集管理器部署在操作员的 Azure 订阅中,用于管理操作员 Nexus 基础结构群集的生命周期。

开始之前

确保你有以下信息:

  • Azure 订阅 ID - 需要在其中创建群集管理器的 Azure 订阅 ID(应为网络结构控制器的相同订阅 ID)。
  • Network Fabric 控制器 ID - Network Fabric 控制器和群集管理器具有 1:1 关联。 需要将网络结构控制器的资源 ID 与群集管理器相关联。
  • Log Analytics 工作区 ID - 用于日志收集的 Log Analytics 工作区的资源 ID。
  • Azure 区域 - 应在网络结构控制器所在的同一 Azure 区域中创建群集管理器。 此 Azure 区域应在群集管理器和所有关联的操作员 Nexus 实例的 Location 字段中使用。

限制

  • 命名 - 可在此处找到命名规则。

全局参数

可用于每个 Azure CLI 命令的一些参数

  • --debug - 打印有关 CLI 操作的详细信息,用于调试目的。 如果发现了 bug,在提交 bug 报告时,请提供启用 --debug 标志生成的输出。
  • --help -h - 打印有关命令及其参数及其参数的 CLI 参考信息,并列出可用的子组和命令。
  • --only-show-errors - 仅显示错误,禁止显示警告。
  • --output -o - 指定输出格式。 可用的输出格式为 Json、Jsonc(彩色 JSON)、tsv(制表分隔值)、表(人可读 ASCII 表)和 yaml。 默认情况下,CLI 输出 Json。
  • --query - 使用 JMESPath 查询语言筛选从 Azure 服务返回的输出。
  • --verbose - 在操作期间打印有关 Azure 中创建的资源的信息和其他有用信息

群集管理器属性

属性名称 说明
名称、ID、位置、标记、类型 名称:用户友好名称
ID:<资源 ID>
位置:创建群集管理器的 Azure 区域。 az account list -locations 中的值。
标记:资源标记
类型:Microsoft.NetworkCloud/clusterManagers
managerExtendedLocation 与群集管理器关联的 ExtendedLocation
managedResourceGroupConfiguration 有关托管资源组的信息
fabricControllerId 对与此群集管理器 1:1 的网络结构控制器的引用
analyticsWorkspaceId Log Analytics 工作区,其中将中继与客户相关的日志。
clusterVersions[] 群集管理器支持的群集版本列表。 它用作群集 clusterVersion 属性中的输入。
provisioningState 群集管理器上最新操作的预配状态。 其中之一:成功、失败、已取消、正在预配、已接受、正在更新
detailedStatus 提供有关群集管理器状态的其他信息的详细状态。
detailedStatusMessage 有关当前详细状态的描述性消息。

群集管理器标识

从 2024-07-01 API 版本开始,客户可将托管标识分配到群集管理器。 系统分配的托管标识和用户分配的托管标识均受支持。

如果使用用户分配的托管标识创建群集管理器,则客户需要为 Nexus 平台预配对该标识的访问权限。 具体而言,需要将 Microsoft.ManagedIdentity/userAssignedIdentities/assign/action 权限添加到 AFOI-NC-MGMT-PME-PROD Microsoft Entra ID 的用户分配的标识。 这是该平台的一个已知限制,将在未来解决。

可通过 Azure 门户完成角色分配:

  • 打开 Azure 门户并找到相关用户分配的标识。
    • 如果你预期预配多个托管标识,则可转而在资源组或订阅级添加角色。
  • Access control (IAM) 下,单击“添加新角色分配”
  • 选择角色:Managed Identity Operator。 查看角色提供的权限
  • 向以下项分配访问权限:用户、组或服务主体
  • 选择成员:AFOI-NC-MGMT-PME-PROD 应用程序
  • 查看并分配

创建群集管理器

使用 Azure CLI 创建群集管理器:

使用 az networkcloud clustermanager create 命令创建群集管理器。 此命令创建新的群集管理器,或更新群集管理器的属性(如果存在)。 如果有多个 Azure 订阅,请使用 az account set 命令选择相应的订阅 ID。

az networkcloud clustermanager create \
    --name "$CLUSTER_MANAGER_NAME" \
    --location "$LOCATION" \
    --analytics-workspace-id "$LAW_NAME" \
    --fabric-controller-id "$NFC_ID" \
    --managed-resource-group-configuration name="$MRG_NAME" location="$MRG_LOCATION" \
    --tags $TAG_KEY1="$TAG_VALUE1" $TAG_KEY2="$TAG_VALUE2"
    --resource-group "$CLUSTER_MANAGER_RG"
    --subscription "$SUB_ID"
  • 参数
    • --name -n [必需] - 群集管理器的名称。
    • --fabric-controller-id [必需] - 与群集管理器关联的网络结构控制器的资源 ID。
    • --resource-group -g [必需] - 资源组的名称。 可以使用 az configure --defaults group=<name> 配置默认资源组。
    • --analytics-workspace-id - 用于日志收集的 Log Analytics 工作区的资源 ID
    • --location -l - 位置。 在其中创建群集管理器的 Azure 区域。 az account list -locations 中的值。 可以使用 az configure --defaults location="$LOCATION" 配置默认位置。
    • --managed-resource-group-configuration - 与资源关联的托管资源组的配置。
      • 用法:--managed-resource-group-configuration location=XX name=XX
      • 位置:托管资源组的区域。 如果未指定,则选择父资源的区域。
      • 名称:托管资源组的名称。 如果未指定,则自动生成唯一名称。
    • wait/-no-wait - 等待命令完成或等待长时间运行的操作完成。
    • --tags - 空格分隔标记:key[=value] [key[=value]...]。使用 '' 清除现有标记
    • --subscription - 订阅的名称或 ID。 可以使用 az account set -s NAME_OR_ID 配置默认订阅。
    • --mi-system-assigned - 启用系统分配的托管标识。 添加后,此时只能通过 API 调用删除该标识。
    • --mi-user-assigned - 要添加的用户分配的托管标识的空格分隔资源 ID。 添加后,此时只能通过 API 调用删除该标识。

使用 Azure 资源管理器模板编辑器创建群集管理器:

创建群集管理器的另一种方法是使用 ARM 模板编辑器。

若要以这种方式创建群集,需要提供模板文件 (clusterManager.jsonc) 和参数文件 (clusterManager.parameters.jsonc)。

可在此处找到这两个文件的示例:

clusterManager.jsoncclusterManager.parameters.jsonc

注意

若要获取正确的格式,请复制原始代码文件。 clusterManager.parameters.jsonc 文件中的值特定于客户,可能不是完整列表。 请更新特定环境的值字段。

  1. 在 Web 浏览器中转到 Azure 门户,然后登录。
  2. 在 Azure 门户搜索栏中,搜索“部署自定义模板”,然后从可用服务中选择它。
  3. 在编辑器中单击“生成自己的模板”。
  4. 单击“加载文件”。 找到 clusterManager.jsonc 模板文件并上传它。
  5. 单击“ 保存”。
  6. 单击“编辑参数”。
  7. 单击“加载文件”。 找到 clusterManager.parameters.jsonc 参数文件并上传它。
  8. 单击“ 保存”。
  9. 选择正确的订阅。
  10. 搜索资源组(如果已存在)或创建新资源组。
  11. 确保所有实例详细信息都正确。
  12. 单击“查看 + 创建”。

列出/显示群集管理器

列出和显示命令用于获取现有群集管理器的列表或特定群集管理器的属性。

列出资源组中的群集管理器

此命令列出指定资源组中的群集管理器。

az networkcloud clustermanager list --resource-group "$CLUSTER_MANAGER_RG"

列出订阅中的群集管理器

此命令列出指定订阅中的群集管理器。

az networkcloud clustermanager list  --subscription "$SUB_ID"

显示群集管理器属性

此命令列出指定群集管理器的属性。

az networkcloud clustermanager show \
    --name "$CLUSTER_MANAGER_NAME" \
    --resource-group "$CLUSTER_MANAGER_RG" \
    --subscription "$SUB_ID"

列出/显示命令参数

  • --name -n - 群集管理器的名称。
  • --ID - 一个或多个资源 ID(以空格分隔)。 它应该是包含“资源 ID”参数的所有信息的完整资源 ID。
  • --resource-group -g - 资源组的名称。 可以使用 az configure --defaults group=<name> 配置默认组。
  • --subscription - 订阅的名称或 ID。 可以使用 az account set -s NAME_OR_ID 配置默认订阅。

更新群集管理器

此命令用于修补提供的群集管理器的属性,或更新分配给群集管理器的标记。 属性和标记更新可以独立完成。

az networkcloud clustermanager update \
    --name "$CLUSTER_MANAGER_NAME" \
    --tags $TAG_KEY1="$TAG_VALUE1" $TAG_KEY2="$TAG_VALUE2" \
    --resource-group "$CLUSTER_MANAGER_RG" \
    --subscription "$SUB_ID"
  • 参数
    • --tags - TSpace 分隔标记:key[=value] [key[=value] ...]。使用 '' 清除现有标记。
    • --name -n - 群集管理器的名称。
    • --ID - 一个或多个资源 ID(以空格分隔)。 它应该是包含“资源 ID”参数的所有信息的完整资源 ID。
    • --resource-group -g - 资源组的名称。 可以使用 az configure --defaults group=<name> 配置默认组。
    • --subscription - 订阅的名称或 ID。 可以使用 az account set -s NAME_OR_ID 配置默认订阅。
    • --mi-system-assigned - 启用系统分配的托管标识。 添加后,此时只能通过 API 调用删除该标识。
    • --mi-user-assigned - 要添加的用户分配的托管标识的空格分隔资源 ID。 添加后,此时只能通过 API 调用删除该标识。

通过 API 更新群集管理器标识

可通过 CLI 分配群集管理器托管标识。 可通过 API 调用来完成标识的取消分配。 注意,<APIVersion> 是 API 版本 2024-07-01 或更高版本。

  • 若要删除所有托管标识,请执行:

    az rest --method PATCH --url /subscriptions/$SUB_ID/resourceGroups/$CLUSTER_MANAGER_RG/providers/Microsoft.NetworkCloud/clusterManagers/$CLUSTER_MANAGER_NAME?api-version=<APIVersion> --body "{\"identity\":{\"type\":\"None\"}}"
    
  • 如果同时添加了用户分配的托管标识和系统分配的托管标识,可通过将 type 更新为 SystemAssigned 来删除用户分配的托管标识:

    az rest --method PATCH --url /subscriptions/$SUB_ID/resourceGroups/$CLUSTER_MANAGER_RG/providers/Microsoft.NetworkCloud/clusterManagers/$CLUSTER_MANAGER_NAME?api-version=<APIVersion> --body @~/uai-body.json
    

    请求正文 (uai-body.json) 示例:

    {
      "identity": {
          "type": "SystemAssigned"
      }
    }
    
  • 如果同时添加了用户分配的托管标识和系统分配的托管标识,可通过将 type 更新为 UserAssigned 来删除系统分配的托管标识:

    az rest --method PATCH --url /subscriptions/$SUB_ID/resourceGroups/$CLUSTER_MANAGER_RG/providers/Microsoft.NetworkCloud/clusterManagers/$CLUSTER_MANAGER_NAME?api-version=<APIVersion> --body @~/uai-body.json
    

    请求正文 (uai-body.json) 示例:

    {
      "identity": {
          "type": "UserAssigned",
      	"userAssignedIdentities": {
      		"/subscriptions/$SUB_ID/resourceGroups/$UAI_RESOURCE_GROUP/providers/Microsoft.ManagedIdentity/userAssignedIdentities/$UAI_NAME": {}
      	}
      }
    }
    
  • 如果添加了多个用户分配的托管标识,可通过执行以下操作删除其中一个标识:

    az rest --method PATCH --url /subscriptions/$SUB_ID/resourceGroups/$CLUSTER_MANAGER_RG/providers/Microsoft.NetworkCloud/clusterManagers/$CLUSTER_MANAGER_NAME?api-version=<APIVersion> --body @~/uai-body.json
    

    请求正文 (uai-body.json) 示例:

    {
      "identity": {
          "type": "UserAssigned",
      	"userAssignedIdentities": {
      		"/subscriptions/$SUB_ID/resourceGroups/$UAI_RESOURCE_GROUP/providers/Microsoft.ManagedIdentity/userAssignedIdentities/$UAI_NAME": null
      	}
      }
    }
    

删除群集管理器

此命令用于删除提供的群集管理器。

警告

具有现有关联的网络结构控制器的群集管理器,或者引用此群集管理器的任何群集可能无法删除。

az networkcloud clustermanager delete \
    --name "$CLUSTER_MANAGER_NAME" \
    --resource-group "$CLUSTER_MANAGER_RG" \
    --subscription "$SUB_ID"
  • 参数
    • --no-wait - 不要等待长时间运行的操作完成。
    • --yes -y - 不要提示确认。
    • --name -n - 群集管理器的名称。
    • --ID - 一个或多个资源 ID(以空格分隔)。 它应该是包含“资源 ID”参数的所有信息的完整资源 ID。
    • --resource-group -g - 资源组的名称。 可以使用 az configure --defaults group=<name> 配置默认组。
    • --subscription - 订阅的名称或 ID。 可以使用 az account set -s NAME_OR_ID 配置默认订阅。

后续步骤

成功创建网络结构控制器和群集管理器后,下一步是创建网络结构