Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőre vonatkozik:
IoT Edge 1.5
Fontos
Az IoT Edge 1.5 LTS a támogatott kiadás. Az IoT Edge 1.4 LTS 2024. november 12-én megszűnik. Ha egy korábbi kiadásban dolgozik, tekintse meg az IoT Edge frissítését.
Ez az oktatóanyag végigvezeti a saját kód fejlesztésén, hibakeresésén és üzembe helyezésén egy Azure IoT Edge-eszközön a Windowson és a Visual Studio 2022-n futó Linux IoT Edge használatával. Megismerheti az IoT Edge-megoldások leggyakoribb fejlesztői forgatókönyvét egy C#-modul Linux-eszközön való üzembe helyezésével. Egy Windowson futó Linux-tárolóban futó egyéni IoT Edge-modult fog üzembe helyezni és hibakeresésre használni. Ez az oktatóanyag akkor is hasznos, ha egy másik nyelvet szeretne használni, vagy üzembe helyez egy Azure-szolgáltatást, ez az oktatóanyag továbbra is hasznos a fejlesztési eszközök és fogalmak megismeréséhez.
Ez az oktatóanyag két IoT Edge-fejlesztési eszköz lépéseit tartalmazza:
- Az Azure IoT Edge fejlesztői eszköz parancssori felülete (CLI), amely a fejlesztés előnyben részesített eszköze
- A Visual Studio Azure IoT Edge Tools bővítménye, amely karbantartási módban van
Az oktatóanyag elején található választógombbal válassza ki az eszköz verzióját.
Ebben az oktatóanyagban az alábbiakkal fog megismerkedni:
- Állítsa be a fejlesztőgépet.
- Új projekt létrehozásához használja az IoT Edge fejlesztői eszközeit.
- Hozza létre a projektet tárolóként, és tárolja egy Azure Container Registryben.
- Telepítse a kódot egy IoT Edge-eszközön.
Előfeltételek
Ez az oktatóanyag feltételezi, hogy egy Windows rendszert futtató gépet használ fejlesztési gépként. Windows rendszerű számítógépeken Windows- vagy Linux-modulokat is fejleszthet. Ez az oktatóanyag végigvezeti önt a Linux-tárolók fejlesztésén, az IoT Edge Linuxhoz Windows rendszeren használatával a modulok elkészítéséhez és telepítéséhez.
Előkészületek:
Telepítse a Linuxhoz készült IoT Edge-et Windows rendszeren.
Olvassa el az első IoT Edge-modul Üzembe helyezése Windows-eszközön című rövid útmutatót.
Töltse le a .NET Core SDK-t.
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 .
Miután elkészült a Visual Studio 2022 telepítése, 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 az Azure IoT Edge fejlesztői eszköz parancssori felülete. A bővítmény tartalmazza a Visual Studio-projekt létrehozásához használt Azure IoT Edge-projektsablonokat. Jelenleg a bővítményt a használt fejlesztőeszköztől függetlenül telepítenie kell.
Tipp.
Ha Visual Studio 2019-et használ, töltse le és telepítse az Azure IoT Edge Tools for Visual Studio 2019-et a Visual Studio Marketplace-ről.
- Telepítse az Azure CLI-t.
- Hozzon létre egy ingyenes vagy standard szintű IoT Hubot az Azure-ban felhőerőforrásként.
Ha még nem rendelkezik Azure-fiókkal, első lépésként hozzon létre egy ingyenes fiókot.
Fő fogalmak
Ez az oktatóanyag egy IoT Edge-modul fejlesztését mutatja be. Az IoT Edge-modul végrehajtható kóddal rendelkező tároló. Egy vagy több modult üzembe helyezhet egy IoT Edge-eszközön. A modulok olyan konkrét feladatokat végeznek, mint például az adatok betöltése érzékelőkből, adatok tisztítása és elemzése, vagy üzenetek küldése egy IoT Hubba. További információ: Az Azure IoT Edge-modulok ismertetése.
Az IoT Edge-modulok fejlesztésekor fontos megérteni a fejlesztőgép és a cél IoT Edge-eszköz közötti különbséget, amelyben a modul végül üzembe lesz helyezve. A modulkód tárolására készített tárolónak meg kell egyeznie a céleszköz operációs rendszerével (OS).
A leggyakoribb forgatókönyv például az, hogy valaki egy modult fejleszt egy Windows-számítógépen, aki egy IoT Edge-et futtató Linux-eszközt kíván megcélozza. Ebben az esetben a tároló operációs rendszere Linux.
Az oktatóanyag során vegye figyelembe a fejlesztőgép operációs rendszere és a tároló operációs rendszere közötti különbséget. Ebben az oktatóanyagban a Windows-gazdagépet fogja használni a fejlesztéshez, a Linuxhoz készült IoT Edge-et pedig Windows rendszerű virtuális gépen (VM) a modulok létrehozásához és üzembe helyezéséhez.
Ez az oktatóanyag az IoT Edge-et Linux-tárolókkal futtató eszközöket célozza meg. Az előnyben részesített operációs rendszert mindaddig használhatja, amíg a fejlesztőgép Linux-tárolókat futtat. Azt javasoljuk, hogy a Visual Studio használatával dolgozzon Linux-tárolókkal, ezért ezt használja ez az oktatóanyag. Használhatja a Visual Studio Code-ot is, bár a két eszköz között különbségek vannak a támogatásban. További információ: Azure IoT Edge-modulok fejlesztése a Visual Studio Code használatával.
A Docker CLI és a Docker motor beállítása távoli kapcsolathoz
Az IoT Edge-modulok tárolókként vannak csomagolva, ezért a fejlesztési gépen tárolómotorra van szükség az összeállításukhoz és kezeléséhez.
A Windows rendszerű virtuális gépen futó Linux IoT Edge már tartalmazza a Docker-motor egy példányát. Ez az oktatóanyag bemutatja, hogyan csatlakozhat távolról a Windows fejlesztői gépről a Linux IoT Edge-hez Windows VM Docker-példányon. Ezzel a távoli kapcsolattal eltávolíthatja a WindowsHoz készült Docker Desktop függőségét.
A Docker parancssori felületének konfigurálása
Első lépésként konfigurálja a Docker parancssori felületét a Windows fejlesztői gépen, hogy csatlakozni tudjon a távoli Docker-motorhoz:
Töltse le a Docker CLI előre összeállított
docker.exeverzióját a Chocolateyból. A gitHubról is letöltheti a hivatalos cli-projektet, és lefordíthatja az adattár utasításait követve.Bontsa ki
docker.exea fejlesztői gép egyik könyvtárába,C:\Docker\binpéldául.Nyissa meg A számítógépéről>Rendszerinformációt>Speciális rendszerbeállításokat.
Válassza a Speciális>környezeti változók lehetőséget. A Felhasználói változók csoportban válassza az Elérési út lehetőséget.
Módosítsa az Elérési út változót, és adja hozzá a
docker.exehelyét.Nyisson meg egy emelt szintű PowerShell-munkamenetet.
Ellenőrizze, hogy a Docker parancssori felülete elérhető-e a következő paranccsal:
docker --versionHa mindent sikeresen konfigurált, a parancs kimenetének meg kell jelennie a Docker-verziónak. Úgy kell kinéznie, mint
Docker version 20.10.12, build e91ed57.
A Docker-motor konfigurálása
A második lépés a Linuxhoz készült IoT Edge konfigurálása Windows VM Docker-motoron a külső kapcsolatok elfogadásához és a megfelelő tűzfalszabályok hozzáadásához.
Figyelmeztetés
Ha a Docker-motort külső kapcsolatoknak teszi ki, az növelheti a biztonsági kockázatokat. Ezt a konfigurációt csak fejlesztési célokra érdemes használni. A fejlesztés befejezése után mindenképpen állítsa vissza a konfigurációt az alapértelmezett beállításokra.
Nyisson meg egy emelt szintű PowerShell-munkamenetet, és futtassa a következő parancsokat:
# Configure the IoT Edge for Linux on Windows VM Docker engine to accept external connections, and add the appropriate firewall rules. Invoke-EflowVmCommand "sudo iptables -A INPUT -p tcp --dport 2375 -j ACCEPT" # Create a copy of the IoT Edge for Linux on Windows VM _docker.service_ in the system folder. Invoke-EflowVmCommand "sudo cp /lib/systemd/system/docker.service /etc/systemd/system/docker.service" # Replace the service execution line to listen for external connections. Invoke-EflowVmCommand "sudo sed -i 's/-H fd:\/\// -H fd:\/\/ -H tcp:\/\/0.0.0.0:2375/g' /etc/systemd/system/docker.service" # Reload the IoT Edge for Linux on Windows VM services configurations. Invoke-EflowVmCommand "sudo systemctl daemon-reload" # Reload the Docker engine service. Invoke-EflowVmCommand "sudo systemctl restart docker.service" # Check that the Docker engine is listening to external connections. Invoke-EflowVmCommand "sudo netstat -lntp | grep dockerd"Íme egy példakimenet:
PS C:\> # Configure the IoT Edge for Linux on Windows virtual machine Docker engine to accept external connections, and add the appropriate firewall rules. PS C:\> Invoke-EflowVmCommand "sudo iptables -A INPUT -p tcp --dport 2375 -j ACCEPT" PS C:\> PS C:\> # Create a copy of the IoT Edge for Linux on Windows VM docker.service in the system folder. PS C:\> Invoke-EflowVmCommand "sudo cp /lib/systemd/system/docker.service /etc/systemd/system/docker.service" PS C:\> PS C:\> # Replace the service execution line to listen for external connections. PS C:\> Invoke-EflowVmCommand "sudo sed -i 's/-H fd:\/\// -H fd:\/\/ -H tcp:\/\/0.0.0.0:2375/g' /etc/systemd/system/docker.service" PS C:\> PS C:\> # Reload the IoT Edge for Linux on Windows VM services configurations. PS C:\> Invoke-EflowVmCommand "sudo systemctl daemon-reload" PS C:\> PS C:\> # Reload the Docker engine service. PS C:\> Invoke-EflowVmCommand "sudo systemctl restart docker.service" PS C:\> PS C:\> # Check that the Docker engine is listening to external connections. PS C:\> Invoke-EflowVmCommand "sudo netstat -lntp | grep dockerd" tcp6 0 0 :::2375 :::* LISTEN 2790/dockerd
A kapcsolat tesztelése
Az utolsó beállítási lépés a Docker-kapcsolat tesztelése a Linuxhoz készült IoT Edge-hez Windows VM Docker-motoron:
Szerezze be a Linuxhoz készült IoT Edge IP-címét Windows rendszerű virtuális gépen:
Get-EflowVmAddrTipp.
Ha a Windows rendszerű virtuális gépen futó Linux IoT Edge statikus IP-cím nélkül lett üzembe helyezve, az IP-cím megváltozhat a Windows gazdagép operációs rendszerének újraindítása vagy hálózati változásai között. Minden alkalommal, amikor távoli kapcsolatot szeretne létesíteni a Docker-motorral, győződjön meg arról, hogy a Megfelelő IP-címet használja a Linuxhoz készült IoT Edge-hez Windows rendszerű virtuális gépen.
Íme egy példakimenet:
PS C:\> Get-EflowVmAddr [03/15/2022 15:22:30] Querying IP and MAC addresses from virtual machine (DESKTOP-J1842A1-EFLOW) - Virtual machine MAC: 00:15:5d:6f:da:78 - Virtual machine IP : 172.31.24.105 retrieved directly from virtual machine 00:15:5d:6f:da:78 172.31.24.105Csatlakozzon a Linuxhoz készült IoT Edge-hez Windows VM Docker-motoron, és futtassa a mintatárolót
hello-world. Cserélje le<EFLOW-VM-IP>a Linuxhoz készült IoT Edge-et az előző lépésben beszerzett Windows rendszerű virtuális gépek IP-címére.docker -H tcp://<EFLOW-VM-IP>:2375 run --rm hello-worldAmikor a tároló letöltése befejeződött, a tároló a következő kimenetet állítja elő:
PS C:\> docker -H tcp://172.31.24.105:2375 run --rm hello-world Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 2db29710123e: Pull complete Digest: sha256:4c5f3db4f8a54eb1e017c385f683a2de6e06f75be442dc32698c9bbe6c861edd Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (amd64) 3. The Docker daemon created a new container from that image which runs the executable that produces the output you're currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal. To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker ID: https://hub.docker.com/ For more examples and ideas, visit: https://docs.docker.com/get-started/
Azure IoT Edge-projekt létrehozása
A Visual Studio IoT Edge-projektsablonja létrehoz egy megoldást, amelyet üzembe helyezhet az IoT Edge-eszközökön. Az alábbi lépésekkel hozzon létre egy Azure IoT Edge-megoldást, majd hozza létre az első modult a megoldásban. Minden IoT Edge-megoldás több modult is tartalmazhat.
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 az Azure IoT Edge Tools bővítményt kell használnia.
A Visual Studióban hozzon létre egy új projektet úgy, hogy a kezdőlapon az Új projekt létrehozása lehetőséget választja, vagy az eszköztár Új projekt gombját választja.
Az Új projekt létrehozása lapon keresse meg az Azure IoT Edge-et. Válassza ki az IoT Edge-eszköz platformjának (Linux IoT Edge-modul) és architektúrájának megfelelő projektet, majd válassza a Tovább lehetőséget.
Az új projekt konfigurálása lapon adja meg a projekt nevét, és adja meg a helyet, majd válassza a Létrehozás lehetőséget.
A Modul hozzáadása párbeszédpanelen válassza ki a fejleszteni kívánt modul típusát. A Meglévő modul kiválasztásával egy meglévő IoT Edge-modult is hozzáadhat az üzembe helyezéshez.
A Modul neve mezőben adja meg a modul nevét.
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ó formátum: <beállításjegyzék neve>.azurecr.io. Cserélje le csak a localhost:5000 sztringrészt, hogy a végeredmény úgy nézzen ki, mint <a registry name>.azurecr.io/<a modul neve>.
Válassza a Hozzáadás lehetőséget a modul projekthez való hozzáadásához.
Feljegyzés
Ha már rendelkezik IoT Edge-projekttel, a fájl megnyitásával módosíthatja az
module.jsonadattár URL-címét. Az adattár URL-címe arepositoryJSON-fájl tulajdonsá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ás két projektszintű mappával rendelkezik: egy fő projektmappával és egy modulmappával. Előfordulhat például, hogy rendelkezik egy fő projektmappával AzureIotEdgeApp1 és egy modulmappával.IotEdgeModule1
A fő projektmappa tartalmazza az ü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.
A modulmappa tartalmaz egy fájlt a modul kódjához. A név vagy a választott nyelvtől függően van elnevezve Program.csmain.c. Ez a mappa egy olyan fájlt module.json is tartalmaz, amely leírja a modul metaadatait. A 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-telepítési jegyzék sablonja, amely meghatározza az eszközön futó összes modult. A fájl azt is meghatározza, hogy a modulok 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.
Az üzembehelyezési sablon a következőket tartalmazza:
- A két futtatókörnyezeti modul és
edgeAgentedgeHub. - A Visual Studio-projektben létrehozott egyéni modul.
- Egy .
SimulatedTemperatureSensorEz az alapértelmezett modul szimulált adatokat hoz létre, amelyekkel tesztelheti a modulokat (vagy törölheti, 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ítse az IoT Edge futtatókörnyezeti verzióját a legújabb stabil kiadásra vagy az eszközökre megcélzni kívánt verzióra:
A Megoldáskezelőben 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.
A legördülő menüben válassza ki az IoT Edge-eszközök futtató futtatókörnyezeti verzióját. Ezután kattintson az OK gombra a módosítások mentéséhez. Ha nem végzett módosításokat, kattintson a Mégse gombra.
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 az
deployment.debug.template.jsonüzembe helyezési jegyzékfájlt. Módosítsa a futtatókörnyezet verzióját a rendszer futtatókörnyezeti modul lemezképeinekedgeAgentésedgeHub. 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", //...Ha módosította a verziót, a jobb gombbal a projekt nevére kattintva és az IoT Edge-hez készült üzembe helyezés létrehozása lehetőség kiválasztásával hozza létre újra az üzembe helyezési jegyzékfájlt. Ez a lépés létrehoz egy üzembehelyezési jegyzékfájlt az üzembehelyezési sablon alapján. A jegyzék a Visual Studio-projekt mappájában
configjelenik meg.
Nyissa meg az
deployment.debug.template.jsonüzembehelyezési jegyzékfájlt.Módosítsa a futtatókörnyezet verzióját a rendszer futtatókörnyezeti modul lemezképeinek
edgeAgentésedgeHub. 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", //...
A Visual Studio 2022 távoli Docker-motorpéldány beállítása
Konfigurálja az Azure IoT Edge Tools bővítményt a Linuxhoz készült IoT Edge-en futó távoli Docker-motor használatára Windows rendszerű virtuális gépen:
Válassza az Eszközök>Azure IoT Edge eszközöket>IoT Edge eszközök beállításait.
Cserélje le a DOCKER_HOST localhost értéket a Windows rendszerű virtuális gépen futó Linux IoT Edge IP-címére. Ha nem emlékszik az IP-címre, a Windows PowerShell-parancsmagon
Get-EflowVmAddra Linuxhoz készült IoT Edge használatával szerezheti be. Például, ha az IoT Edge for Linux on Windows virtuális gép IP-címe 172.20.1.100, az új értéknek tcp://172.20.1.100:2375 kell lennie.
Válassza az OK gombot.
A modul fejlesztése
Amikor új modult ad hozzá, az alapértelmezett kóddal rendelkezik, amely készen áll az eszközre való használatra és üzembe helyezésre, hogy kód érintése nélkül megkezdhesse a tesztelést. A modul kódja a modul mappájában található egy (C#) vagy Program.cs (C esetén) nevű main.c fájlban.
Az alapértelmezett megoldásban a modul szimulált adatai a SimulatedTemperatureSensor modulhoz lesznek irányítva. A modul felveszi a bemenetet, majd elküldi az Azure IoT Hubnak.
Ha készen áll a modulsablon saját kóddal való testreszabására, az Azure IoT Hub SDK-kkal további modulokat hozhat létre, amelyek kielégítik az IoT-megoldások kulcsigényét. Ezek az igények magukban foglalhatják a biztonságot, az eszközkezelést és a megbízhatóságot.
Egyetlen modul létrehozása és leküldése
Általában minden modult tesztelni és hibakeresést végezni, mielőtt több modult tartalmazó teljes megoldásban futtatja. Mivel a megoldás windowsos virtuális gépen az IoT Edge for Linux rendszeren futó Docker-motor használatával fog létrehozni vagy hibakeresést végezni, az első lépés a modul létrehozása és közzététele a távoli hibakeresés engedélyezéséhez:
A Megoldáskezelőben válassza ki a modul projektmappáját (például
myIotEdgeModule).Állítsa be az egyéni modult indítási projektként. A menüben válassza a Projekt>Beállítás kezdőprojektként.
A C# Linux modul hibakereséséhez frissítenie kell a fájlt az
Dockerfile.amd64.debugSSH szolgáltatás engedélyezéséhez. Frissítse a fájlt aDockerfile.amd64.debugkövetkező sablon használatára: Dockerfile for Azure IoT Edge AMD64 C# modul távoli hibakeresési támogatással.Feljegyzés
Ha a Hibakeresés lehetőséget választja, a Visual Studio Docker-rendszerképek készítésére használja
Dockerfile.(amd64|windows-amd64).debug. Ez a fájl tartalmazza 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áltDockerfile.(amd64|windows-amd64)konfigurációt használja.Győződjön meg arról,
ENTRYPOINT ["dotnet", "IotEdgeModule1.dll"]hogy a sablon utolsó sorában a DLL neve megegyezik az IoT Edge-modulprojekt nevével.Ha SSH-kapcsolatot szeretne létesíteni a Linux-modullal, létre kell hoznia egy RSA-kulcsot. Nyisson meg egy emelt szintű PowerShell-munkamenetet, és futtassa az alábbi parancsokat egy új RSA-kulcs létrehozásához. Mentse az RSA-kulcsot ugyanabban az IoT Edge-modulmappában, és győződjön meg arról, hogy a kulcs neve .
id_rsassh-keygen -t RSA -b 4096 -m PEM
Ha magánregisztrációs adatbázist használ, például az Azure Container Registryt, az alábbi 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. Ha helyi beállításjegyzéket használ, futtathat egy helyi beállításjegyzéket.
docker -H tcp://<EFLOW-VM-IP>:2375 login -u <Container Registry username> -p <Container Registry password> <Container Registry login server>
A Megoldáskezelőben kattintson a jobb gombbal a projektmappára, és válassza az IoT Edge-modulok összeállítása és leküldése lehetőséget. Ez a parancs minden modulhoz létrehozza és leküldi a Docker-rendszerképet.
Ha magánregisztrációs adatbázist használ, például az Azure Container Registryt, hozzá kell adnia a beállításjegyzék bejelentkezési adatait a fájlban
deployment.template.jsontalálható futtatókörnyezeti beállításokhoz. Cserélje le a helyőrzőket a tárolóregisztrációs adatbázis tényleges rendszergazdai felhasználónevére, jelszavára és beállításjegyzék-nevére."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.
A modul SSH-szolgáltatásához való hozzáféréshez el kellérhetővé tenni a 22-s portot. Ez az oktatóanyag 10022-et használ gazdaportként, de megadhat egy másik portot. A megadott port SSH-portként lesz használva a Linux C# modulhoz való csatlakozáshoz. Ehhez a Linux-modulbeállításhoz
createOptionshozzá kell adnia az SSH-port adatait a fájlbandeployment.debug.template.json:"createOptions": { "HostConfig": { "Privileged": true, "PortBindings": { "22/tcp": [ { "HostPort": "10022" } ] } } }A Megoldáskezelőben kattintson a jobb gombbal a projektmappára, és válassza az Üzembe helyezés létrehozása az IoT Edge-hez lehetőséget az új IoT Edge üzembehelyezési JSON létrehozásához.
Válassza aCloud Explorer>. Győződjön meg arról, hogy bejelentkezett a Visual Studio 2019-be.
A Cloud Explorerben bontsa ki előfizetését, majd keresse meg az Azure IoT Hubot és az üzembe helyezni kívánt Azure IoT Edge-eszközt.
Kattintson a jobb gombbal az IoT Edge-eszközre, és válassza az Üzembe helyezés létrehozása lehetőséget. Nyissa meg a platformhoz konfigurált hibakeresési üzembehelyezési jegyzékfájlt. Ez a
configVisual Studio-megoldás mappájában található, példáuldeployment.amd64.json.
A modul Docker-rendszerképének létrehozása
A modul fejlesztése után 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-lemezké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 az Azure Container Registry rendszerképének létrehozásához használja a következő 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"
A modul Docker-lemezképének leküldése
Küldje le 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
A modul üzembe helyezése az IoT Edge-eszközön
A Visual Studióban nyissa meg az deployment.debug.template.json üzembehelyezési jegyzékfájlt a főprojektben.
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. Az értékekről createOption további információt az IoT Edge-modulok tároló-létrehozási beállításainak konfigurálása című témakörben talál.
Ha egy Azure Container Registry használatával tárolja a modul rendszerképét, adja hozzá a hitelesítő adatait a
deployment.debug.template.jsonbeállításokhozedgeAgent. Példa:"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" } } } }, //...Cserélje le a
imagetulajdonság értékét a regisztrációs adatbázisba leküldött modulrendszerkép nevére. Ha például egy egyéni modulhozmyacr.azurecr.io/iotedgemodule1:0.0.1-amd64címkézettIotEdgeModule1képet küld le, cserélje le a képtulajdonság értékét a címkeértékre.Adja hozzá vagy cserélje le a
createOptionsértéket szövegesített tartalommal az üzembehelyezési sablon minden egyes rendszer- és egyéni moduljához.A beállítások és
imageacreateOptionsbeállításokIotEdgeModule1például az alábbi példához 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 fájlban
deployment.debug.amd64.jsondefiniált modulokat az IoT Edge-eszközmy-iot-hubIoT Hubjábanmy-deviceszeretné üzembe helyezni, 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 connection string az Azure Portalon, az Azure IoT Hub>biztonsági beállításai>megosztott hozzáférési szabályzatok alatt található.
A Cloud Explorerben kattintson a jobb gombbal a peremeszközre, és frissítsen annak ellenőrzéséhez, hogy az új modul fut-e azokkal és
$edgeAgenta$edgeHubmodulokkal együtt.
A megoldás hibakeresése
Egy emelt szintű PowerShell-munkamenetben futtassa a következő parancsokat:
Kérje le az
moduleIdértéket a Linux C# modul neve alapján. Cserélje le a<iot-edge-module-name>helyőrzőt a modul nevére.$moduleId = Invoke-EflowVmCommand "sudo docker ps -aqf name=<iot-edge-module-name>"Ellenőrizze, hogy helyes-e
$moduleId. Ha a változó üres, győződjön meg arról, hogy a megfelelő modulnevet használja.Indítsa el az SSH szolgáltatást a Linux-tárolón belül:
Invoke-EflowVmCommand "sudo docker exec -it -d $moduleId service ssh start"Nyissa meg a modul SSH-portját a Linuxhoz készült IoT Edge-en Windows rendszerű virtuális gépen. (Ez az oktatóanyag az 10022-s portot használja.)
Invoke-EflowVmCommand "sudo iptables -A INPUT -p tcp --dport 10022 -j ACCEPT"
Figyelmeztetés
Biztonsági okokból minden alkalommal, amikor a Windows rendszerű virtuális gépen futó Linux IoT Edge újraindul, a rendszer törli az IP-táblaszabályt, és visszatér az eredeti beállításokhoz. Emellett manuálisan is el kell indítania a modul SSH-szolgáltatását.
Az SSH szolgáltatás sikeres elindítása után válassza a Debug>Attach to Process(Csatolás a folyamathoz) lehetőséget, állítsa be a kapcsolat típusátSSH-ra, és állítsa be a kapcsolati célt a Linuxhoz készült IoT Edge IP-címére Windows rendszerű virtuális gépen. Ha nem ismeri a Linuxhoz készült IoT Edge IP-címét Windows rendszerű virtuális gépen, használhatja a
Get-EflowVmAddrPowerShell-parancsmagot.Írja be az IP-címet, majd válassza az Enter billentyűt. Az előugró ablakban adja meg a következő konfigurációkat:
Mező Érték Állomásnév A Linuxhoz készült IoT Edge IP-címe Windows rendszerű virtuális gépen Kikötő 10022 (vagy az üzembe helyezési konfigurációban használt) Felhasználónév gyökér Hitelesítési típus Titkos kulcs Titkos kulcsfájl Az előző lépésben létrehozott érték teljes elérési útja id_rsaJelszó Az előző lépésben létrehozott kulcshoz használt jelszó Miután sikeresen csatlakozott a modulhoz az SSH használatával, kiválaszthatja a folyamatot, és kiválaszthatja a Csatolás lehetőséget. A C# modulhoz ki kell választania a dotnet folyamatot és a Csatolás opciót a Felügyelt (CoreCLR)-hez. Első alkalommal 10–20 másodpercig is eltarthat.
Állítson be egy töréspontot a modul vizsgálatához:
- Ha C#-ban fejleszt, állítson be egy töréspontot a függvényben a
PipeMessage()következőbenModuleBackgroundService.cs: . - Ha C-t használ, állítson be egy töréspontot a függvényben a
InputQueue1Callback()következőbenmain.c: .
- Ha C#-ban fejleszt, állítson be egy töréspontot a függvényben a
A kimenetet
SimulatedTemperatureSensoraz egyéni Linux C# modulhoz kell átirányítaniinput1. A töréspontot aktiválni kell. A változókat a Visual Studio Helyiek ablakában tekintheti meg.
A hibakeresés leállításához válassza a Ctrl+F5 billentyűkombinációt vagy a Leállítás gombot.
Az erőforrások eltávolítása
Ha azt tervezi, hogy a következő ajánlott cikkel folytatja, megtarthatja és újból felhasználhatja a létrehozott erőforrásokat és konfigurációkat. Azt is megteheti, hogy ugyanezt az IoT Edge-eszközt használja teszteszközként.
Ellenkező esetben törölje a cikkben használt helyi konfigurációkat és Azure-erőforrásokat a díjak elkerülése érdekében.
Azure-erőforrások törlése
Az Azure-erőforrások és -erőforráscsoportok törlése visszafordíthatatlan. Figyeljen, nehogy véletlenül rossz erőforráscsoportot vagy erőforrásokat töröljön. Ha az IoT Hubot egy meglévő erőforráscsoporton belül hozta létre, amelyben meg szeretné tartani az erőforrásokat, csak magát az IoT Hub-erőforrást törölje, nem pedig az erőforráscsoportot.
Az erőforrások törlése:
- Jelentkezzen be az Azure Portalra, majd válassza ki az Erőforráscsoportokat.
- Válassza ki az IoT Edge teszterőforrásokat tartalmazó erőforráscsoport nevét.
- Tekintse át az erőforráscsoport által tartalmazott erőforrások listáját. Ha az összeset törölni szeretné, válassza az Erőforráscsoport törlése lehetőséget. Ha csak néhányat szeretne törölni, az egyes erőforrásokat egyenként is törölheti.
Következő lépés
Ebben az oktatóanyagban beállítja a Visual Studio-t a fejlesztői gépen, és üzembe helyezte és hibakereséssel telepítette az első IoT Edge-modult. Most, hogy megismerte az alapfogalmakat, próbáljon meg funkciókat hozzáadni egy modulhoz, hogy elemezhesse a rajta áthaladó adatokat: