快速入門:使用 K3 在 GitHub Codespaces 中執行 Azure IoT 操作預覽

重要

已啟用 Azure Arc 的 Azure IoT 操作預覽版目前為預覽狀態。 請勿在生產環境使用此預覽版軟體。

當正式推出的版本可使用時,您必須部署新的 Azure IoT 操作安裝。 您將無法升級預覽安裝。

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

在本快速入門中,您將一組 IoT 服務部署到已啟用 Azure Arc 的 Kubernetes 叢集,以便從遠端管理您的裝置和工作負載。 Azure IoT 操作是一套數位作業服務。 本快速入門會引導您使用 Orchestrator 將這些服務部署至 Kubernetes 叢集。 在快速入門結束時,您會有一個叢集,您可以從雲端進行管理,產生要用於下列快速入門中的範例資料。

此端對端系列中的其餘快速入門是以此系列為基礎來定義範例資產、數據處理管線和視覺效果。

如果您想要將 Azure IoT 作業部署到本機叢集,例如 Ubuntu 上的 Azure Kubernetes Service Edge Essentials 或 K3s,請參閱 部署詳細數據

開始之前

本系列快速入門旨在協助您儘快開始使用 Azure IoT 操作,以便評估端對端案例。 在真正的開發或生產環境中,多個小組共同執行這些工作,有些工作可能需要更高的許可權。

為了獲得最佳的新使用者體驗,建議您使用 Azure 免費帳戶,讓您可以在這些快速入門中擁有資源擁有者權限。 我們也提供使用 GitHub Codespaces 作為虛擬環境的步驟,您可以在其中快速開始部署資源並執行命令,而不需要在自己的電腦上安裝新的工具。

必要條件

在本快速入門中,您會建立 Kubernetes 叢集來接收 Azure IoT 操作部署。

如果您想要重複使用已部署 Azure IoT 作業的叢集,請參閱清除資源以卸載 Azure IoT 作業中的步驟,再繼續進行。

開始之前,請準備下列先決條件:

  • Azure 訂用帳戶。 如果您沒有 Azure 訂用帳戶,請在開始之前建立免費帳戶

  • GitHub 帳戶。

  • 開發機器上已安裝 Visual Studio Code。 如需詳細資訊,請參閱下載 Visual Studio Code

  • Microsoft/Authorization/roleAssignments/write 許可權在資源群組層級。

我們會解決什麼問題?

Azure IoT 操作是一套在 Kubernetes 叢集上執行的資料服務。 您希望這些叢集從雲端遠端管理,並能夠安全地與雲端資源和端點通訊。 在本快速入門中,我們會使用下列工作來解決這些疑慮:

  1. 建立 Kubernetes 叢集,並連線至 Azure Arc 以進行遠端管理。
  2. 建立架構登錄。
  3. 將 Azure IoT 操作部署至您的叢集。

將 Kubernetes 叢集連線至 Azure Arc

Azure IoT 操作應該處理任何符合雲端原生運算基礎 (NCF) 標準的 Kubernetes 叢集。 為了快速方便起見,本快速入門會使用 GitHub Codespaces 來裝載您的叢集。

重要

程式碼空間很容易快速設定,稍後卸除,但不適合效能評估或規模測試。 僅使用 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 已預先設定了以下項目:

  • 輕量型 Kubernetes 叢集 K3d 中執行的 K3s
  • Azure CLI
  • 用來管理 Kubernetes 資源的 Kubectl
  • 其他實用的工具,例如 Helmk9s

若要建立您的 Codespace 和叢集,請使用下列步驟:

  1. 在 GitHub Codespaces 中建立一個 Codespace。

    建立 explore-iot-operations Codespace

  2. 為您的 Codespace 提供下列建議的祕密:

    參數
    SUBSCRIPTION_ID 您的 Azure 訂用帳戶識別碼。
    RESOURCE_GROUP 將建立叢集的新 Azure 資源群組名稱。
    LOCATION 靠近您的 Azure 區域。 如需目前支援的區域清單,請參閱支援的區域

    提示

    您在此步驟中提供作為祕密的值會儲存在 GitHub 帳戶上,以供此 Codespace 和未來的 Codespace 使用。 它們會在 codespace 終端機中新增為環境變數,您可以在下一節的 CLI 命令中使用這些環境變數。

    此外,此 Codespace 會建立環境變數 CLUSTER_NAME ,此環境變數會使用 codespace 名稱進行設定。

  3. 選取 [建立新的 codespace]

  4. 一旦 Codespace 就緒,請選取左上方的功能表按鈕,然後選取 [在 VS Code Desktop 中開啟]

    開啟 VS Code Desktop

  5. 如果出現提示,請安裝適用於 Visual Studio Code 的 GitHub Codespaces 延伸模組,然後登入 GitHub。

  6. 在 Visual Studio Code 中,選取 [檢視]>[終端機]

    使用此終端機來執行管理叢集的所有 CLI 命令。

將叢集連線至 Azure Arc:

  1. 在您的 Codespace 終端機中,登入 Azure CLI:

    az login
    

    提示

    如果您在瀏覽器 (而非 VS Code Desktop) 中使用 GitHub Codespace 環境,則執行 az login 會傳回 localhost 錯誤。 若要修正錯誤,請:

    • 在 VS Code Desktop 中開啟 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 命令為您的 Kubernetes 叢集啟用 Arc,並在 Azure 資源群組中管理此叢集:

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

    提示

    $CLUSTER_NAME 的值會自動設定為 Codespace 的名稱。 如果您想要使用不同的名稱,請取代環境變數。

  6. objectId取得租使用者中 Azure Arc 服務所使用的 Microsoft Entra ID 應用程式,並將其儲存為環境變數。

    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 Operations 延伸模組,使用叢集主機上的 verify-host 命令,確認您的叢集主機已正確設定以進行部署:

az iot ops verify-host

此協助程式命令會檢查 Azure Resource Manager 和 Microsoft Container Registry 端點的連線能力。

建立記憶體帳戶和架構登錄

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. 建立可連線到記憶體帳戶的架構登錄。 如果記憶體帳戶中還沒有架構,此命令也會建立名為 架構的 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 Operations 元件的相依性來設定叢集,然後部署 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。

後續步驟