共用方式為


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

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

開始之前

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

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

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

必要條件

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

  • 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 上的 K3、Azure Kubernetes Service (AKS) Edge Essentials 和 Azure 本機上的 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 提供下列建議的祕密:

    參數
    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 中開啟 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. objectId取得 Azure Arc 服務在您的租使用者中使用的 Microsoft Entra ID 應用程式,並將其儲存為環境變數。 執行下列命令,完全如寫入一樣,而不需要變更 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. 為您在本節中建立的資源設定環境變數。

    預留位置
    <STORAGE_ACCOUNT_NAME> 儲存體帳戶的名稱。 儲存體帳戶名稱長度必須介於 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 Operations 元件的相依性來設定叢集,然後部署 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。

後續步驟