Modulok fejlesztése és hibakeresése az Azure IoT Edge-hez a Visual Studio 2022 használatával

A következőkre vonatkozik:IoT Edge 1.5 pipa IoT Edge 1.5 IoT Edge 1.4 pipa IoT Edge 1.4

Fontos

Az IoT Edge 1.5 LTS és az IoT Edge 1.4 LTS támogatott kiadások. Az IoT Edge 1.4 LTS 2024. november 12-én megszűnik. Ha egy korábbi kiadáson dolgozik, olvassa el az IoT Edge frissítése című témakört.

Ez a cikk bemutatja, hogyan használhatja a Visual Studio 2022-t egyéni Azure IoT Edge-modulok fejlesztésére, hibakeresésére és üzembe helyezésére. A Visual Studio 2022 C és C# nyelven írt IoT Edge-modulokhoz biztosít sablonokat. A támogatott eszközarchitektúrák a Windows x64, Linux x64, ARM32 és ARM64 (előzetes verzió). A támogatott operációs rendszerekről, nyelvekről és architektúrákról további információt a Nyelv és az architektúra támogatása című témakörben talál.

Ez a cikk két IoT Edge-fejlesztési eszköz lépéseit tartalmazza.

  • A parancssori felület (CLI) a fejlesztés előnyben részesített eszköze.
  • Azure IoT Edge-eszközök Visual Studio-bővítményhez . A bővítmény karbantartási módban van.

A cikk eszközbeállításának kiválasztásához használja az elején található eszközválasztó gombot. Mindkét eszköz a következő előnyöket biztosítja:

  • IoT Edge-megoldások és -modulok létrehozása, szerkesztése, létrehozása, futtatása és hibakeresése a helyi fejlesztői számítógépen.
  • Az Azure IoT-modulokat C vagy C# nyelven kódolva használhatja a Visual Studio fejlesztésének előnyeit.
  • Helyezze üzembe az IoT Edge-megoldást egy IoT Edge-eszközön az Azure IoT Hubon keresztül.

Előfeltételek

Ez a cikk feltételezi, hogy egy Windows rendszert futtató gépet használ fejlesztési gépként.

  • Telepítse vagy módosítsa a Visual Studio 2022-t a fejlesztői gépen. Válassza ki az Azure-fejlesztést és az asztali fejlesztést A C++ számítási feladatok beállításaival.

  • Töltse le és telepítse az Azure IoT Edge-eszközöket a Visual Studio Marketplace-ről. Az Azure IoT Edge Tools bővítmény használatával létrehozhatja és létrehozhatja az IoT Edge-megoldást. Az előnyben részesített fejlesztési eszköz a parancssori (CLI) Azure IoT Edge fejlesztői eszköz. A bővítmény tartalmazza a Visual Studio-projekt létrehozásához használt Azure IoT Edge-projektsablonokat. Jelenleg telepítenie kell a bővítményt, függetlenül a használt fejlesztési eszköztől.

    Fontos

    Az Azure IoT Edge Tools for VS 2022 bővítmény karbantartási módban van. Az előnyben részesített fejlesztési eszköz a parancssori (CLI) Azure IoT Edge fejlesztői eszköz.

    Tipp.

    Ha Visual Studio 2019-et használ, töltse le és telepítse az Azure IoT Edge Tools for VS 2019-et a Visual Studio piactérről.

  • A Vcpkg-kódtár-kezelő telepítése

    git clone https://github.com/Microsoft/vcpkg
    cd vcpkg
    bootstrap-vcpkg.bat
    

    Az azure-iot-sdk-c csomag telepítése Windowshoz

    vcpkg.exe install azure-iot-sdk-c:x64-windows
    vcpkg.exe --triplet x64-windows integrate install
    
  • Töltse le és telepítsen egy Docker-kompatibilis tárolókezelő rendszert a fejlesztőgépre a modulrendszerképek létrehozásához és futtatásához. Telepítse például a Docker Community Editiont.

  • Linux-tárolókkal rendelkező modulok fejlesztéséhez olyan Windows rendszerű számítógépet használjon, amely megfelel a Docker Desktop követelményeinek.

  • Hozzon létre egy Azure Container Registryt vagy Docker Hubot a modulrendszerképek tárolásához.

    Tipp.

    A helyi Docker-beállításjegyzéket a felhőregisztrációs adatbázis helyett prototípus- és tesztelési célokra használhatja.

  • Telepítse az Azure CLI-t.

  • Ha egy eszközön szeretné tesztelni a modult, legalább egy IoT Edge-eszközzel rendelkező aktív IoT Hubra van szüksége. IoT Edge-eszköz teszteléshez való létrehozásához létrehozhat egyet az Azure Portalon vagy a parancssori felülettel:

    • Az Azure Portalon történő létrehozás a leggyorsabb. Az Azure Portalon nyissa meg az IoT Hub-erőforrást. Válassza az Eszközök lehetőséget az Eszközkezelés menüben, majd válassza az Eszköz hozzáadása lehetőséget.

      Az eszköz létrehozásakor nevezze el az eszközt eszközazonosító használatával, jelölje be az IoT Edge-eszközt, majd válassza a Bal alsó részén található Mentés lehetőséget.

      Végül ellenőrizze, hogy az új eszköz létezik-e az IoT Hubon az Eszközfelügyeleti > eszközök menüből. Az IoT Edge-eszközök Azure Portalon történő létrehozásáról további információt az IoT Edge-eszköz létrehozása és kiépítése Linuxon szimmetrikus kulcsokkal című témakörben talál.

    • Ha IoT Edge-eszközt szeretne létrehozni a parancssori felülettel, kövesse a linuxos vagy windowsos gyorsútmutató lépéseit. Egy IoT Edge-eszköz regisztrálása során létrehoz egy IoT Edge-eszközt.

    Ha az IoT Edge démont futtatja a fejlesztői gépen, előfordulhat, hogy le kell állítania az EdgeHubot és az EdgeAgentet, mielőtt elkezdené a fejlesztést a Visual Studióban.

Azure IoT Edge-projekt létrehozása

A Visual Studio IoT Edge-projektsablonja létrehoz egy megoldást az IoT Edge-eszközökön való üzembe helyezéshez. Először létre kell hoznia egy Azure IoT Edge-megoldást. Ezután létrehoz egy modult ebben a megoldásban. Minden IoT Edge-megoldás több modult is tartalmazhat.

A megoldásban három projektet fogunk felépíteni. A fő modul, amely az EdgeAgentet és az EdgeHubot tartalmazza a hőmérséklet-érzékelő modul mellett. Ezután további két IoT Edge-modult vehet fel.

Fontos

A Visual Studio által létrehozott IoT Edge-projektstruktúra nem ugyanaz, mint a Visual Studio Code-ban.

Az Azure IoT Edge fejlesztői eszköz parancssori felülete jelenleg nem támogatja a Visual Studio-projekttípus létrehozását. A Visual Studio-projekt létrehozásához a Visual Studio IoT Edge-bővítményt kell használnia.

  1. Hozzon létre egy új projektet a Visual Studióban.

  2. Új projekt létrehozása esetén keresse meg az Azure IoT Edge-et. Válassza ki az IoT Edge-eszköz platformjának és architektúrájának megfelelő projektet, majd válassza a Tovább lehetőséget.

  3. Az új projekt konfigurálásához adja meg a projekt nevét, adja meg a helyet, és válassza a Létrehozás lehetőséget.

  4. A Modul hozzáadása területen válassza ki a fejleszteni kívánt modul típusát. Ha van egy meglévő modulja, amelyet hozzá szeretne adni az üzembe helyezéshez, válassza a Meglévő modul lehetőséget.

  5. A Modul neve mezőben adja meg a modul nevét. Válasszon egy egyedi nevet a tárolóregisztrációs adatbázisban.

  6. Az adattár URL-címében adja meg a modul képtárának nevét. A Visual Studio automatikusan feltölti a modul nevét a localhost:5000/<your modulnévvel>. Cserélje le a saját beállításjegyzék-adataira. Ha helyi Docker-beállításjegyzéket használ a teszteléshez, használja a localhostot . Ha az Azure Container Registryt használja, használja a bejelentkezési kiszolgálót a beállításjegyzék beállításai között. A bejelentkezési kiszolgáló úgy néz ki, mint a <beállításjegyzék neve.azurecr.io.> Csak a localhost:5000 sztringrészt cserélje le úgy, hogy a végeredmény úgy nézzen ki, mint <a beállításjegyzék neve.azurecr.io/<> your modul neve.>

  7. Válassza a Hozzáadás lehetőséget a modul projekthez való hozzáadásához.

    Képernyőkép az alkalmazás és a modul hozzáadásáról.

    Feljegyzés

    Ha már rendelkezik IoT Edge-projekttel, módosíthatja az adattár URL-címét a module.json fájl megnyitásával. Az adattár URL-címe a JSON-fájl adattártulajdonságában található.

Most már rendelkezik egy IoT Edge-projektel és egy IoT Edge-modullal a Visual Studio-megoldásban.

Projektstruktúra

A megoldásban két projektszintű mappa található, köztük egy fő projektmappa és egy modulmappa. Előfordulhat például, hogy rendelkezik egy AzureIotEdgeApp1 nevű fő projektmappával és egy IotEdgeModule1 nevű modulmappával. A fő projektmappa tartalmazza az üzembehelyezési jegyzékfájlt.

A modulprojekt mappája egy fájlt tartalmaz a modul kódjához Program.cs , vagy main.c a választott nyelvtől függően. Ez a mappa egy olyan fájlt module.json is tartalmaz, amely leírja a modul metaadatait. Az itt található különböző Docker-fájlok biztosítják a modul Windows vagy Linux tárolóként való létrehozásához szükséges információkat.

A projekt üzembehelyezési jegyzékfájlja

A szerkesztett üzembehelyezési jegyzék neve deployment.debug.template.json. Ez a fájl egy IoT Edge üzembehelyezési jegyzék sablonja, amely meghatározza az eszközön futó összes modult, valamint azt, hogy hogyan kommunikálnak egymással. Az üzembehelyezési jegyzékekkel kapcsolatos további információkért lásd : Modulok üzembe helyezése és útvonalak létrehozása.

Ha megnyitja ezt az üzembehelyezési sablont, láthatja, hogy a két futtatókörnyezeti modul, az edgeAgent és az edgeHub is megtalálható a Visual Studio-projektben létrehozott egyéni modullal együtt. A modul egy negyedik, SimulatedTemperatureSensor nevű modult is tartalmaz. Ez az alapértelmezett modul szimulált adatokat hoz létre, amelyekkel tesztelheti a modulokat, vagy törölheti őket, ha nem szükséges. A szimulált hőmérséklet-érzékelő működésének megtekintéséhez tekintse meg a SimulatedTemperatureSensor.csproj forráskódot.

Az IoT Edge futtatókörnyezet verziójának beállítása

Jelenleg a legújabb stabil futtatókörnyezeti verzió az 1.5. Frissítenie kell az IoT Edge futtatókörnyezet verzióját a legújabb stabil kiadásra, vagy az eszközök számára megcélzni kívánt verzióra.

  1. A Megoldáskezelő kattintson a jobb gombbal a fő projekt nevére, és válassza az IoT Edge-futtatókörnyezet verziójának beállítása lehetőséget.

    Képernyőkép az

  2. A legördülő menüben válassza ki az IoT Edge-eszközök futtató futtatókörnyezeti verzióját, majd kattintson az OK gombra a módosítások mentéséhez. Ha nem történt módosítás, a Kilépéshez válassza a Mégse lehetőséget.

    A bővítmény jelenleg nem tartalmaz kijelölést a legújabb futtatókörnyezeti verziókhoz. Ha 1.2-nél magasabb futtatókörnyezeti verziót szeretne beállítani, nyissa meg deployment.debug.template.json üzembehelyezési jegyzékfájlt. Módosítsa a futtatókörnyezet verzióját a rendszer futtatókörnyezeti moduljának lemezképeinek edgeAgent és edgeHub esetében. Ha például az IoT Edge-futtatókörnyezet 1.5-ös verzióját szeretné használni, módosítsa a következő sorokat az üzembehelyezési jegyzékfájlban:

    "systemModules": {
       "edgeAgent": {
        //...
          "image": "mcr.microsoft.com/azureiotedge-agent:1.5"
        //...
       "edgeHub": {
       //...
          "image": "mcr.microsoft.com/azureiotedge-hub:1.5",
       //...
    
  3. Ha módosította a verziót, a jobb gombbal a projekt nevére kattintva újragenerálja az üzembehelyezési jegyzékfájlt, és válassza az Üzembe helyezés létrehozása az IoT Edge-hez lehetőséget. Ez létrehoz egy üzembehelyezési jegyzékfájlt az üzembehelyezési sablon alapján, és megjelenik a Visual Studio-projekt konfigurációs mappájában.

  1. Nyissa meg deployment.debug.template.json üzembehelyezési jegyzékfájlt. Az üzembehelyezési jegyzék egy JSON-dokumentum, amely leírja a célzott IoT Edge-eszközön konfigurálni kívánt modulokat.

  2. Módosítsa a futtatókörnyezet verzióját a rendszer futtatókörnyezeti moduljának lemezképeinek edgeAgent és edgeHub esetében. Ha például az IoT Edge-futtatókörnyezet 1.5-ös verzióját szeretné használni, módosítsa a következő sorokat az üzembehelyezési jegyzékfájlban:

    "systemModules": {
        "edgeAgent": {
        //...
            "image": "mcr.microsoft.com/azureiotedge-agent:1.5",
        //...
        "edgeHub": {
        //...
            "image": "mcr.microsoft.com/azureiotedge-hub:1.5",
        //...
    

Modulinfrastruktúra és fejlesztési lehetőségek

Amikor új modult ad hozzá, az alapértelmezett kóddal rendelkezik, amely készen áll az eszközre való üzembe helyezésre, így kód érintése nélkül is megkezdheti a tesztelést. A modul kódja a modul mappájában található egy (C#) vagy main.c (C esetén) nevű Program.cs fájlban.

Az alapértelmezett megoldás úgy van létrehozva, hogy a SimulatedTemperatureSensor modul szimulált adatai a modulhoz lesznek irányítva, amely felveszi a bemenetet, majd elküldi azokat az IoT Hubnak.

Ha készen áll a modulsablon saját kóddal történő testreszabására, az Azure IoT Hub SDK-kkal olyan modulokat hozhat létre, amelyek kielégítik az IoT-megoldások, például a biztonság, az eszközkezelés és a megbízhatóság alapvető igényeit.

Hibakeresés a szimulátor használatával

Az Azure IoT EdgeHub Fejlesztői eszköz helyi fejlesztési és hibakeresési élményt nyújt. Az eszköz segít az IoT Edge-modulok IoT Edge-futtatókörnyezet nélküli indításában, így helyileg létrehozhat, fejleszthet, tesztelhet, futtathat és hibakeresést végezhet az IoT Edge-modulok és -megoldások között. Nem kell leküldnie a lemezképeket egy tárolóregisztrációs adatbázisba, és telepítenie kell őket egy eszközre tesztelés céljából.

További információ: Azure IoT EdgeHub Fejlesztői eszköz.

Az eszköz inicializálása a Visual Studióban:

  1. Kérje le az IoT Edge-eszköz (az IoT Hubban található) kapcsolati sztring az Azure Portalról vagy az Azure CLI-ből.

    Ha a parancssori felület használatával kéri le a kapcsolati sztring, használja ezt a parancsot, és cserélje le a "[device_id]" és a "[hub_name]" értéket a saját értékeire:

    az iot hub device-identity connection-string show --device-id [device_id] --hub-name [hub_name]
    
  2. A Visual Studio Eszközök menüjében válassza az Azure IoT Edge Tools>Setup IoT Edge-szimulátort.

  3. Illessze be a kapcsolati sztring, és válassza az OK gombot.

Feljegyzés

Ezeket a lépéseket csak egyszer kell végrehajtania a fejlesztői számítógépen, mivel az eredményeket automatikusan alkalmazza a rendszer az összes későbbi Azure IoT Edge-megoldásra. Ez az eljárás ismét követhető, ha másik kapcsolati sztring kell váltania.

Egyetlen modul létrehozása és hibakeresése

Általában minden modult tesztelni és hibakeresést végezni, mielőtt több modult tartalmazó teljes megoldásban futtatja. Az IoT Edge-szimulátor eszköz lehetővé teszi egyetlen modul külön-külön történő futtatását egy üzenetküldéshez az 53000-s porton keresztül.

  1. A Megoldáskezelő válassza ki és jelölje ki a modulprojekt mappát (például IotEdgeModule1). Állítsa be az egyéni modult indítási projektként. Válassza a Projektkészlet>kezdőprojektként lehetőséget a menüből.

  2. Nyomja le az F5 billentyűt, vagy a futtatási eszköztár gombra kattintva indítsa el az IoT Edge-szimulátort egyetlen modulhoz. Kezdetben 10–20 másodpercig is eltarthat.

    A modul futtatásának képernyőképe.

  3. Ha a modul inicializálása sikeresen megtörtént, meg kell jelennie egy .NET Core-konzolalkalmazás ablakának.

  4. Állítson be egy töréspontot a modul vizsgálatához.

    • Ha C#-ban fejleszt, állítson be töréspontot a függvényben a PipeMessage() ModuleBackgroundService.cs.
    • C használata esetén állítson be egy töréspontot a InputQueue1Callback() main.c függvényben.
  5. Tesztelje a modult egy üzenet küldésével. Egyetlen modul hibakeresésekor a szimulátor az alapértelmezett 53000-s porton figyeli az üzeneteket. Ha üzenetet szeretne küldeni a modulnak, futtassa a következő curl parancsot egy parancshéjból, például a Git Bashből vagy a WSL Bashből.

    curl --header "Content-Type: application/json" --request POST --data '{"inputName": "input1","data":"hello world"}' http://localhost:53000/api/v1/messages
    

    Ha az URL-címben nem egyező zárójel/zárójel hibát kap, próbálkozzon inkább a következő paranccsal:

    curl --header "Content-Type: application/json" --request POST --data "{\"inputName\": \"input1\", \"data\", \"hello world\"}"  http://localhost:53000/api/v1/messages
    

    Képernyőkép a kimeneti konzolról, a Visual Studio-projektről és a Bash-ablakról.

    A töréspontot aktiválni kell. A változókat a Visual Studio Helyiek ablakában tekintheti meg, amely a hibakereső futtatásakor található. Nyissa meg a Windows-helyiek>hibakeresését.>

    A Bashben vagy a rendszerhéjban meg kell jelennie egy megerősítésnek {"message":"accepted"} .

    A .NET-konzolon a következőt kell látnia:

    IoT Hub module client initialized.
    Received message: 1, Body: [hello world]
    

    Tipp.

    A PostMan vagy más API-eszközök használatával üzeneteket is küldhet ahelyettcurl, hogy .

  6. A hibakeresés leállításához nyomja le a Ctrl + F5 billentyűkombinációt, vagy válassza a leállítás gombot.

Több modul létrehozása és hibakeresése

Miután befejezte egy modul fejlesztését, érdemes lehet egy teljes megoldást futtatni és hibakeresést végezni több modullal. Az IoT Edge-szimulátor eszköz lehetővé teszi az üzembe helyezési jegyzékben definiált összes modul futtatását, beleértve egy szimulált edgeHubot az üzenetek útválasztásához. Ebben a példában két egyéni modult és a szimulált hőmérséklet-érzékelő modult futtatja. A szimulált hőmérséklet-érzékelő modul üzenetei minden egyéni modulhoz lesznek irányítva.

  1. A Megoldáskezelő adjon hozzá egy második modult a megoldáshoz a jobb gombbal a fő projektmappára kattintva. A menüben válassza az Új IoT Edge-modul hozzáadása>lehetőséget.

    Képernyőkép az

  2. Add module Az ablakban adjon nevet az új modulnak, és cserélje le az localhost:5000 adattár URL-címét az Azure Container Registry bejelentkezési kiszolgálójára, ahogy korábban is tette.

  3. Nyissa meg a fájlt deployment.debug.template.json , és ellenőrizze, hogy az új modul bekerült-e a modulok szakaszba. Egy új útvonal is bekerült az útvonalak szakaszba EdgeHub , hogy üzeneteket küldjön az új modulból az IoT Hubnak. Ha adatokat szeretne küldeni a szimulált hőmérséklet-érzékelőről az új modulba, adjon hozzá egy másik útvonalat a következő sortal JSON. Cserélje le <NewModuleName> (két helyen) a saját modulnevét.

    "sensorTo<NewModuleName>": "FROM /messages/modules/SimulatedTemperatureSensor/outputs/temperatureOutput INTO BrokeredEndpoint(\"/modules/<NewModuleName>/inputs/input1\")"
    
  4. Kattintson a jobb gombbal a fő projektre (például AzureIotEdgeApp1), és válassza a Set as StartUp Project (Indítási projekt) lehetőséget. Ha a fő projektet indítási projektként állítja be, a megoldás összes modulja fut. Ez magában foglalja a megoldáshoz hozzáadott mindkét modult, a szimulált hőmérséklet-érzékelő modult és a szimulált Edge-központot.

  5. Nyomja le az F5 billentyűt, vagy válassza a futtatási eszköztár gombot a megoldás futtatásához. Kezdetben 10–20 másodpercig is eltarthat. Győződjön meg arról, hogy nincsenek olyan Docker-tárolók, amelyek köthetik a projekthez szükséges portot.

  6. Minden modulhoz két .NET Core-konzolalkalmazásnak kell megjelennie.

  7. Állítson be egy töréspontot a modulok vizsgálatához.

    • Ha C#-ban fejleszt, állítson be töréspontot a függvényben a PipeMessage() ModuleBackgroundService.cs.
    • C használata esetén állítson be egy töréspontot a InputQueue1Callback() main.c függvényben.
  8. Hozzon létre töréspontokat az egyes modulokban, majd nyomja le az F5 billentyűt több modul egyidejű futtatásához és hibakereséséhez. Több .NET Core-konzolalkalmazás ablakának kell megjelennie, amelyek mindegyik ablaka egy másik modult jelöl.

    Képernyőkép a Visual Studióról két kimeneti konzollal.

  9. A hibakeresés leállításához nyomja le a Ctrl + F5 billentyűkombinációt, vagy válassza a leállítás gombot.

Rendszerképek létrehozása és leküldése a beállításjegyzékbe

A modul fejlesztése és hibakeresése után létrehozhatja és leküldheti a modul rendszerképét az Azure Container Registrybe. Ezután üzembe helyezheti a modult az IoT Edge-eszközön.

  1. A fő IoT Edge-projektet állítsa be indítási projektként, nem pedig az egyes modulok egyikét.

  2. Válassza a Hibakeresés vagy a Kiadás lehetőséget a modulképek összeállításához szükséges konfigurációként.

    Feljegyzés

    A Hibakeresés kiválasztásakor a Visual Studio Docker-rendszerképeket készítDockerfile.(amd64|windows-amd64).debug. Ez magában foglalja a .NET Core parancssori hibakereső VSDBG-t a tárolórendszerképben az összeállítás során. Az éles üzemre kész IoT Edge-modulok esetében javasoljuk, hogy a VSDBG nélkül használt Dockerfile.(amd64|windows-amd64) kiadási konfigurációt használja.

  3. Ha olyan privát beállításjegyzéket használ, mint az Azure Container Registry (ACR), a következő Docker-paranccsal jelentkezzen be. A felhasználónevet és a jelszót a beállításjegyzék Hozzáférési kulcsok lapján szerezheti be az Azure Portalon.

    docker login <ACR login server>
    
  4. Adja hozzá az Azure Container Registry bejelentkezési adatait a fájlban deployment.debug.template.jsontalálható futtatókörnyezeti beállításokhoz. Ezt kétféleképpen teheti meg. Hozzáadhatja a beállításjegyzék hitelesítő adatait a .env fájlhoz (a legbiztonságosabb), vagy felveheti őket közvetlenül a deployment.debug.template.json fájlba.

    Hitelesítő adatok hozzáadása a .env fájlhoz:

    A Megoldáskezelő válassza az Összes fájl megjelenítése eszköztárat. Megjelenik a .env fájl. Adja hozzá az Azure Container Registry-felhasználónevét és jelszavát a .env fájlhoz. Ezek a hitelesítő adatok az Azure Container Registry Hozzáférési kulcsok lapján találhatók az Azure Portalon.

    Képernyőkép a Megoldáskezelő összes fájlját megjelenítő gombról.

        DEFAULT_RT_IMAGE=1.2
        CONTAINER_REGISTRY_USERNAME_myregistry=<my-registry-name>
        CONTAINER_REGISTRY_PASSWORD_myregistry=<my-registry-password>
    

    Hitelesítő adatok hozzáadása közvetlenül a deployment.debug.template.json

    Ha inkább közvetlenül az üzembehelyezési sablonhoz szeretné hozzáadni a hitelesítő adatait, cserélje le a helyőrzőket az ACR-rendszergazdai felhasználónévre, jelszóra és beállításjegyzék-névre.

          "settings": {
            "minDockerVersion": "v1.25",
            "loggingOptions": "",
            "registryCredentials": {
              "registry1": {
                "username": "<username>",
                "password": "<password>",
                "address": "<registry name>.azurecr.io"
              }
            }
          }
    

    Feljegyzés

    Ez a cikk rendszergazdai bejelentkezési hitelesítő adatokat használ az Azure Container Registryhez, amelyek fejlesztési és tesztelési forgatókönyvek esetén kényelmesek. Ha készen áll az éles helyzetekre, javasoljuk a minimális jogosultságú hitelesítési lehetőséget, például a szolgáltatásnevek használatát. További információ: A tárolóregisztrációs adatbázishoz való hozzáférés kezelése.

  5. Ha helyi beállításjegyzéket használ, futtathat egy helyi beállításjegyzéket.

  6. Végül a Megoldáskezelő kattintson a jobb gombbal a fő projektmappára, és válassza a Build and Push IoT Edge Modules (IoT Edge-modulok létrehozása és leküldése) lehetőséget az egyes modulok Docker-rendszerképének létrehozásához és leküldéséhez. Ez eltarthat egy percig. Amikor megjelenik Finished Build and Push IoT Edge Modules. a Visual Studio kimeneti konzolján, akkor elkészült.

A megoldás üzembe helyezése

Most, hogy elkészítette és leküldte a modulrendszerképeket az Azure Container Registrybe, üzembe helyezheti a megoldást az IoT Edge-eszközön. Már rendelkezik egy üzembehelyezési jegyzéksablonnal, amelyet az oktatóanyag során megfigyelt. Hozzunk létre egy üzembehelyezési jegyzékfájlt, majd egy Azure CLI-paranccsal helyezzük üzembe a modulokat az IoT Edge-eszközön az Azure-ban.

  1. Kattintson a jobb gombbal a Visual Studio Megoldáskezelő fő projektjére, és válassza az Üzembe helyezés létrehozása az IoT Edge-hez lehetőséget.

    Képernyőkép az

  2. Nyissa meg a helyi Visual Studio fő projektmappáját, és keresse meg a config mappát. A fájl elérési útja a következőhöz hasonló lehet: C:\Users\<YOUR-USER-NAME>\source\repos\<YOUR-IOT-EDGE-PROJECT-NAME>\config. Itt találja a létrehozott üzembehelyezési jegyzékfájlt, például deployment.amd64.debug.json.

  3. Ellenőrizze a deployment.amd64.debug.json fájlt, hogy a edgeHub sémaverzió 1.2-esre van-e állítva.

     "$edgeHub": {
         "properties.desired": {
           "schemaVersion": "1.2",
           "routes": {
             "IotEdgeModule2022ToIoTHub": "FROM /messages/modules/IotEdgeModule2022/outputs/* INTO $upstream",
             "sensorToIotEdgeModule2022": "FROM /messages/modules/SimulatedTemperatureSensor/outputs/temperatureOutput INTO BrokeredEndpoint(\"/modules/IotEdgeModule2022/inputs/input1\")",
             "IotEdgeModule2022bToIoTHub": "FROM /messages/modules/IotEdgeModule2022b/outputs/* INTO $upstream"
           },
           "storeAndForwardConfiguration": {
             "timeToLiveSecs": 7200
           }
         }
       }
    

    Tipp.

    A Visual Studio 2022 üzembehelyezési sablonjának 1.2-es sémaverzióra van szüksége. Ha 1.1-nek vagy 1.0-nak kell lennie, várjon, amíg az üzembe helyezés létrejön (ne módosítsa azt).deployment.debug.template.json Az üzembe helyezés létrehozása alapértelmezés szerint létrehoz egy 1.2-s sémát. Szükség esetén azonban manuálisan is módosíthatja deployment.amd64.debug.jsona létrehozott jegyzékfájlt, mielőtt üzembe helyezené az Azure-ban.

    Fontos

    Az IoT Edge-eszköz üzembe helyezése után jelenleg nem jelenik meg megfelelően az Azure Portalon az 1.2-es sémaverzióval (az 1.1-es verzió megfelelő lesz). Ez egy ismert hiba, és hamarosan kijavítjuk. Ez azonban nem érinti az eszközt, mivel továbbra is ioT Hubon csatlakozik, és az Azure CLI használatával bármikor kommunikálhat vele.

    Képernyőkép az Azure Portal IoT Edge-eszközoldalán megjelenő hibájáról.

  4. Most helyezzük üzembe a jegyzékünket egy Azure CLI-paranccsal. Nyissa meg a Visual Studio fejlesztői parancssorát , és váltson a konfigurációs könyvtárra.

        cd config
    
  5. Helyezze üzembe az IoT Edge-eszköz jegyzékfájlját az IoT Hubon. A parancs konfigurálja az eszközt a megoldásban kifejlesztett modulok használatára. Az üzembehelyezési jegyzék az előző lépésben lett létrehozva, és a konfigurációs mappában lett tárolva. A konfigurációs mappában hajtsa végre a következő üzembe helyezési parancsot. Cserélje le a [device id], [hub name]és [file path] az értékeket. Ha az IoT Edge-eszközazonosító nem létezik az IoT Hubban, létre kell hozni.

        az iot edge set-modules --device-id [device id] --hub-name [hub name] --content [file path]
    

    A parancs például így nézhet ki:

    az iot edge set-modules --device-id my-device-name --hub-name my-iot-hub-name --content deployment.amd64.debug.json
    
  6. A parancs futtatása után a parancssorban JSON megjelenik az üzembe helyezés megerősítése.

Build modul Docker-rendszerképe

Miután kifejlesztette a modult, létrehozhatja a modul rendszerképét egy tárolóregisztrációs adatbázisban az IoT Edge-eszközön való üzembe helyezéshez.

A modul Docker-rendszerképének létrehozásához használja a modul Docker-fájlját.

docker build --rm -f "<DockerFilePath>" -t <ImageNameAndTag> "<ContextPath>" 

Tegyük fel például, hogy a parancshéj a projektkönyvtárban van, a modul neve pedig IotEdgeModule1. A helyi beállításjegyzék vagy egy Azure-tárolóregisztrációs adatbázis rendszerképének létrehozásához használja az alábbi parancsokat:

# Build the image for the local registry

docker build --rm -f "./IotEdgeModule1/Dockerfile.amd64.debug" -t localhost:5000/iotedgemodule1:0.0.1-amd64 "./IotEdgeModule1"

# Or build the image for an Azure Container Registry

docker build --rm -f "./IotEdgeModule1/Dockerfile.amd64.debug" -t myacr.azurecr.io/iotedgemodule1:0.0.1-amd64 "./IotEdgeModule1"

Leküldéses modul Docker-rendszerképe

Küldje el a modul rendszerképét a helyi beállításjegyzékbe vagy egy tárolóregisztrációs adatbázisba.

docker push <ImageName>

Példa:

# Push the Docker image to the local registry

docker push localhost:5000/iotedgemodule1:0.0.1-amd64

# Or push the Docker image to an Azure Container Registry
az acr login --name myacr
docker push myacr.azurecr.io/iotedgemodule1:0.0.1-amd64

Telepítse a modult az IoT Edge-eszközön.

A Visual Studióban nyissa meg deployment.debug.template.json központi telepítési jegyzékfájlt a fő projektben. Az üzembehelyezési jegyzék egy JSON-dokumentum, amely leírja a célzott IoT Edge-eszközön konfigurálni kívánt modulokat. Az üzembe helyezés előtt frissítenie kell az Azure Container Registry hitelesítő adatait, a modul lemezképeit és a megfelelő createOptions értékeket. A createOption-értékekkel kapcsolatos további információkért tekintse meg az IoT Edge-modulok tároló-létrehozási beállításainak konfigurálását ismertető témakört.

  1. Ha egy Azure Container Registryt használ a modul lemezképének tárolásához, a hitelesítő adatokat hozzá kell adnia deployment.debug.template.json az edgeAgent beállításaiban. Például:

    "modulesContent": {
    "$edgeAgent": {
      "properties.desired": {
        "schemaVersion": "1.1",
        "runtime": {
          "type": "docker",
          "settings": {
            "minDockerVersion": "v1.25",
            "loggingOptions": "",
            "registryCredentials": {
              "myacr": {
                "username": "myacr",
                "password": "<your_acr_password>",
                "address": "myacr.azurecr.io"
              }
            }
          }
        },
    //...
    
  2. Cserélje le a rendszerképtulajdonság értékét a regisztrációs adatbázisba leküldött modulkép nevére. Ha például egy IotEdgeModule1 egyéni modulhoz címkézett myacr.azurecr.io/iotedgemodule1:0.0.1-amd64 képet küld, cserélje le a képtulajdonság értékét a címkeértékre.

  3. Adja hozzá vagy cserélje le a createOptions értéket sztringezett tartalommal az üzembehelyezési sablon minden egyes rendszeréhez és egyéni moduljaihoz.

    Az IotEdgeModule1 rendszerképe és a createOptions beállításai például az alábbihoz hasonlóak lehetnek:

    "IotEdgeModule1": {
    "version": "1.0.0",
    "type": "docker",
    "status": "running",
    "restartPolicy": "always",
    "settings": {
        "image": "myacr.azurecr.io/iotedgemodule1:0.0.1-amd64",
        "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}],\"443/tcp\":[{\"HostPort\":\"443\"}]}}}"
    }
    

Az IoT Edge Azure CLI set-modules parancsával üzembe helyezheti a modulokat az Azure IoT Hubon. Ha például a deployment.debug.amd64.json fájlban definiált modulokat az IoT Hub my-iot-hubra szeretné telepíteni az eszközöm IoT Edge-eszközéhez, használja a következő parancsot:

az iot edge set-modules --hub-name my-iot-hub --device-id my-device --content ./deployment.debug.template.json --login "HostName=my-iot-hub.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=<SharedAccessKey>"

Tipp.

Az IoT Hub kapcsolati sztring az Azure Portalon, az Azure IoT Hub >biztonsági beállításainak>megosztott hozzáférési szabályzatai között találja.

Az eszköz üzembe helyezésének megerősítése

Annak ellenőrzéséhez, hogy az IoT Edge-modulok üzembe lettek-e helyezve az Azure-ban, jelentkezzen be az eszközére (vagy virtuális gépére), például az SSH-val vagy az Azure Bastion használatával, és futtassa az IoT Edge listaparancsot.

   iotedge list

Látnia kell az eszközön vagy a virtuális gépen futó modulok listáját.

   NAME                        STATUS           DESCRIPTION      CONFIG
   SimulatedTemperatureSensor  running          Up a minute      mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:1.0
   edgeAgent                   running          Up a minute      mcr.microsoft.com/azureiotedge-agent:1.2
   edgeHub                     running          Up a minute      mcr.microsoft.com/azureiotedge-hub:1.2
   IotEdgeModule1              running          Up a minute      myacr.azurecr.io/iotedgemodule1:0.0.1-amd64.debug
   myIotEdgeModule2            running          Up a minute      myacr.azurecr.io/myiotedgemodule2:0.0.1-amd64.debug

Hibakeresés a Docker Távoli SSH használatával

A Docker és a Moby motorjai támogatják a tárolókhoz való SSH-kapcsolatokat, amelyek lehetővé teszik a kód csatolását és hibakeresését távoli eszközön a Visual Studióval.

  1. Csatlakozás Távolról a Dockerbe gyökérszintű jogosultságokat igényel. A Docker nem gyökérfelhasználóként való kezelésének lépéseit követve engedélyezheti a kapcsolatot a Docker démonával a távoli eszközön. Ha végzett a hibakereséssel, érdemes lehet eltávolítania a felhasználót a Docker-csoportból.

  2. Kövesse az alábbi lépéseket, hogy a Visual Studio segítségével csatoljon egy docker-tárolón futó folyamathoz a távoli eszközön.

  3. A Visual Studióban állítson be töréspontokat az egyéni modulban.

  4. Töréspont elérésekor megvizsgálhatja a változókat, végiglépkedhet a kódon, és hibakeresést végezhet a modulban.

    Képernyőkép a Távoli Docker-tárolóhoz csatolt Visual Studióról egy törésponton szüneteltetett eszközön.

Következő lépések