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

将 Azure IoT 操作预览版扩展部署到 Kubernetes 群集

重要

Azure IoT 操作预览版(由 Azure Arc 启用)当前处于预览状态。 不应在生产环境中使用此预览版软件。

有关 beta 版本、预览版或尚未正式发布的版本的 Azure 功能所适用的法律条款,请参阅 Microsoft Azure 预览版的补充使用条款

使用 Azure CLI 将 Azure IoT 操作预览版部署到 Kubernetes 群集。 部署 Azure IoT 操作后,可以使用 Azure IoT Orchestrator 预览版服务管理其他工作负载并将其部署到群集。

先决条件

云资源:

  • Azure 订阅。

  • Azure 访问权限。 至少在 Azure 订阅中具有参与者权限。 根据所选的部署功能标志状态,还可能需要获取包含已启用 Arc 的 Kubernetes 群集的资源组的 Microsoft/Authorization/roleAssignments/write 权限。 可以在 Azure 基于角色的访问控制中创建自定义角色,或分配授予此权限的内置角色。 有关详细信息,请参阅一般的 Azure 内置角色

    如果你没有角色分配写入权限,仍可以通过禁用某些功能来部署 Azure IoT 操作。 本文的部署扩展部分更详细地介绍了此方法。

    • 在 Azure CLI 中,使用 az role assignment create 命令授予权限。 例如: az role assignment create --assignee sp_name --role "Role Based Access Control Administrator" --scope subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup

    • 在 Azure 门户中,当你向用户或主体分配特权管理角色时,系统会提示你使用条件来限制访问。 对于这种情况,请在“添加角色分配”页中选择“允许用户分配所有角色”条件

      显示在 Azure 门户中为用户分配高特权角色访问权限的屏幕截图。

  • 将“权限模型”设置为“保管库访问策略”的 Azure 密钥保管库。 可以在现有密钥保管库的“访问配置”部分中检查此设置。 如果需要创建新的密钥保管库,请使用 az keyvault create 命令:

    az keyvault create --enable-rbac-authorization false --name "<KEYVAULT_NAME>" --resource-group "<RESOURCE_GROUP>"
    

开发资源:

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

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

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

群集主机:

  • 已启用 Azure Arc 的 Kubernetes 群集。 如果还没有,请按照准备已启用 Azure Arc 的 Kubernetes 群集中的步骤操作。

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

    Azure IoT 操作应在任何符合 CNCF 的 Kubernetes 群集上工作。 目前,Microsoft 仅支持 Ubuntu Linux 和 WSL 上的 K3s 或 Windows 上的 AKS Edge Essentials。 使用适用于 Linux 的 Windows 子系统 (WSL) 中的 Ubuntu 是获取用于测试的 Kubernetes 群集的最简单方式。

    使用适用于 Azure CLI 的 Azure IoT 操作扩展,通过群集主机上的 verify-host 命令验证是否已正确配置群集主机以供部署:

    az iot ops verify-host
    

部署扩展

使用 Azure CLI 将 Azure IoT 操作组件部署到已启用 Arc 的 Kubernetes 群集。

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

    az login
    

    注意

    如果在浏览器中使用 GitHub Codespaces,az login 在登录后会在浏览器窗口中返回 localhost 错误。 若要修复,请执行以下任一操作:

    • 在 VS Code 桌面中打开代码空间,然后在终端中运行 az login。 这会打开一个浏览器窗口,可以在该窗口中登录到 Azure。
    • 或者,请在浏览器中收到 localhost 错误后,从浏览器复制 URL,并在新的终端选项卡中使用 curl <URL>。应会看到 JSON 响应,其中包含消息“你已登录到 Microsoft Azure!”。
  2. 将 Azure IoT 操作部署到群集。 使用可选标志自定义 az iot ops init 命令以适合你的方案。

    默认情况下,az iot ops init 命令会执行以下操作,其中一些操作要求登录到 CLI 的主体具有提升的权限:

    • 设置服务主体和应用注册,使群集能够访问密钥保管库。
    • 配置 TLS 证书。
    • 在连接到密钥保管库的群集上配置机密存储。
    • 部署 Azure IoT 操作资源。
    az iot ops init --cluster <CLUSTER_NAME> --resource-group <RESOURCE_GROUP> --kv-id <KEYVAULT_ID>
    

    如果你在资源组中没有 Microsoft.Authorization/roleAssignment/write 权限,请添加 --disable-rsync-rules 功能标志。 此标志会禁用部署上的资源同步规则。

    如果你要使用现有的服务主体和应用注册,而不是允许 init 创建新的服务主体和应用注册,请包含 --sp-app-id,--sp-object-id--sp-secret 参数。 有关详细信息,请参阅手动配置服务主体和密钥保管库

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

    az iot ops check
    

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

查看群集中的资源

部署正在进行时,可以监视正在应用到群集的资源。 可以使用 kubectl 命令观察群集上的更改,或者,由于群集已启用 Arc,因此可以使用 Azure 门户。

若要在群集上查看 Pod,请运行以下命令:

kubectl get pods -n azure-iot-operations

完成部署可能需要几分钟。 重新运行 get pods 命令以刷新视图。

若要在 Azure 门户中查看群集,请使用以下步骤:

  1. 在 Azure 门户中,导航到包含群集的资源组。

  2. 从资源组的“概述”中,选择群集名称。

  3. 在群集上,从菜单中选择“扩展”

    可以看到群集正在运行 microsoft.iotoperations.x 类型的扩展,这是所有 Azure IoT 操作组件和业务流程服务的组名称。

    还有名为 akvsecretsprovider 的扩展。 此扩展是使用 az iot ops init 命令在群集上配置和安装的机密提供程序。 在测试期间,可以删除并重新安装 Azure IoT 操作组件,但在群集上保留机密提供程序扩展。

提示

可以运行 az iot ops check 来评估已部署的 AIO 工作负载的健康状况和配置。 默认情况下,会评估包含云连接器的 MQ,可以使用 --ops-service --svc指定服务

更新部署

目前,不支持更新现有的 Azure IoT 操作部署。 相反,请从新部署的干净群集开始。

如果要在群集上删除 Azure IoT 操作部署,以便重新部署到该部署,请在 Azure 门户中导航到群集。 选择“microsoft.iotoperations.x”、“microsoft.deviceregistry.assets”类型的扩展,然后选择“卸载”。 将机密提供程序保留在群集上,因为这是部署的先决条件,但不包含在新的部署中。

后续步骤

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