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

快速入门:使用 K3s 在 GitHub Codespaces 中运行 Azure IoT 操作预览版

重要

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

在正式版推出后,你需要部署新的 Azure IoT 操作安装。 无法升级预览版安装。

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

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

本端到端系列中的其余快速入门均以此为基础来定义示例资产、数据处理管道和可视化效果。

如果要将 Azure IoT 操作部署到本地群集(例如 Azure Kubernetes 服务边缘软件包或 Ubuntu 上的 K3s),请参阅部署详细信息

开始之前

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

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

先决条件

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

如果要重用已部署 Azure IoT 操作的群集,,请参阅清理资源中的步骤以卸载 Azure IoT 操作,然后继续操作。

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

我们将解决什么问题?

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

  1. 创建一个 Kubernetes 群集并将其连接到 Azure Arc 以便进行远程管理。
  2. 创建架构注册表。
  3. 将 Azure IoT 操作部署到群集。

将 Kubernetes 群集连接到 Azure Arc

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

重要

codespace 易于快速设置并稍后拆解,但它们不适用于性能评估或规模测试。 仅使用 GitHub Codespaces 进行探索。 若要了解如何将 Azure IoT 操作部署到生产群集(如 AKS 边缘软件包),请参阅“准备已启用 Azure Arc 的 Kubernetes 群集”。

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

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

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

  1. 在 GitHub Codespaces 中创建 codespace。

    创建 explore-iot-operations codespace

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

    参数
    SUBSCRIPTION_ID Azure 订阅 ID。
    RESOURCE_GROUP 将在其中创建群集的新 Azure 资源组的名称。
    LOCATION 离你较近的 Azure 区域。 有关当前支持区域的列表,请参阅支持的区域

    提示

    在此步骤中作为机密提供的值将保存在你的 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 CLI 会显示你的所有订阅,并用星号 * 指示默认订阅。 若要继续使用默认订阅,请选择 Enter。 否则,请键入要使用的 Azure 订阅数。

  3. 在订阅中注册所需的资源提供程序:

    注意

    对于每个订阅,只需运行此步骤一次。 若要注册资源提供程序,你需要有执行 /register/action 操作的权限,该权限包含在订阅“参与者”和“所有者”角色中。 有关详细信息,请参阅 Azure 资源提供程序和类型

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

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

    az connectedk8s connect --name $CLUSTER_NAME --location $LOCATION --resource-group $RESOURCE_GROUP
    

    提示

    $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 操作需要群集上的架构注册表。 架构注册表需要一个 Azure 存储帐户,这样它就可以在云和边缘之间同步架构信息。

本部分中创建架构注册表的命令需要资源组级别的 Microsoft/Authorization/roleAssignments/write 权限。

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

  1. 为你在本部分中创建的资源设置环境变量。

    占位符
    <STORAGE_ACCOUNT_NAME> 存储帐户的名称。 存储帐户名称必须为 3 到 24 个字符,并且只包含数字和小写字母。
    <SCHEMA_REGISTRY_NAME> 架构注册表的名称。
    <SCHEMA_REGISTRY_NAMESPACE> 架构注册表命名空间的名称。 命名空间以独一无二的方式标识租户内的架构注册表。
    export STORAGE_ACCOUNT=<STORAGE_ACCOUNT_NAME>
    export SCHEMA_REGISTRY=<SCHEMA_REGISTRY_NAME>
    export SCHEMA_REGISTRY_NAMESPACE=<SCHEMA_REGISTRY_NAMESPACE>
    
  2. 创建已启用分层命名空间的存储帐户。

    az storage account create --name $STORAGE_ACCOUNT --location $LOCATION --resource-group $RESOURCE_GROUP --enable-hierarchical-namespace
    
  3. 创建连接到存储帐户的架构注册表。 如果尚不存在名为“schemas”的 blob 容器,此命令还会在存储帐户中创建一个那样的容器。

    az iot ops schema registry create --name $SCHEMA_REGISTRY --resource-group $RESOURCE_GROUP --registry-namespace $SCHEMA_REGISTRY_NAMESPACE --sa-resource-id $(az storage account show --name $STORAGE_ACCOUNT -o tsv --query id)
    

部署 Azure IoT 操作预览版

在本部分,我们使用 Azure IoT 操作组件的依赖项配置群集,然后部署 Azure IoT 操作。

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

  1. 为 Azure IoT 操作初始化群集。

    提示

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

    az iot ops init --cluster $CLUSTER_NAME --resource-group $RESOURCE_GROUP --sr-resource-id $(az iot ops schema registry show --name $SCHEMA_REGISTRY --resource-group $RESOURCE_GROUP -o tsv --query id)
    

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

  2. 部署 Azure IoT 操作。 此命令需要几分钟才能完成:

    az iot ops create --cluster $CLUSTER_NAME --resource-group $RESOURCE_GROUP --name ${CLUSTER_NAME}-instance
    

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

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

查看群集中的资源

在部署过程中,CLI 进度界面会显示你所处的部署阶段。 部署完成后,就可以使用 kubectl 命令观察群集上的更改,或者,由于群集已启用 Arc,就可以使用 Azure 门户。

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

kubectl get pods -n azure-iot-operations

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

  1. Azure 门户中,转到包含 Azure IoT 操作实例的资源组,或搜索并选择“Azure IoT 操作”

  2. 选择 Azure IoT 操作实例的名称。

  3. 在实例的“概述”页面上,“Arc 扩展”选项卡会显示已部署到群集的资源

    显示已启用 Arc 的群集上的 Azure IoT 操作实例的屏幕截图。

我们如何解决问题?

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

清理资源

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

如果要移除 Azure IoT 操作部署但保留你的群集,请使用 az iot ops delete 命令:

az iot ops delete --cluster $CLUSTER_NAME --resource-group $RESOURCE_GROUP

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

如果使用了 Codespaces 来完成这些快速入门,请从 GitHub 中删除你的 Codespace。

下一步