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
IoT Edge 1.5 LTS a támogatott kiadás. IoT Edge 1,4 LTS 2024. november 12-én véget ért. Ha korábbi kiadást használ, tekintse meg a Update IoT Edge című témakört.
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 Linuxhoz készült IoT Edge Windows és 2022-Visual Studio használatával. A IoT Edge-megoldások leggyakoribb fejlesztői forgatókönyvét egy C# modul Linux-eszközön való üzembe helyezésével ismerheti meg. Windows alatt egy Linux-tárolóban futó, egyéni IoT Edge modult fog üzembe helyezni és hibakeresést végezni. Ez az oktatóanyag akkor is hasznos, ha egy másik nyelvet szeretne használni, vagy Azure szolgáltatást szeretne üzembe helyezni, 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:
- A 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
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 IoT Edge fejlesztési eszközöket.
- Alakítsa projektjét tárolóként, és tárolja az Azure Container Registry-ben.
- Telepítse a kódot egy IoT Edge eszközre.
Előfeltételek
Ez az oktatóanyag feltételezi, hogy fejlesztési gépként Windows futó gépet használ. Windows számítógépeken Windows vagy Linux-modulokat fejleszthet. Ez az oktatóanyag végigvezeti a Linux-tárolók fejlesztésén a IoT Edge linuxos Windows használatával a modulok létrehozásához és üzembe helyezéséhez.
Előkészületek:
Telepítse az IoT Edge Linux on Windows szoftvert.
Olvassa el a Gyorsútmutatót: Az első IoT Edge modul üzembe helyezése Windows eszközre.
Töltse le a .NET Core SDK.
Telepítse vagy módosítsa a Visual Studio 2022 fejlesztői gépén. Válassza ki az Azure-fejlesztés és az asztali fejlesztést C++-szal munkafolyamat-lehetőségeket.
A Visual Studio 2022 telepítése után töltse le és telepítse az Azure IoT Edge Eszközöket a Visual Studio Marketplace-ről.
A IoT Edge-megoldás létrehozásához és létrehozásához használhatja a Azure IoT Edge Eszközök bővítményt. Az előnyben részesített fejlesztési eszköz a 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 a Visual Studio 2019-et használja, töltse le és telepítse az Azure IoT Edge Tools for Visual Studio 2019 alkalmazást a Visual Studio Marketplace-ből.
- Telepítse a Azure CLI.
- Hozzon létre egy ingyenes vagy standard szintű IoT Hub Azure felhőerőforrásként.
Ha nincs Azure fiókja, a kezdés előtt hozzon létre egy felszabadító fiókot.
Fő fogalmak
Ez az oktatóanyag egy IoT Edge modul fejlesztését mutatja be. A 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óért lásd: Az Azure IoT Edge modulok megértése.
A 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 futtató Linux-eszközt kíván megcélzni. 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épét fogja használni a fejlesztéshez, és a linuxos IoT Edge Windows virtuális gépen (VM) a modulok létrehozásához és üzembe helyezéséhez.
Ez az oktatóanyag olyan eszközöket céloz meg, amelyek linuxos tárolókkal IoT Edge futnak. 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 Visual Studio használjon Linux-tárolókkal való fejlesztéshez, ezért ezt használja ez az oktatóanyag. Használhatja a Visual Studio Code is, bár a két eszköz között különbségek vannak a támogatásban. További információ: Develop Azure IoT Edge modulok Visual Studio Code használatával.
A Docker CLI és a Docker motor beállítása távoli kapcsolathoz
IoT Edge modulok tárolókként vannak csomagolva, ezért a fejlesztési gépen egy tárolómotorra van szüksége az összeállításukhoz és kezelésükhöz.
A linuxos IoT Edge Windows virtuális gépen 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 Linuxot futtató IoT Edge Windows virtuális gép Docker-példányára. Ezzel a távoli kapcsolattal eltávolíthatja a Docker Desktop függőségét a Windows-hez.
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ő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 hivatalos cli projektet a GitHub-ból is letöltheti, és az adattár utasításait követve fordíthatja le.Másolja ki
docker.exea fejlesztői gép egyik könyvtárába; példáulC:\Docker\bin.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 Linux IoT Edge konfigurálása Windows virtuálisgép-Docker-motoron a külső kapcsolatok elfogadásához, valamint a megfelelő tűzfalszabályok hozzáadása.
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 Linux IoT Edge Windows virtuálisgép-Docker-motoron:
Kérje le a linuxos IoT Edge IP-címét Windows virtuális gépen:
Get-EflowVmAddrTipp
Ha az IoT Edge for Linux a Windows virtuális gépen 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ások esetén. Győződjön meg arról, hogy a megfelelő IP-címet használja a Linux IoT Edge Windows virtuális gépen minden alkalommal, amikor távoli kapcsolatot szeretne létesíteni a Docker-motorral.
Í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 az IoT Edge for Linux on Windows virtuális gépet futtató Docker motorhoz, és futtassa a
hello-worldmintatárolót. Cserélje le a<EFLOW-VM-IP>címre, amely a Windows rendszerű virtuális gép linuxos IoT Edge IP-címe, és amelyet az előző lépésben szerzett be.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 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.
A 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 Azure IoT Edge Eszközök bővítményt kell használnia.
A Visual Studio hozzon létre egy új projektet a Új projekt létrehozása a kezdőlapon vagy a Új projekt gomb kiválasztásával az eszköztáron.
A Új projekt létrehozása lapon keresse meg Azure IoT Edge. Válassza ki a IoT Edge eszköz platformjának (Linux IoT Edge moduljának) és architektúrájának megfelelő projektet, majd válassza a Next 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 Existing modul kiválasztásával hozzáadhat egy meglévő IoT Edge modult 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. Visual Studio automatikusan kitölti a modul nevét localhost:5000/<your modulnév>. Cserélje le a saját beállításjegyzék adatokra.
Ha helyi Docker-beállításjegyzéket használ a teszteléshez, használja a localhostot . Ha Azure Container Registryt használ, használja a bejelentkezési kiszolgálót a registry beállításai alatt. 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.
Megjegyzés
Ha már rendelkezik IoT Edge projekttel, módosíthatja az adattár URL-címét a
module.jsonfájl megnyitásával. Az adattár URL-címe arepositoryJSON-fájl tulajdonságában található.
Most már van egy IoT Edge projektje és egy IoT Edge modulja 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 Program.cs, vagy main.c, attól függően, hogy milyen nyelvet választottál. 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 telepítési jegyzéke
Az az üzembehelyezési jegyzék, amelyet ön szerkeszt, 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. 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ásidejű modul,
edgeAgentésedgeHub. - Az ebben a Visual Studio projektben létrehozott egyéni modul.
- Egy
SimulatedTemperatureSensornevű modul. Ez 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.
A 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 a IoT Edge futtatókörnyezet verzióját a legújabb stabil kiadásra vagy az eszközökhöz használni kívánt verzióra:
A Solution Explorer területen kattintson a jobb gombbal a fő projekt nevére, és válassza a Set IoT Edge futtatókörnyezeti verzió lehetőséget.
A legördülő menüben válassza ki az IoT Edge-eszközök által futtatott futtatókörnyezeti verzió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 a 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 a < IoT Edge-hez tartozó üzembe helyezés > 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
configmappájában jelenik 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 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 távoli Docker motorpéldány beállítása a Visual Studio 2022-ben
Konfigurálja a Azure IoT Edge Tools bővítményt a linuxos IoT Edge Windows virtuális gépen futó távoli Docker-motor használatára:
Válassza a Tools>Azure IoT Edge tools>IoT Edge tools settings lehetőséget.
Cserélje le a DOCKER_HOST localhost értéket a linuxos IoT Edge IP-címére Windows virtuális gépen. Ha nem emlékszik az IP-címre, a Windows PowerShell-parancsmag
Get-EflowVmAddrlinuxos IoT Edge használatával szerezheti be. Ha például a Linux IoT Edge Windows virtuális gép IP-címe 172.20.1.100, az új értéknek tcp://172.20.1.100:2375 kell lennie.
Kattintson az OK gombra.
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 szimulált adatok a SimulatedTemperatureSensor modulból az ön moduljába lesznek irányítva. A modul felveszi a bemenetet, majd elküldi Azure IoT Hub.
Ha készen áll a modulsablon saját kóddal való testreszabására, a Azure IoT Hub SDK-k használatával további modulokat hozhat létre, amelyek kielégítik az IoT-megoldások alapvető igényeit. 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 feltöltése
Általában minden modult tesztelni és hibakeresést végezni szükséges, mielőtt azt egy teljes, több modult tartalmazó megoldásban futtatja. Mivel a megoldás a Linux IoT Edge Windows virtuális gépen 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 Solution Explorer 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 aDockerfile.amd64.debugfájlt a következő sablon használatára: Dockerfile Azure IoT Edge AMD64 C# modulhoz távoli hibakeresési támogatással.Megjegyzés
A Debug kiválasztásakor Visual Studio
Dockerfile.(amd64|windows-amd64).debughasználatával hoz létre Docker-rendszerképeket. Ez a fájl tartalmazza a .NET Core parancssori hibakeresőt, a VSDBG-t, amikor a konténerképet összeállítod. Gyártásra kész IoT Edge modulok esetén javasoljuk, hogy a Release konfigurációt használja, amely aDockerfile.(amd64|windows-amd64)-t alkalmazza VSDBG nélkül.Győződjön meg arról, hogy a sablon utolsó sorában (
ENTRYPOINT ["dotnet", "IotEdgeModule1.dll"]) a DLL neve megegyezik a 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 a IoT Edge modulmappában, és győződjön meg arról, hogy a kulcs neve
id_rsa.ssh-keygen -t RSA -b 4096 -m PEM
Ha olyan privát beállításjegyzéket használ, mint a Azure Container Registry, a következő Docker-paranccsal jelentkezzen be. A felhasználónevet és a jelszót az Azure portálon található beállításjegyzék "Hozzáférési kulcsok" oldalán szerezheti be. 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 Solution Explorer kattintson jobb gombbal a projektmappára, és válassza a IoT Edge modulok építése és feltöltése lehetőséget. Ez a parancs minden modulhoz létrehozza és leküldi a Docker-rendszerképet.
Ha olyan privát beállításjegyzéket használ, mint a Azure Container Registry, hozzá kell adnia a beállításjegyzék bejelentkezési adatait a
deployment.template.jsonfájlban található futtatókörnyezeti beállításokhoz. Cserélje le a helykitöltőket a tényleges tárolóregiszter rendszergazdai felhasználónevére, jelszavára és regiszter nevére."settings": { "minDockerVersion": "v1.25", "loggingOptions": "", "registryCredentials": { "registry1": { "username": "<username>", "password": "<password>", "address": "<registry name>.azurecr.io" } } }Megjegyzés
Ez a cikk rendszergazdai bejelentkezési hitelesítő adatokat használ Azure Container Registry, 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 Solution Explorer-ben kattintson a jobb gombbal a projektmappára, és válassza a Telepítés generálása az IoT Edge-hez az új IoT Edge üzembe helyezési JSON létrehozásához.
Válassza aCloud Explorer>. Ellenőrizze, hogy be van-e jelentkezve a Visual Studio 2019-be.
A Cloud Explorerben bontsa ki előfizetését, majd keresse meg az üzembe helyezni kívánt Azure IoT Hub és Azure IoT Edge eszközt.
Kattintson a jobb gombbal az IoT Edge eszközre, és válassza a Telepítés létrehozása lehetőséget. Nyissa meg a platformhoz konfigurált hibakeresési üzembehelyezési jegyzékfájlt. A Visual Studio megoldás
configmappá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, hogy egy tárolóregisztrációs adatbázisban tárolja a 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 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 Studio-ban nyissa meg a deployment.debug.template.json telepítési jegyzékfájlt a főprojektben.
Az üzembe helyezés előtt frissítenie kell a 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 lásd: Az IoT Edge modulok tároló-létrehozási beállításainak konfigurálása.
Ha az Azure Container Registry-t használja a modulképek tárolására, adja hozzá hitelesítő adatait a
deployment.debug.template.jsonaedgeAgentbeállításaiban. 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 képet küldött le, amely azIotEdgeModule1egyéni modulhoz lettmyacr.azurecr.io/iotedgemodule1:0.0.1-amd64címkézve, akkor 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.Például a
imageéscreateOptionsbeállítások aIotEdgeModule1esetében hasonlóak lehetnek a következő példához:"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\"}]}}}" }A IoT Edge Azure CLI set-modules paranccsal helyezze üzembe a modulokat a Azure IoT hubon. Ha például a
deployment.debug.amd64.jsonfájlban definiált modulokat az IoT Hubmy-iot-hub-ra szeretné telepíteni az IoT Edge eszköz számáramy-device, 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 kapcsolat karakterláncát az Azure portálon az Azure IoT Hub>Biztonsági beállítások>Megosztott hozzáférési szabályok alatt találja.
A Cloud Explorerben kattintson a jobb gombbal az él-eszközre, és frissítsen annak ellenőrzéséhez, hogy az új modul fut-e a következő modulokkal együtt:
$edgeAgentés$edgeHub.
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 linuxos IoT Edge Windows 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 Linux IoT Edge Windows virtuális gépen ú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 lehetőséget, állítsa Kapcsolódási típusSSH értékre, és állítsa Kapcsolódási cél a IoT Edge IP-címére a linuxos Windows virtuális gépen. Ha nem ismeri a linuxos IoT Edge IP-címét Windows 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 Linux IoT Edge IP-címe Windows 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és típusa 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
ModuleBackgroundService.csPipeMessage()függvényben. - Ha a C nyelvet használja, állítson be egy töréspontot a
InputQueue1Callback()függvényben amain.csorán.
- Ha C#-ban fejleszt, állítson be egy töréspontot a
A
SimulatedTemperatureSensorkimenetét át kell irányítani az egyéni Linux C# modulinput1-ére. A töréspontot aktiválni kell. A változókat a Visual Studio Locals ablakban 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 megtisztí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 ugyanazt a IoT Edge eszközt használja, mint egy teszteszközt.
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
Nem vonhatja vissza Azure erőforrások és erőforráscsoportok törlését. Figyeljen, nehogy véletlenül rossz erőforráscsoportot vagy erőforrásokat töröljön. Ha a IoT Hub egy meglévő erőforráscsoporton belül hozta létre, amelyben meg szeretné tartani az erőforrásokat, csak magát a IoT Hub erőforrást törölje, ne az erőforráscsoportot.
Az erőforrások törlése:
- Jelentkezzen be a Azure portálra, majd válassza a Csoportokat.
- Válassza ki a 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 mindet 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, jelölje ki az egyes erőforrásokat, hogy egyenként törölje őket.
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 hibakereste 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: