Share via


將 Azure IoT 作業預覽延伸模組部署至 Kubernetes 叢集

重要

Azure IoT Operations Preview – 由 Azure Arc 啟用目前處於預覽狀態。 您不應該在生產環境中使用此預覽軟體。

請參閱 Microsoft Azure 預覽版增補使用規定,以了解適用於 Azure 功能 (搶鮮版 (Beta)、預覽版,或尚未正式發行的版本) 的法律條款。

使用 Azure CLI 將 Azure IoT Operations Preview 部署至 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 Arc 的 Kubernetes 叢集中的步驟

    如果您已將 Azure IoT 作業部署至叢集,請先卸載這些資源,再繼續進行。 如需詳細資訊,請參閱 更新部署

    Azure IoT 作業應該在任何符合NCF 標準的 kubernetes 叢集上運作。 目前,Microsoft 僅支援 Ubuntu Linux 和 WSL 上的 K3,或 Windows 上的 AKS Edge Essentials。 在 Windows 子系統 Linux 版 中使用Ubuntu是取得 Kubernetes 叢集以進行測試的最簡單方式。

    使用適用於 Azure CLI 的 Azure IoT 作業擴充功能,使用叢集主機上的 verify-host 命令,確認您的叢集主機已正確設定以進行部署:

    az iot ops verify-host
    

部署擴充功能

使用 Azure CLI 將 Azure IoT Operations 元件部署至已啟用 Arc 的 Kubernetes 叢集。

  1. 即使您先前已登入,仍使用瀏覽器以互動方式登入 Azure CLI。 如果您未以互動方式登入,您可能會收到錯誤,指出 當您繼續部署 Azure IoT 作業時,您的裝置必須受管理才能存取您的資源

    az login
    

    注意

    如果您在瀏覽器中使用 GitHub Codespaces, az login 請在登入之後,在瀏覽器視窗中傳回 localhost 錯誤。 若要修正,請:

    • 在 VS Code 桌面中開啟 codespace,然後在終端機中執行 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 Operations 服務部署的健康情況、組態和可用性。 check 命令可協助您在部署和設定中找到問題。

    az iot ops check
    

    您也可以新增參數以檢查 --detail-level 2 主題對應、QoS 和訊息路由的設定,以取得詳細信息檢視。

設定叢集網路 (AKS EE)

在 AKS Edge Essentials 叢集上,啟用 Azure IoT MQ 預覽代理程式的輸入連線,並設定埠轉送:

  1. 啟用埠 8883 的防火牆規則:

    New-NetFirewallRule -DisplayName "Azure IoT MQ" -Direction Inbound -Protocol TCP -LocalPort 8883 -Action Allow
    
  2. 執行下列命令,並記下名為 aio-mq-dmqtt-frontend的服務IP位址:

    kubectl get svc aio-mq-dmqtt-frontend -n azure-iot-operations -o jsonpath='{.status.loadBalancer.ingress[0].ip}'
    
  3. 啟用埠 8883 的埠轉送。 <aio-mq-dmqtt-frontend IP address>取代為您在上一個步驟中指出的 IP 位址:

    netsh interface portproxy add v4tov4 listenport=8883 listenaddress=0.0.0.0 connectport=8883 connectaddress=<aio-mq-dmqtt-frontend IP address>
    

檢視叢集中的資源

部署進行中時,您可以監看要套用至叢集的資源。 您可以使用 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 Operations 元件,但請將秘密提供者延伸模組保留在叢集上。

提示

您可以執行 az iot ops check 來評估已部署 AIO 工作負載的健康情況和設定。 根據預設,會評估包含雲端連接器的 MQ,而且您可以使用 來指定服務--ops-service --svc

更新部署

目前不支援更新現有的 Azure IoT 作業部署。 相反地,請從全新部署的全新叢集開始。

如果您想要刪除叢集上的 Azure IoT 作業部署,以便重新部署至叢集,請瀏覽至 Azure 入口網站 上的叢集。 選取 microsoft.iotoperations.x 和 microsoft.deviceregistry.assets 類型的擴充功能,然後選取 [卸載]。 將秘密提供者保留在叢集上,因為這是部署的必要條件,且未包含在全新部署中。

下一步

如果您的元件需要連線到 SQL 或 Fabric 等 Azure 端點,請瞭解如何 管理 Azure IoT Operations Preview 部署的秘密。