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

快速入门:将 Azure IoT 操作预览版部署到已启用 Arc 的 Kubernetes 群集

重要

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

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

在本快速入门中,你会将一套 IoT 服务部署到已启用 Azure Arc 的 Kubernetes 群集,以便可以远程管理设备和工作负载。 Azure IoT 操作是一套包含 Azure IoT Orchestrator 预览版的数字操作服务。 本快速入门介绍了如何使用 Orchestrator 将这些服务部署到 Kubernetes 群集。 在本快速入门结束时,你拥有可从云进行管理的群集,该群集生成要用于以下快速入门的示例数据。

本快速入门中部署的服务包括:

本系列中的以下快速入门在此基础上构建,用于定义示例资产、数据处理管道和可视化效果。 如果想要部署 Azure IoT 操作来运行你自己的工作负荷,请参阅准备已启用 Azure Arc 的 Kubernetes 群集将 Azure IoT 操作预览版扩展部署到 Kubernetes 群集

开始之前

本快速入门系列旨在帮助你尽快掌握 Azure IoT 操作的入门知识,以便可以评估端到端的方案。 在真正的开发或生产环境中,这些任务将由多个团队共同执行,某些任务可能需要提升的权限。

为了获得最佳的新用户体验,我们建议使用 Azure 免费帐户,以便你对这些快速入门中的资源拥有所有者权限。 我们还会逐步介绍如何将 GitHub Codespaces 用作虚拟环境,你可以在其中快速开始部署资源和运行命令,而无需在自己的计算机上安装新工具。

先决条件

在本快速入门中,你将创建一个 Kubernetes 群集来接收 Azure IoT 操作部署。

如果要使用已部署 Azure IoT 操作的群集重新运行此快速入门,请参阅清理资源中的步骤以卸载 Azure IoT 操作,然后继续操作。

在开始之前,需满足以下先决条件:

我们将解决什么问题?

Azure IoT 操作是在 Kubernetes 群集上运行的一套数据服务。 你想要从云远程管理这些群集,并能够安全地与云资源和终结点通信。 在本快速入门中,我们通过以下任务解决了这些问题:

  1. 创建一个 Kubernetes 群集并将其连接到 Azure Arc 以便进行远程管理。
  2. 创建 Azure 密钥保管库以管理群集的机密。
  3. 使用机密存储和服务主体配置群集,以与云资源通信。
  4. 将 Azure IoT 操作部署到群集。

将 Kubernetes 群集连接到 Azure Arc

Azure IoT 操作应适用于符合云原生计算基金会 (CNCF) 标准的任何 Kubernetes 群集。 对于本快速入门,请使用 GitHub Codespaces 来托管群集。

在本部分中,将创建新的群集并将其连接到 Azure Arc。如果要重复使用之前已将 Azure IoT 操作部署到的群集,请参阅清理资源中的步骤以卸载 Azure IoT 操作,然后继续操作。

使用 GitHub Codespaces 在 Kubernetes 群集上尝试 Azure IoT 操作,无需在本地计算机上安装任何内容。 Azure-Samples/explore-iot-operations codespace 预配置有:

重要

codespace 易于快速设置并稍后拆解,但它们不适用于性能评估或规模测试。 仅使用 GitHub Codespaces 进行探索。

若要创建 codespace 和群集,请使用以下步骤:

  1. 在 GitHub Codespaces 中创建 codespace。

    创建 explore-iot-operations codespace

  2. 为 codespace 提供以下建议的机密:

    参数
    SUBSCRIPTION_ID Azure 订阅 ID。
    RESOURCE_GROUP 将在其中创建群集的新 Azure 资源组的名称。
    LOCATION 离你较近的 Azure 区域。 公共预览版支持以下区域:eastus、eastus2、westus、westus2、westus3、westeurope 或northeurope。

    提示

    在此步骤中作为机密提供的值将保存在你的 GitHub 帐户中,以便在此 codespace 和将来的 codespace 中使用。 它们还会自动添加为 codespace 终端中的环境变量,你可以在下一部分所述的 CLI 命令中使用这些环境变量。

    此外,此 codespace 会自动创建一个使用 codespace 名称进行设置的 CLUSTER_NAME 环境变量。

  3. 选择“新建 codespace”。

  4. codespace 准备就绪后,选择左上角的菜单按钮,然后选择“在 VS Code 桌面中打开”。

    打开 VS Code 桌面版

  5. 如果系统提示,请安装适用于 Visual Studio Code 的 GitHub Codespaces 扩展并登录到 GitHub。

  6. 在 Visual Studio Code 中,选择“视图”>“终端”。

    使用此终端运行用于管理群集的所有命令行和 CLI 命令。

要将群集连接到 Azure Arc:

  1. 在 codespace 终端中,登录到 Azure CLI:

    az login
    

    提示

    如果在浏览器中使用 GitHub codespace 环境而不是 VS Code 桌面版,则运行 az login 会返回 localhost 错误。 若要修复该错误,请执行以下任一操作:

    • 在 VS Code 桌面中打开 codespace,然后返回浏览器终端并重新运行 az login
    • 或者,在浏览器中收到 localhost 错误后,请从浏览器复制 URL,并在新的终端选项卡中运行 curl "<URL>"。应会看到 JSON 响应,其中包含消息“你已登录到 Microsoft Azure!”。
  2. 为所有命令设置 Azure 订阅上下文:

    az account set -s $SUBSCRIPTION_ID
    
  3. 在订阅中注册所需的资源提供程序:

    注意

    对于每个订阅,只需运行此步骤一次。

    az provider register -n "Microsoft.ExtendedLocation"
    az provider register -n "Microsoft.Kubernetes"
    az provider register -n "Microsoft.KubernetesConfiguration"
    az provider register -n "Microsoft.IoTOperationsOrchestrator"
    az provider register -n "Microsoft.IoTOperationsMQ"
    az provider register -n "Microsoft.IoTOperationsDataProcessor"
    az provider register -n "Microsoft.DeviceRegistry"
    
  4. 使用az group create命令在 Azure 订阅中创建资源组以存储所有资源:

    az group create --location $LOCATION --resource-group $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID
    
  5. 使用 az connectedk8s connect 命令连接到已启用 Arc 的 Kubernetes 群集,并将其作为 Azure 资源组的一部分进行管理:

    az connectedk8s connect -n $CLUSTER_NAME -l $LOCATION -g $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID
    

    提示

    $CLUSTER_NAME 的值会自动设置为 codespace 的名称。 如果你要使用其他名称,请替换环境变量。

  6. 获取 Azure Arc 服务使用的 Microsoft Entra ID 应用程序的 objectId,并将其保存为环境变量。

    export OBJECT_ID=$(az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query id -o tsv)
    
  7. 使用az connectedk8s enable-features命令在群集上启用自定义位置支持。 此命令使用 Azure Arc 服务所用的 Microsoft Entra ID 应用程序的 objectId

    az connectedk8s enable-features -n $CLUSTER_NAME -g $RESOURCE_GROUP --custom-locations-oid $OBJECT_ID --features cluster-connect custom-locations
    

验证群集

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

az iot ops verify-host

此帮助程序命令检查与 Azure 资源管理器和 Microsoft 容器注册表终结点的连接。

部署 Azure IoT 操作预览版

在此部分中,使用 az iot ops init 命令来配置群集,使它能够与 Azure IoT 操作组件和密钥保管库安全通信,然后部署 Azure IoT 操作。

在 Codespaces 终端中运行以下 CLI 命令。

  1. 创建密钥保管库。 对于此方案,我们将使用与群集相同的名称和资源组。 Keyvault 名称的最大长度为 24 个字符,因此以下命令会根据需要截断 CLUSTER_NAME 环境变量。

    az keyvault create --enable-rbac-authorization false --name ${CLUSTER_NAME:0:24} --resource-group $RESOURCE_GROUP
    

    提示

    可以将现有的密钥保管库用于机密,但需验证权限模型是否设置为保管库访问策略。 可以在 Azure 门户中或在现有密钥保管库的“访问配置”部分中检查此设置。 或者使用 az keyvault show 命令检查 enableRbacAuthorization 是否为 false。

  2. 部署 Azure IoT 操作。

    az iot ops init --simulate-plc --cluster $CLUSTER_NAME --resource-group $RESOURCE_GROUP --kv-id $(az keyvault show --name ${CLUSTER_NAME:0:24} -o tsv --query id)
    

    如果收到错误,指出“设备必须受管才能访问你的资源”,请再次运行 az login,并确保使用浏览器以交互方式登录。

    提示

    如果之前已运行 az iot ops init,它会自动在 Microsoft Entra ID 中为你创建应用注册。 可以重复使用该注册,而不是每次创建新注册。 若要使用现有应用注册,请添加可选参数 --sp-app-id <APPLICATION_CLIENT_ID>

查看群集中的资源

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

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

kubectl get pods -n azure-iot-operations

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

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

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

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

  3. 在群集上,从菜单的“设置”部分选择“扩展”。

    显示已启用 Arc 的群集上的已部署扩展的屏幕截图。

    可以看到群集正在运行 microsoft.iotoperations.x 类型的扩展,这是所有 Azure IoT 操作组件和业务流程服务的组名称。 这些扩展名包含用于标识部署的唯一后缀。 在上一个屏幕截图中,此后缀为 -z2ewy。

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

  4. 记下名为 mq-... 的扩展名的完整名称。在以下快速入门中使用此名称。

我们如何解决问题?

在本快速入门中,你配置了已启用 Arc 的 Kubernetes 群集,以便它可以与 Azure IoT 操作组件安全通信。 然后,将这些组件部署到了群集。 对于此测试方案,你有可能在计算机上本地运行的 Kubernetes 单个群集。 但是,在生产方案中,可以使用相同的步骤将工作负载部署到多个站点上的多个群集。

清理资源

如果继续学习下一个快速入门,请保留所有资源。

如果要删除 Azure IoT 操作部署,但计划在群集上重新安装,请确保在群集上保留机密提供程序。

  1. 在 Microsoft Azure 门户的资源组中,选择你的群集。

  2. 在群集资源页面上,选择“扩展”。

  3. 选择类型为“microsoft.iotoperations.x”、“microsoft.deviceregistry.assets”的所有扩展,然后选择“卸载”。 请不要卸载机密提供程序扩展。

    屏幕截图显示要卸载的扩展。

  4. 返回资源组并选择自定义位置资源,然后选择“删除”。

如果要删除为此快速入门创建的所有资源,请删除已部署 Azure IoT 操作的 Kubernetes 群集,并移除包含该群集的 Azure 资源组。

下一步