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

将 Azure IoT 操作部署到已启用 Arc 的 Kubernetes 群集

了解如何使用 Azure 门户将 Azure IoT 操作部署到 Kubernetes 群集。

在本文中,我们将讨论 Azure IoT 操作部署和实例,这两个概念不同:

  • Azure IoT 操作部署描述了启用 Azure IoT 操作方案的所有组件和资源。 这些组件和资源包括:

    • Azure IoT 操作实例
    • Arc 扩展
    • 自定义位置
    • 可以在 Azure IoT 操作解决方案中配置的资源,例如资产和资产终结点。
  • Azure IoT 操作实例是捆绑什么是 Azure IoT 操作中定义的服务套件的父资源,例如 MQTT 代理、数据流和 OPC UA 连接器

谈到部署 Azure IoT 操作时,指的是构成部署的完整组件集。 部署存在后,可以查看、管理和更新实例

先决条件

云资源:

开发资源:

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

  • 适用于 Azure CLI 的 Azure IoT 操作扩展。 使用以下命令添加扩展或将其更新到最新版本:

    az extension add --upgrade --name azure-iot-ops
    

群集主机:

  • 拥有已启用 Azure Arc 的 Kubernetes 群集,并启用了自定义位置和工作负荷标识功能。 如果还没有,请按照准备已启用 Azure Arc 的 Kubernetes 群集中的步骤操作。

    如果之前已将 Azure IoT 操作部署到群集,请在继续之前卸载这些资源。 有关详细信息,请参阅更新 Azure IoT 操作

  • (可选)为了可观测性,在部署 Azure IoT 操作之前准备群集:配置可观测性

  • (可选)在部署 Azure IoT 操作之前,配置你自己的证书颁发机构颁发者:自带颁发者

部署

Azure 门户部署体验是一种帮助程序工具,该工具基于资源和配置生成部署命令。 最后一步是运行 Azure CLI 命令,因此仍需要上一部分所述的 Azure CLI 先决条件。

  1. Azure 门户中,搜索并选择“Azure IoT 操作”

  2. 选择创建

  3. 在“基本信息”选项卡中提供以下信息:

    参数
    订阅 选择包含已启用 Arc 的群集的订阅。
    资源组 选择包含已启用 Arc 的群集的资源组。
    群集名称 选择要将 Azure IoT 操作部署到的群集。
    自定义位置名称 可选:替换自定义位置的默认名称

    显示用于从门户部署 Azure IoT 操作的第一个选项卡的屏幕截图。

  4. 在完成时选择“下一步:配置”。

  5. 在“配置”选项卡上,提供以下信息:

    参数
    Azure IoT 操作名称 可选:替换 Azure IoT 操作实例的默认名称
    MQTT 代理配置 可选:编辑 MQTT 代理的默认设置。 在 Azure 门户中,可以配置基数和内存配置文件设置。 要配置其他设置,包括磁盘支持的消息缓冲区和高级 MQTT 客户端选项,请参阅 Azure CLI 对高级 MQTT 代理配置的支持
    数据流配置文件配置 可选:编辑数据流的默认设置。 有关详细信息,请参阅配置数据流配置文件

    显示用于从门户部署 Azure IoT 操作的第二个选项卡的屏幕截图。

  6. 选择“下一步:依赖项管理”

  7. “依赖项管理”选项卡上,选择现有架构注册表或使用以下步骤创建一个:

    1. 选择“新建”。

    2. 提供架构注册表名称架构注册表命名空间。

    3. 选择“选择 Azure 存储容器”

    4. 从启用了分层命名空间的帐户列表中选择存储帐户,或选择“创建”来创建存储帐户。

      架构注册表需要启用了分层命名空间和公用网络访问的 Azure 存储帐户。 创建新的存储帐户时,请选择“常规用途 v2”存储帐户类型,并将“分层命名空间”设置为“启用”。

    5. 在存储帐户中选择容器,或选择“容器”创建一个。

    6. 选择“应用”以确认架构注册表配置。

  8. 在“依赖项管理”选项卡上,选择“测试设置”或“安全部署”选项。 如果不确定哪种方法适合你的场景,请查看“部署详细信息”>“选择功能”中的指南。

    根据自己的选择,请按照以下任一步骤操作:

使用测试设置部署

如果在“依赖项管理”选项卡上选择了“测试设置”选项,请使用这些步骤。

  1. 选择“下一步: 自动化”

  2. 一次运行一个 Azure CLI 命令,在终端“自动化”选项卡上运行:

    1. 即使之前已经登录,也请使用浏览器以交互方式登录到 Azure CLI。 如果未以交互方式登录,你可能会收到一条错误消息,提示“设备必须受管理才能访问资源”

      az login
      
    2. 安装最新的 Azure IoT 操作 CLI 扩展。

      az upgrade
      az extension add --upgrade --name azure-iot-ops
      
    3. 创建将由 Azure IoT 操作组件使用的架构注册表。 复制并运行提供的 az iot ops schema registry create 命令。

      如果选择使用现有架构注册表,则此命令不会显示在“自动化”选项卡上。

    4. 为 Azure IoT 操作部署准备群集。 复制并运行提供的 az iot ops init 命令。

      提示

      每个群集只需运行 init 命令一次。 如果重用已部署 Azure IoT 操作版本 0.8.0 的群集,则可跳过此步骤。

      如果已遵循可选先决条件来设置你自己的证书颁发机构颁发者,请将 --user-trust 标志添加到 init 命令。

      此命令可能需要几分钟才能完成。 可以在终端的部署进度显示中观看进度。

    5. 部署 Azure IoT 操作。 复制并运行提供的 az iot ops create 命令。

      • 如果遵循可选的先决条件来准备群集以实现可观测性,请将以下参数添加到 create 命令中:

        参数 价值 说明
        --ops-config observability.metrics.openTelemetryCollectorAddress=<FULLNAMEOVERRIDE>.azure-iot-operations.svc.cluster.local:<GRPC_ENDPOINT> 提供在 otel-collector-values.yaml 文件中配置的 OpenTelemetry (OTel) 收集器地址。

        配置可观测性中使用的样本值是 fullnameOverride=aio-pc-collector 和 grpc.enpoint=4317。
        --ops-config observability.metrics.exportInternalSeconds=<CHECK_INTERVAL> 提供在 otel-collector-values.yaml 文件中配置的 check_interval 值。

        配置可观测性中使用的示例值为 check_interval=60。
      • 如果已遵循可选先决条件来设置你自己的证书颁发机构颁发者,请将 --trust-settings 参数添加到 create 命令:

        --trust-settings configMapName=<CONFIGMAP_NAME> configMapKey=<CONFIGMAP_KEY_WITH_PUBLICKEY_VALUE> issuerKind=<CLUSTERISSUER_OR_ISSUER> issuerName=<ISSUER_NAME>
        

      此命令可能需要几分钟才能完成。 可以在终端的部署进度显示中观看进度。

  3. 所有 Azure CLI 命令成功完成后,即可关闭“安装 Azure IoT 操作”向导。

create 命令成功完成后,群集上运行了一个正在运行的 Azure IoT 操作实例。 此时,实例已为大多数测试和评估方案配置。

如果将来想要为生产方案准备实例,请按照在现有 Azure IoT 操作实例上启用安全设置中的步骤进行操作。

使用安全设置部署

如果在“依赖项管理”选项卡上选择了“安全设置”选项,请使用这些步骤。

  1. 在“部署选项”部分,提供以下信息:

    参数
    订阅 选择包含你的 Azure 密钥保管库的订阅。
    Azure Key Vault 选择 Azure Key Vault,或选择“新建”

    确保密钥保管库的权限模型是“Azure 基于角色的访问控制”。 若要检查此设置,请选择“管理所选保管库”>“设置”>“访问配置”

    确保使用 Key Vault Secrets Officer 角色向用户帐户授予管理机密的权限
    用户为机密分配的托管标识 选择标识或选择“新建”
    用户为 AIO 组件分配的托管标识 选择标识或选择“新建”。 不要使用与为机密选择的托管标识相同的托管标识。

    显示用于从门户部署 Azure IoT 操作的第三个选项卡配置安全设置的屏幕截图。

  2. 选择“下一步: 自动化”

  3. 一次运行一个 Azure CLI 命令,在终端“自动化”选项卡上运行:

    1. 即使之前已经登录,也请使用浏览器以交互方式登录到 Azure CLI。 如果不以交互方式登录,则在继续执行下一步部署 Azure IoT 操作时,你可能会收到一条错误消息,指出“设备必须受管理才能访问资源”

      az login
      
    2. 安装最新的 Azure IoT 操作 CLI 扩展。

      az upgrade
      az extension add --upgrade --name azure-iot-ops
      
    3. 创建将由 Azure IoT 操作组件使用的架构注册表。 复制并运行提供的 az iot ops schema registry create 命令。

      如果选择使用现有架构注册表,则此命令不会显示在“自动化”选项卡上。

      注意

      此命令要求你具有角色分配写入权限,因为它分配角色以授予对存储帐户的架构注册表访问权限。 默认情况下,该角色是内置“存储 Blob 数据参与者角”色,也可以改为创建具有受限权限的自定义角色。 有关详细信息,请参阅 az iot ops schema registry create

    4. 为 Azure IoT 操作部署准备群集。 复制并运行提供的 az iot ops init 命令。

      提示

      每个群集只需运行 init 命令一次。 如果重用已部署 Azure IoT 操作版本 0.8.0 的群集,则可跳过此步骤。

      此命令可能需要几分钟才能完成。 可以在终端的部署进度显示中观看进度。

    5. 部署 Azure IoT 操作。 复制并运行提供的 az iot ops create 命令。

      如果遵循可选的先决条件来准备群集以实现可观察性,请将以下可选参数添加到 create 命令中:

      可选参数 说明
      --ops-config observability.metrics.openTelemetryCollectorAddress=<FULLNAMEOVERRIDE>.azure-iot-operations.svc.cluster.local:<GRPC_ENDPOINT> 提供在 otel-collector-values.yaml 文件中配置的 OpenTelemetry (OTel) 收集器地址。

      配置可观测性中使用的样本值是 fullnameOverride=aio-pc-collector 和 grpc.enpoint=4317。
      --ops-config observability.metrics.exportInternalSeconds=<CHECK_INTERVAL> 提供在 otel-collector-values.yaml 文件中配置的 check_interval 值。

      配置可观测性中使用的示例值为 check_interval=60。

      此命令可能需要几分钟才能完成。 可以在终端的部署进度显示中观看进度。

    6. 为部署的 Azure IoT 操作实例启用机密同步。 复制并运行提供的 az iot ops secretsync enable 命令。

      此命令:

      • 使用用户分配的托管标识创建联合标识凭据。
      • 向用户分配的托管标识添加角色分配,以访问 Azure Key Vault。
      • 添加与 Azure IoT 操作实例关联的最小机密提供程序类。
    7. 将用户分配的托管标识分配给已部署的 Azure IoT 操作实例。 复制并运行提供的 az iot ops identity assign 命令。

      此命令使用指示的已连接群集的 OIDC 颁发者和 Azure IoT 操作服务帐户创建联合标识凭据。

  4. 所有 Azure CLI 命令成功完成后,即可关闭“安装 Azure IoT 操作”向导。

create 命令成功完成后,群集上运行了一个正在运行的 Azure IoT 操作实例。 此时,实例已配置为用于生产方案。

验证部署

部署完成后,使用 az iot ops check 来评估 IoT 操作服务部署的运行状况、配置和可用性。 check 命令可帮助你在部署和配置中发现问题。

az iot ops check

check 命令会显示有关缺少数据流的警告(这是正常且预料之中的),直到你创建数据流为止。 有关详细信息,请参阅使用数据流处理和路由数据

可以通过为详细视图向 check 命令添加 --detail-level 2 参数来检查主题映射、QoS 和消息路由的配置。

后续步骤

如果组件需要连接到 Azure 终结点(如 SQL 或 Fabric),请了解如何管理 Azure IoT 操作部署的机密