共用方式為


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

在本快速入門中,您會將 Azure IoT 操作部署至已啟用 Azure Arc 的 Kubernetes 叢集,以便從遠端管理您的裝置和工作負載。 在此快速入門結束時,您會有可從雲端管理的叢集。 此端對端系列中的其餘快速入門以這個系列為基礎來定義範例資產、資料處理管線及視覺效果。

開始之前

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

為了獲得最佳的新使用者體驗,建議您使用 Azure 免費帳戶,讓您可以在這些快速入門中擁有資源擁有者權限。

我們也會使用 GitHub Codespaces 作為本快速入門的虛擬環境,讓您無須在自己的機器上安裝新的工具即可測試案例。 不過,如果您想要將 Azure IoT 操作部署至 Ubuntu 或 Azure Kubernetes Service (AKS) 上的本機叢集,請參閱準備已啟用 Azure Arc 的 Kubernetes 叢集

重要事項

目前,Ubuntu 24.04 和 Tanzu Kubernetes 上的 K3 是部署生產環境中 Azure IoT 作業的唯一平臺。 若要深入了解,請參閱支援的環境

必要條件

開始之前,請符合下列必要條件:

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

  • GitHub 帳戶。

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

  • Microsoft.Authorization/roleAssignments/write 權限在資源群組層級。

我們會解決什麼問題?

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

  1. 在 GitHub Codespaces 中建立 Kubernetes 叢集。
  2. 將叢集連線至 Azure Arc 以進行遠端管理。
  3. 建立結構描述登錄。
  4. 將 Azure IoT 操作部署至您的叢集。

建立叢集

Azure IoT 操作可部署至 Ubuntu 上的 K3s、Azure Kubernetes Service (AKS) Edge Essentials 和 Azure Local 上的 AKS。 不過,為了快速方便起見,本快速入門會使用 GitHub Codespaces 來裝載您的叢集。 若要了解如何改將 Azure IoT 操作部署至 Windows 或 Ubuntu 上的叢集,請參閱準備已啟用 Azure Arc 的 Kubernetes 叢集

附註

程式碼空間很容易快速設定,稍後卸除,但不適合效能評估或規模測試。 僅使用 GitHub Codespaces 進行探索。

Codespaces 環境足以完成快速入門步驟,但不支援進階設定。

在本節中,您會建立新的叢集。 如果您想要重複使用之前部署 Azure IoT 操作的叢集,請參閱清除資源中的步驟,以在繼續之前解除安裝 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 提供下列建議的祕密:

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

    提示

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

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

  3. 選取 [建立新的 codespace]

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

    顯示在 VS Code Desktop 中開啟 Codespace 的螢幕擷取畫面。

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

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

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

將叢集連線至 Azure Arc

將叢集連線至 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"
    az provider register -n "Microsoft.SecretSyncController"
    
  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. 取得 Azure Arc 服務在您的租用戶中使用的 Microsoft Entra ID 應用程式 objectId,並將其儲存為環境變數。 完全按照書面指令執行下列命令,不變更 GUID 值。

    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。 在部署 Kubernetes 叢集的機器上執行此命令:

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

建立儲存體帳戶和結構描述登錄

結構描述登錄是將訊息定義同時儲存在雲端和邊緣的同步存放庫。 Azure IoT 操作需要叢集上的結構描述登錄。 結構描述登錄需要 Azure 儲存體帳戶,以取得儲存在雲端中的結構描述資訊。

本節中建立結構描述登錄的命令需要資源群組層級的 Microsoft.Authorization/roleAssignments/write 權限。 此權限可用來為結構描述登錄提供參與者角色,使其能夠寫入儲存體帳戶。

在 Codespaces 終端機中執行下列 CLI 命令。

  1. 為您在本節中建立的資源設定環境變數。

    預留位置
    <儲存帳戶名稱> 您的儲存體帳戶名稱。 儲存體帳戶名稱必須介於 3 到 24 個字元的長度,且只能包含數字和小寫字母。
    <SCHEMA_REGISTRY_NAME> 您的結構描述登錄名稱。 結構描述登錄名稱只能包含數字、小寫字母和連字號。
    <SCHEMA_REGISTRY_NAMESPACE> 您的結構描述登錄命名空間名稱。 命名空間會唯一識別租用戶內的結構描述登錄。 結構描述登錄命名空間名稱只能包含數字、小寫字母和連字號。
    STORAGE_ACCOUNT=<STORAGE_ACCOUNT_NAME>
    SCHEMA_REGISTRY=<SCHEMA_REGISTRY_NAME>
    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 操作元件的相依性來設定叢集,然後部署 Azure IoT 操作。

在 Codespaces 終端機中執行下列 CLI 命令。

  1. 為您的叢集進行 Azure IoT 操作的初始化。

    提示

    每個叢集只需要執行一次 init 命令。 如果您要重複使用已部署最新 Azure IoT 操作版本的叢集,您可以略過此步驟。

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

    此命令可能需要幾分鐘的時間才能完成。 您可以在終端機中監看部署進度顯示中的進度。

  2. 部署 Azure IoT 操作。

    az iot ops create --cluster $CLUSTER_NAME --resource-group $RESOURCE_GROUP --name ${CLUSTER_NAME}-instance  --sr-resource-id $(az iot ops schema registry show --name $SCHEMA_REGISTRY --resource-group $RESOURCE_GROUP -o tsv --query id) --broker-frontend-replicas 1 --broker-frontend-workers 1  --broker-backend-part 1  --broker-backend-workers 1 --broker-backend-rf 2 --broker-mem-profile Low
    

    此命令可能需要幾分鐘的時間才能完成。 您可以在終端機中監看部署進度顯示中的進度。

    如果您收到錯誤,指出您的裝置必須經過管理才能存取您的資源,請再次執行 az login,並確實使用瀏覽器以互動方式登入。

檢視叢集中的資源

部署完成後,您可以使用 kubectl 命令來觀察叢集上的變更,或者,由於叢集已啟用 Arc,您可以使用 Azure 入口網站。

若要檢視叢集上的 Pod,請執行下列命令:

kubectl get pods -n azure-iot-operations

若要在 Azure 入口網站上檢視資源,請使用下列步驟:

  1. Azure 入口網站中,移至包含 Azure IoT 操作執行個體的資源群組,或搜尋並選取 [Azure IoT 操作]

  2. 選取 Azure IoT 操作執行個體的名稱。

  3. 在執行個體的 [概觀] 頁面上,選取 [資源摘要] 索引標籤,以檢視已部署至叢集之資源的佈建狀態。

    螢幕擷取畫面:顯示已啟用 Arc 之叢集上的 Azure IoT 操作執行個體。

我們如何解決問題?

在本快速入門中,您設定已啟用 Arc 的 Kubernetes 叢集,以便與 Azure IoT 操作元件安全地通訊。 然後,您將這些元件部署至叢集。 在此測試案例中,您有一個在 Codespaces 中執行的 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。

後續步驟