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

克隆 IoT 操作实例(预览版)

可以克隆现有的 Azure IoT作实例,以创建具有相同配置和设置的新实例。 克隆可用于创建实例的备份,或者为测试或开发目的使用相同的配置设置新实例。

克隆的用例方案包括:

  • 灾难恢复:为您的 Azure IoT 操作实例创建备份,以便在发生灾难时用于还原。
  • 测试和开发:使用与现有实例相同的配置设置新的 Azure IoT作实例,以便进行测试或开发。
  • 迁移:通过将实例克隆到新位置,将 Azure IoT作实例移到新的群集或资源组。
  • 缩放:创建 Azure IoT作实例的多个实例来处理增加的工作负荷或跨多个实例分配负载。

注释

克隆功能处于预览状态,正在开发中。

先决条件

  • 部署到群集的 Azure IoT 操作实例。 有关详细信息,请参阅部署 Azure IoT 操作

  • 已在开发计算机上安装的 Azure CLI。 此场景需要 Azure CLI 2.53.0 或更高版本。 如有必要,请使用az --version检查版本,使用az upgrade进行更新。 有关详细信息,请参阅 如何安装 Azure CLI

  • 适用于 Azure CLI 的 Azure IoT 操作扩展。 克隆当前与以下 IoT 操作实例版本范围兼容:1.0.34>=,<1.2.0 使用以下命令更新或安装扩展。 替换 <VERSION_NUMBER> 为与实例兼容的版本。

    az extension add --upgrade --name azure-iot-ops --version <VERSION_NUMBER>
    

克隆命令概述

使用az iot ops clone命令基于现有实例创建新的 Azure IoT 操作实例。

clone 命令分析 Azure IoT作实例,并通过 ARM 模板以基础结构即代码方式重现该实例。 可以将克隆的输出应用到另一个连接的群集,这称为复制。 还可以将克隆保存到本地目录供以后使用,并在将克隆应用到群集之前执行一些配置更改。

克隆作由三个主要组件组成:模型,即源实例、目标(即目标实例)和模板。 下图演示了克隆流。 该 clone 命令分析源实例,并通过 IaC/ARM 模板复制它。 复制的定义应用于一个或多个目标群集。

所有实例相关资源的子集关系图。显示克隆命令如何适用于 Azure IoT作实例。

克隆模型

您所克隆的实例就是这个模型。 它是克隆操作的权威来源。 若要标识模型,请输入以下参数:

  • --name/-n:模型实例名称。
  • --resource-group/-g:包含模型实例的资源组。

克隆目标

目标是你要复制或保存克隆定义的位置。 可以将克隆应用到一个目标、所有目标或不应用到任何目标。 如果未提供任何目标选项,则进程在输出范围内资源的摘要后终止。 若要标识目标,请输入以下参数之一:

  • --to-cluster-id:提供要在其中复制克隆实例的目标群集的完整 Azure 资源 ID。 使用此选项时,克隆命令会将克隆定义中指定的 Azure IoT作版本部署到目标群集,然后应用所有相关资源来完成部署。 目前,仅在克隆到群集目标时才支持用户分配的托管标识 (UAMI) 凭据的自动联合。

  • --to-dir:提供一个本地目录路径,用于将克隆定义复制到磁盘,其中可以使用现有的 ARM 部署工具进行部署,而无需修改。 如果检查克隆定义,你会看到应用了各种参数化,用于简化某种自定义。

重要

选择目标资源组时,请考虑使用不包含现有 IoT 操作安装的资源组,该资源组不同于模型的资源组。 默认情况下,克隆定义会保留模型实例中的资源名称。 如果目标和模型共享同一资源组并更改自定义位置,则可能会发生资源名称冲突。

克隆模板

克隆命令生成一个 ARM 模板,该模板描述在目标中创建的资源。 模板基于模型实例中的资源及其配置生成。 输入以下可选参数以自定义模板:

克隆模板自定义参数

可以使用以下可选参数来自定义生成的 ARM 模板:

  • --mode:指定如何在模板中组织子部署。

    • 使用 nested 模式(默认),所有子部署都自包含在根部署文件中。
    • 在使用 linked 模式时,资产相关的子部署会被拆分并存储为单独的文件,并由根部署进行链接。 如果实例包含大量命名空间设备、命名空间资产、根资产和资产终结点配置文件,则使用 linked 模式来提高可伸缩性和可管理性。 除非需要对大型部署进行这种分离,否则不需要指定此参数。
  • --param:允许您通过 key=value格式重写内置默认参数,例如 locationinstanceNameadrNamespaceId。 使用 --help 显示密钥的完整列表。

克隆实例

若要克隆实例,请使用 az iot ops clone 具有相应参数的命令来指定源实例和目标位置。

  1. 在开始之前,请将默认订阅设置为模型实例所在的同一订阅。 否则,每次运行--subscription命令时都需要追加az iot ops clone

    az account set -s $MODEL_SUBSCRIPTION_ID
    
  2. 若要获取群集资源 ID,请运行:

    az resource show --name <CLUSTER_NAME> --resource-group <RESOURCE_GROUP> --resource-type "Microsoft.Kubernetes/connectedClusters" --query id --output tsv
    
  3. 若要使用默认选项克隆实例并复制到已连接目标 arc 的群集,请运行:

    az iot ops clone --name <INSTANCE_NAME> --resource-group <RESOURCE_GROUP> --to-cluster-id <CLUSTER_ID> 
    
  4. 若要自定义复制到另一个群集,请使用 --param 并指定要更改的格式 key=value的参数。 例如,若要更改克隆实例的位置,请运行:

    az iot ops clone --name <INSTANCE_NAME> --resource-group <RESOURCE_GROUP> --to-cluster-id <CLUSTER_ID> --param location=eastus
    
  5. 若要将实例克隆到本地磁盘,请使用 --to-dir 参数指定要在其中保存克隆定义的目录。 此选项会生成一个标准 ARM 模板,供您自行操作或部署。

    az iot ops clone --name <INSTANCE_NAME> --resource-group <RESOURCE_GROUP> --to-dir <DIRECTORY>
    

    小窍门

    若要将实例克隆到当前目录,请运行 --to-dir .

  6. 若要克隆并复制实例到目标群集并在同一操作中保存到文件,请运行:

    az iot ops clone --name <INSTANCE_NAME> --resource-group <RESOURCE_GROUP> --to-cluster-id <CLUSTER_ID> --to-dir <DIRECTORY>
    
  7. 若要将实例克隆到群集,但拆分并串行应用与资产相关的子部署,请使用 --mode linked. 此参数在模型实例包含大量资产相关资源时提供最高的缩放度。

    az iot ops clone --name <INSTANCE_NAME> --resource-group <RESOURCE_GROUP> --to-cluster-id <CLUSTER_ID> --mode linked
    
  8. 在链接模式下将实例克隆至磁盘,其中每个链接资产和/或资产终结点配置文件模板可以与根模板分开独立部署。

    az iot ops clone --name <INSTANCE_NAME> --resource-group <RESOURCE_GROUP> --to-dir . --mode linked
    

注意事项和限制

  • 当前仅支持使用 --to-cluster-id 选项的自动联合身份验证。
  • 未包含资源同步规则。
  • 尽管 IoT 操作系统托管标识和目标架构注册表之间所需的角色分配由克隆处理,但不涵盖任何其他系统托管标识角色分配。
  • 克隆是云端操作。 群集没有进行直接交互。 群集密钥通过安全设置从云中同步,这些设置包括密钥提供者类别和密钥同步云资源。 如果模型群集具有用户创建的元素(如在模型 IoT 操作解决方案中引用的 configmap),则需要针对目标群集重新应用这些元素。