Kurz: Vývoj modulů IoT Edge s linuxovými kontejnery pomocí IoT Edge pro Linux ve Windows
Platí pro: IoT Edge 1.4
Důležité
Podporované verze azure IoT Edge 1.5 LTS a IoT Edge 1.4. IoT Edge 1.4 LTS končí 12. listopadu 2024. Pokud používáte starší verzi, podívejte se na článek Aktualizace IoT Edge.
Tento kurz vás provede vývojem, laděním a nasazením vlastního kódu do zařízení Azure IoT Edge pomocí IoT Edge pro Linux ve Windows a sadě Visual Studio 2022. Nejběžnější scénář vývojáře pro řešení IoT Edge se dozvíte nasazením modulu C# do zařízení s Linuxem. Nasadíte a ladíte vlastní modul IoT Edge spuštěný v kontejneru Linuxu ve Windows. I když plánujete používat jiný jazyk nebo nasadit službu Azure, je tento kurz stále užitečný pro seznámení s vývojářskými nástroji a koncepty.
Tento kurz obsahuje kroky pro dva vývojové nástroje IoT Edge:
- Rozhraní příkazového řádku (CLI) azure IoT Edge Dev Tool CLI, což je upřednostňovaný nástroj pro vývoj
- Rozšíření Azure IoT Edge Tools pro Visual Studio, které je v režimu údržby
Pomocí tlačítka selektoru na začátku tohoto kurzu vyberte verzi nástroje.
V tomto kurzu se naučíte:
- Nastavte svůj vývojový počítač.
- K vytvoření nového projektu použijte vývojové nástroje IoT Edge.
- Sestavte projekt jako kontejner a uložte ho do registru kontejneru Azure.
- Nasaďte kód do zařízení IoT Edge.
Požadavky
V tomto kurzu se předpokládá, že jako vývojový počítač používáte počítač s Windows. Na počítačích s Windows můžete vyvíjet moduly Windows nebo Linux. Tento kurz vás provede vývojem kontejnerů Linuxu pomocí IoT Edge pro Linux ve Windows pro sestavování a nasazování modulů.
Než začnete:
Nainstalujte IoT Edge pro Linux ve Windows.
Přečtěte si rychlý start Nasazení prvního modulu IoT Edge do zařízení s Windows.
Nainstalujte nebo upravte sadu Visual Studio 2022 na vývojovém počítači. Zvolte vývoj pro Azure a vývoj desktopových aplikací s možnostmi úloh C++.
Po dokončení instalace sady Visual Studio 2022 si stáhněte a nainstalujte nástroje Azure IoT Edge z webu Visual Studio Marketplace.
K vytvoření a sestavení řešení IoT Edge můžete použít rozšíření Azure IoT Edge Tools. Upřednostňovaným vývojovým nástrojem je Azure IoT Edge Dev Tool CLI. Součástí rozšíření jsou šablony projektů Azure IoT Edge, které použijete k vytvoření projektu sady Visual Studio. V současné době je potřeba nainstalovat rozšíření bez ohledu na nástroj pro vývoj, který používáte.
Tip
Pokud používáte Visual Studio 2019, stáhněte a nainstalujte nástroje Azure IoT Edge tools for Visual Studio 2019 z webu Visual Studio Marketplace.
- Nainstalujte rozhraní příkazového řádku Azure CLI.
- Vytvoření bezplatného nebo standardního centra IoT v Azure jako cloudového prostředku
Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet Azure před tím, než začnete.
Klíčové koncepty
Tento kurz vás provede vývojem modulu IoT Edge. Modul IoT Edge je kontejner, který má spustitelný kód. Jeden nebo více modulů můžete nasadit do zařízení IoT Edge. Moduly provádějí konkrétní úlohy, jako je ingestování dat ze senzorů, čištění a analýza dat nebo odesílání zpráv do centra IoT. Další informace najdete v tématu Vysvětlení modulů Azure IoT Edge.
Při vývoji modulů IoT Edge je důležité pochopit rozdíl mezi vývojovým počítačem a cílovým zařízením IoT Edge, kde se modul nakonec nasadí. Kontejner, který sestavíte pro uložení kódu modulu, musí odpovídat operačnímu systému cílového zařízení.
Nejběžnějším scénářem je například někdo, kdo vyvíjí modul na počítači s Windows, který hodlá cílit na zařízení s Linuxem, na kterém běží IoT Edge. V takovém případě je operační systém kontejneru Linux.
Při procházení tohoto kurzu mějte na paměti rozdíl mezi operačním systémem vývojového počítače a operačním systémem kontejneru. V tomto kurzu použijete svého hostitele Windows pro vývoj a IoT Edge pro Linux na virtuálním počítači s Windows k sestavení a nasazení modulů.
Tento kurz cílí na zařízení, na kterých běží IoT Edge s kontejnery Linuxu. Upřednostňovaný operační systém můžete použít, pokud váš vývojový počítač spouští kontejnery Linuxu. K vývoji s linuxovými kontejnery doporučujeme použít Visual Studio, takže tento kurz používá. Můžete také použít Visual Studio Code, i když mezi těmito dvěma nástroji existují rozdíly. Další informace najdete v tématu Vývoj modulů Azure IoT Edge pomocí editoru Visual Studio Code.
Nastavení rozhraní příkazového řádku Dockeru a modulu Dockeru pro vzdálené připojení
Moduly IoT Edge jsou zabalené jako kontejnery, takže k jejich sestavení a správě potřebujete na vývojovém počítači modul kontejneru.
IoT Edge pro Linux na virtuálním počítači s Windows už obsahuje instanci modulu Dockeru. V tomto kurzu se dozvíte, jak se vzdáleně připojit z vývojářského počítače s Windows k ioT Edge pro Linux na instanci Dockeru virtuálního počítače s Windows. Pomocí tohoto vzdáleného připojení odeberete závislost na Docker Desktopu pro Windows.
Konfigurace rozhraní příkazového řádku Dockeru
Prvním krokem je konfigurace rozhraní příkazového řádku Dockeru na vývojovém počítači s Windows, aby se mohlo připojit ke vzdálenému modulu Dockeru:
Stáhněte si předkompilovanou
docker.exe
verzi Rozhraní příkazového řádku Dockeru z Chocolatey. Oficiální projekt cli si můžete stáhnout také z GitHubu a zkompilovat ho podle pokynů k úložišti.Extrahujte
docker.exe
do adresáře ve vašem vývojovém počítači,C:\Docker\bin
například .Otevřete O systému PC>System Info>Advanced nastavení systému.
Vyberte Rozšířené>proměnné prostředí. V části Proměnné uživatele vyberte Cestu.
Upravte proměnnou Path a přidejte umístění
docker.exe
.Otevřete relaci PowerShellu se zvýšenými oprávněními.
Pomocí následujícího příkazu zkontrolujte, jestli je rozhraní příkazového řádku Dockeru přístupné:
docker --version
Pokud jste všechno úspěšně nakonfigurovali, měl by výstup příkazu zobrazit verzi Dockeru. Měl by vypadat nějak takto
Docker version 20.10.12, build e91ed57
.
Konfigurace modulu Dockeru
Druhým krokem je konfigurace IoT Edge pro Linux na virtuálním počítači Dockeru s Windows tak, aby přijímala externí připojení, a přidejte příslušná pravidla brány firewall.
Upozorňující
Zveřejnění modulu Dockeru pro externí připojení může zvýšit rizika zabezpečení. Tuto konfiguraci byste měli použít jenom pro účely vývoje. Po dokončení vývoje nezapomeňte obnovit konfiguraci na výchozí nastavení.
Otevřete relaci PowerShellu se zvýšenými oprávněními a spusťte následující příkazy:
# 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"
Tady je příklad výstupu:
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
Test připojení
Posledním krokem instalace je otestování připojení Dockeru k IoT Edge pro Linux na virtuálním počítači s Windows dockerem:
Získejte IP adresu IoT Edge pro Linux na virtuálním počítači s Windows:
Get-EflowVmAddr
Tip
Pokud byla služba IoT Edge pro Linux na virtuálním počítači s Windows nasazená bez statické IP adresy, může se IP adresa mezi restartováním operačního systému Windows nebo síťovými změnami změnit. Ujistěte se, že používáte správnou IP adresu pro IoT Edge pro Linux na virtuálním počítači s Windows pokaždé, když chcete navázat vzdálené připojení k modulu Dockeru.
Tady je příklad výstupu:
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.105
Připojte se k IoT Edge pro Linux na modulu Dockeru virtuálního počítače s Windows a spusťte
hello-world
ukázkový kontejner. Nahraďte<EFLOW-VM-IP>
IP adresou virtuálního počítače s Windows ioT Edge pro Linux, kterou jste získali v předchozím kroku.docker -H tcp://<EFLOW-VM-IP>:2375 run --rm hello-world
Po dokončení stahování kontejneru se kontejner spustí a vytvoří tento výstup:
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/
Vytvoření projektu Azure IoT Edge
Šablona projektu IoT Edge v sadě Visual Studio vytvoří řešení, které můžete nasadit na zařízení IoT Edge. Pomocí následujících kroků vytvořte řešení Azure IoT Edge a pak vygenerujte první modul v tomto řešení. Každé řešení IoT Edge může obsahovat více než jeden modul.
Důležité
Struktura projektu IoT Edge, kterou Visual Studio vytvoří, není stejná jako struktura projektu v editoru Visual Studio Code.
Azure IoT Edge Dev Tool CLI v současné době nepodporuje vytváření typu projektu sady Visual Studio. K vytvoření projektu sady Visual Studio potřebujete použít rozšíření Azure IoT Edge Tools.
V sadě Visual Studio vytvořte nový projekt výběrem možnosti Vytvořit nový projekt na úvodní stránce nebo výběrem tlačítka Nový projekt na panelu nástrojů.
Na stránce Vytvořit nový projekt vyhledejte Azure IoT Edge. Vyberte projekt, který odpovídá platformě (modulu Linux IoT Edge) a architektuře vašeho zařízení IoT Edge, a pak vyberte Další.
Na stránce Konfigurovat nový projekt zadejte název projektu a zadejte umístění a pak vyberte Vytvořit.
V dialogovém okně Přidat modul vyberte typ modulu, který chcete vyvíjet. Můžete také vybrat Existující modul a přidat do nasazení existující modul IoT Edge.
Do pole Název modulu zadejte název modulu.
V adrese URL úložiště zadejte název úložiště imagí modulu. Visual Studio automaticky naplní název modulu localhost:5000/<název> vašeho modulu. Nahraďte ho vlastními informacemi registru.
Pokud k testování použijete místní registr Dockeru, použijte localhost . Pokud používáte Azure Container Registry, použijte přihlašovací server z nastavení vašeho registru. Přihlašovací server vypadá jako <název> registru.azurecr.io. Nahraďte pouze část řetězce localhost:5000 , aby konečný výsledek vypadal jako <název> registru.azurecr.io/< názvový> modul.
Výběrem možnosti Přidat přidáte modul do projektu.
Poznámka:
Pokud máte existující projekt IoT Edge, můžete změnit adresu URL úložiště tak, že soubor otevřete
module.json
. Adresa URL úložiště se nachází verepository
vlastnosti souboru JSON.
Teď máte v řešení sady Visual Studio projekt IoT Edge a modul IoT Edge.
Struktura projektu
Vaše řešení má dvě složky na úrovni projektu: hlavní složku projektu a složku modulu. Můžete mít například hlavní složku projektu s názvem AzureIotEdgeApp1
a složku modulu s názvem IotEdgeModule1
.
Hlavní složka projektu obsahuje manifest nasazení. Manifest nasazení je dokument JSON, který popisuje moduly, které se mají nakonfigurovat na cílovém zařízení IoT Edge.
Složka modulu obsahuje soubor pro kód modulu. Jmenuje se buď Program.cs
nebo main.c
, v závislosti na jazyce, který jste zvolili. Tato složka obsahuje také soubor s názvem module.json
, který popisuje metadata vašeho modulu. Různé soubory Dockeru poskytují potřebné informace k sestavení modulu jako kontejneru Windows nebo Linuxu.
Manifest nasazení projektu
Manifest nasazení, který upravíte, má název deployment.debug.template.json
. Tento soubor je šablona manifestu nasazení IoT Edge, který definuje všechny moduly, které běží na zařízení. Soubor také definuje, jak moduly vzájemně komunikují. Další informace o manifestech nasazení najdete v tématu Informace o nasazení modulů a vytváření tras.
Šablona nasazení zahrnuje:
- Dva moduly
edgeAgent
modulu runtime aedgeHub
. - Vlastní modul, který jste vytvořili v tomto projektu sady Visual Studio.
- Modul s názvem
SimulatedTemperatureSensor
. Tento výchozí modul generuje simulovaná data, která můžete použít k otestování modulů (nebo odstranění, pokud to není nutné). Pokud chcete zjistit, jak simulovaný senzor teploty funguje, podívejte se na zdrojový kód SimulatedTemperatureSensor.csproj.
Nastavení verze modulu runtime IoT Edge
Nejnovější stabilní verze modulu runtime je v současné době 1.4. Aktualizujte verzi modulu runtime IoT Edge na nejnovější stabilní verzi nebo verzi, na kterou chcete cílit pro vaše zařízení:
V Průzkumník řešení klikněte pravým tlačítkem na název hlavního projektu a vyberte Nastavit verzi modulu runtime IoT Edge.
V rozevírací nabídce zvolte verzi modulu runtime, na které běží vaše zařízení IoT Edge. Potom uložte provedené změny kliknutím na TLAČÍTKO OK . Pokud jste neudělali žádné změny, vyberte Zrušit.
Rozšíření v současné době neobsahuje výběr nejnovějších verzí modulu runtime. Pokud chcete nastavit verzi modulu runtime vyšší než 1.2, otevřete soubor manifestu
deployment.debug.template.json
nasazení. Změňte verzi modulu runtime pro imageedgeAgent
modulu runtime systému aedgeHub
. Pokud například chcete použít modul runtime IoT Edge verze 1.4, změňte v souboru manifestu nasazení následující řádky:"systemModules": { "edgeAgent": { //... "image": "mcr.microsoft.com/azureiotedge-agent:1.4" //... "edgeHub": { //... "image": "mcr.microsoft.com/azureiotedge-hub:1.4", //...
Pokud jste změnili verzi, znovu vygenerujte manifest nasazení tak, že kliknete pravým tlačítkem na název projektu a vyberete Vygenerovat nasazení pro IoT Edge. Tento krok vygeneruje manifest nasazení na základě šablony nasazení. Manifest se zobrazí ve
config
složce projektu sady Visual Studio.
Otevřete soubor manifestu
deployment.debug.template.json
nasazení.Změňte verzi modulu runtime pro image
edgeAgent
modulu runtime systému aedgeHub
. Pokud například chcete použít modul runtime IoT Edge verze 1.4, změňte následující řádky v souboru manifestu nasazení:"systemModules": { "edgeAgent": { //... "image": "mcr.microsoft.com/azureiotedge-agent:1.4", //... "edgeHub": { //... "image": "mcr.microsoft.com/azureiotedge-hub:1.4", //...
Nastavení vzdálené instance modulu Dockeru sady Visual Studio 2022
Nakonfigurujte rozšíření Azure IoT Edge Tools tak, aby používalo vzdálený modul Dockeru, který běží uvnitř IoT Edge pro Linux na virtuálním počítači s Windows:
Vyberte Nástroje>Azure IoT Edge Tools>IoT Edge – nastavení nástrojů IoT Edge.
Nahraďte hodnotu DOCKER_HOST localhost IP adresou pro IoT Edge pro Linux na virtuálním počítači s Windows. Pokud si IP adresu nepamatujete, získejte ji pomocí rutiny
Get-EflowVmAddr
IoT Edge pro Linux ve Windows PowerShellu. Pokud je například IP adresa ioT Edge pro Linux na virtuálním počítači s Windows 172.20.1.100, měla by být nová hodnota tcp://172.20.1.100:2375.Vyberte OK.
Vývoj modulu
Když přidáte nový modul, obsahuje výchozí kód, který je připravený k sestavení a nasazení do zařízení, abyste mohli začít testovat bez zásahu do jakéhokoli kódu. Kód modulu se nachází ve složce modulu v souboru s názvem Program.cs
(pro C#) nebo main.c
(pro C).
Ve výchozím řešení se simulovaná data z SimulatedTemperatureSensor
modulu směrují do vašeho modulu. Modul převezme vstup a pak ho odešle do Azure IoT Hubu.
Až budete připraveni přizpůsobit šablonu modulu vlastním kódem, použijte sady SDK služby Azure IoT Hub k vytvoření dalších modulů, které řeší klíčové potřeby řešení IoT. Mezi tyto potřeby patří zabezpečení, správa zařízení a spolehlivost.
Sestavení a nasdílení jednoho modulu
Obvykle chcete testovat a ladit každý modul před spuštěním v rámci celého řešení s více moduly. Vzhledem k tomu, že řešení sestaví nebo ladí pomocí modulu Docker spuštěného uvnitř IoT Edge pro Linux na virtuálním počítači s Windows, je prvním krokem sestavení a publikování modulu, aby se povolilo vzdálené ladění:
V Průzkumník řešení vyberte složku projektu modulu (například
myIotEdgeModule
).Nastavte vlastní modul jako spouštěný projekt. V nabídce vyberte Project>Set as StartUp Project (Spustit projekt).
Pokud chcete ladit modul C# Linux, musíte soubor aktualizovat
Dockerfile.amd64.debug
, aby se povolila služba SSH.Dockerfile.amd64.debug
Aktualizujte soubor tak, aby používal následující šablonu: Dockerfile pro modul Azure IoT Edge AMD64 C# s podporou vzdáleného ladění.Poznámka:
Když vyberete Ladit, Visual Studio používá
Dockerfile.(amd64|windows-amd64).debug
k sestavení imagí Dockeru. Tento soubor zahrnuje ladicí program příkazového řádku .NET Core VSDBG ve vaší imagi kontejneru při jeho sestavování. Pro moduly IoT Edge připravené pro produkční prostředí doporučujeme použít konfiguraci vydané verze , která se používáDockerfile.(amd64|windows-amd64)
bez VSDBG.Ujistěte se, že na posledním řádku šablony odpovídá
ENTRYPOINT ["dotnet", "IotEdgeModule1.dll"]
názvu knihovny DLL název vašeho projektu modulu IoT Edge.Pokud chcete vytvořit připojení SSH s linuxovým modulem, musíte vytvořit klíč RSA. Otevřete relaci PowerShellu se zvýšenými oprávněními a spuštěním následujících příkazů vytvořte nový klíč RSA. Uložte klíč RSA do stejné složky modulu IoT Edge a ujistěte se, že je
id_rsa
název klíče .ssh-keygen -t RSA -b 4096 -m PEM
Pokud používáte privátní registr, jako je Azure Container Registry, přihlaste se k němu pomocí následujícího příkazu Dockeru. Uživatelské jméno a heslo můžete získat na stránce Přístupové klíče vašeho registru na webu Azure Portal. Pokud používáte místní registr, můžete spustit místní registr.
docker -H tcp://<EFLOW-VM-IP>:2375 login -u <Container Registry username> -p <Container Registry password> <Container Registry login server>
V Průzkumník řešení klikněte pravým tlačítkem na složku projektu a vyberte Sestavit a odeslat moduly IoT Edge. Tento příkaz sestaví a nasdílí image Dockeru pro každý modul.
Pokud používáte privátní registr, jako je Azure Container Registry, musíte do nastavení modulu runtime nalezeného v souboru
deployment.template.json
přidat přihlašovací údaje registru. Zástupné symboly nahraďte skutečným uživatelským jménem, heslem a názvem registru správce služby Container Registry."settings": { "minDockerVersion": "v1.25", "loggingOptions": "", "registryCredentials": { "registry1": { "username": "<username>", "password": "<password>", "address": "<registry name>.azurecr.io" } } }
Poznámka:
Tento článek používá přihlašovací údaje správce ke službě Azure Container Registry, které jsou vhodné pro scénáře vývoje a testování. Až budete připraveni na produkční scénáře, doporučujeme použít možnost ověřování s nejnižšími oprávněními, jako jsou instanční objekty. Další informace najdete v tématu Správa přístupu k registru kontejneru.
Pro přístup ke službě SSH modulu je nutné vystavit port 22. Tento kurz používá jako port hostitele 10022, ale můžete zadat jiný port. Zadaný port se použije jako port SSH pro připojení k modulu Linux C#. Informace o portu SSH je potřeba přidat do
createOptions
tohoto nastavení modulu Linuxu v souborudeployment.debug.template.json
:"createOptions": { "HostConfig": { "Privileged": true, "PortBindings": { "22/tcp": [ { "HostPort": "10022" } ] } } }
V Průzkumník řešení klikněte pravým tlačítkem na složku projektu a vyberte Vygenerovat nasazení pro IoT Edge a sestavte nový JSON nasazení IoT Edge.
Vyberte Zobrazit>Průzkumníka cloudu. Ujistěte se, že jste přihlášení k sadě Visual Studio 2019.
V Průzkumníku cloudu rozbalte své předplatné a vyhledejte Azure IoT Hub a zařízení Azure IoT Edge, které chcete nasadit.
Klikněte pravým tlačítkem na zařízení IoT Edge a vyberte Vytvořit nasazení. Přejděte do manifestu nasazení ladění, který je nakonfigurovaný pro vaši platformu. Je ve
config
složce v řešení sady Visual Studio, napříkladdeployment.amd64.json
.
Sestavení image Dockeru modulu
Po vývoji modulu můžete vytvořit image modulu, která se uloží do registru kontejneru pro nasazení do zařízení IoT Edge.
Pomocí souboru Dockerfile modulu sestavte image Dockeru modulu:
docker build --rm -f "<DockerFilePath>" -t <ImageNameAndTag> "<ContextPath>"
Předpokládejme například, že příkazové prostředí je v adresáři projektu a název modulu je IotEdgeModule1
. Pokud chcete vytvořit image místního registru nebo registru kontejneru Azure, použijte následující příkazy:
# 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"
Nasdílení image Dockeru modulu
Nasdílejte image modulu do místního registru nebo registru kontejneru:
docker push <ImageName>
Příklad:
# 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
Nasazení modulu do zařízení IoT Edge
V sadě Visual Studio otevřete soubor manifestu deployment.debug.template.json
nasazení v hlavním projektu.
Před nasazením musíte aktualizovat přihlašovací údaje služby Azure Container Registry, image modulů a správné createOptions
hodnoty. Další informace o hodnotách najdete v createOption
tématu Konfigurace možností vytváření kontejnerů pro moduly IoT Edge.
Pokud k uložení image modulu používáte registr kontejneru Azure, přidejte do
deployment.debug.template.json
edgeAgent
nastavení svoje přihlašovací údaje. Příklad:"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" } } } }, //...
image
Hodnotu vlastnosti nahraďte názvem image modulu, který jste odeslali do registru. Pokud jste například odeslali obrázek označenýmyacr.azurecr.io/iotedgemodule1:0.0.1-amd64
pro vlastní modulIotEdgeModule1
, nahraďte hodnotu vlastnosti image hodnotou značky.Přidejte nebo nahraďte
createOptions
hodnotu řetězcovým obsahem pro každý systém a vlastní modul v šabloně nasazení.Například
image
nastavení acreateOptions
nastaveníIotEdgeModule1
by se podobaly následujícímu příkladu:"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\"}]}}}" }
K nasazení modulů do azure IoT Hubu použijte příkaz set-modules Azure CLI pro IoT Edge. Pokud chcete například nasadit moduly definované v
deployment.debug.amd64.json
souboru do IoT Hubumy-iot-hub
pro zařízenímy-device
IoT Edge, použijte následující příkaz: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>"
Tip
Připojovací řetězec ioT Hub najdete na webu Azure Portal v části Zásady sdíleného přístupu nastavení>zabezpečení služby Azure IoT Hub>.
V Průzkumníku cloudu klikněte pravým tlačítkem myši na hraniční zařízení a aktualizujte, abyste ověřili, že je nový modul spuštěný, spolu s
$edgeAgent
moduly a$edgeHub
moduly.
Ladění řešení
V relaci PowerShellu se zvýšenými oprávněními spusťte následující příkazy:
moduleId
Získá hodnotu na základě názvu modulu Linux C#.<iot-edge-module-name>
Zástupný symbol nahraďte názvem modulu.$moduleId = Invoke-EflowVmCommand "sudo docker ps -aqf name=<iot-edge-module-name>"
Zkontrolujte správnost
$moduleId
. Pokud je proměnná prázdná, ujistěte se, že používáte správný název modulu.Spusťte službu SSH v kontejneru Linuxu:
Invoke-EflowVmCommand "sudo docker exec -it -d $moduleId service ssh start"
Na virtuálním počítači s Windows otevřete port SSH modulu na IoT Edge pro Linux. (V tomto kurzu se používá port 10022.)
Invoke-EflowVmCommand "sudo iptables -A INPUT -p tcp --dport 10022 -j ACCEPT"
Upozorňující
Zbezpečnostních Také musíte službu SSH modulu spustit ručně.
Po úspěšném spuštění služby SSH vyberte Připojit k procesu ladění>, nastavte typ připojení na SSH a nastavte cíl připojení na IP adresu ioT Edge pro Linux na virtuálním počítači s Windows. Pokud ip adresu ioT Edge pro Linux na virtuálním počítači s Windows neznáte, můžete použít rutinu PowerShellu
Get-EflowVmAddr
.Zadejte IP adresu a pak vyberte klávesu Enter. V automaticky otevíraných otevíraných oknech zadejte následující konfigurace:
Pole Hodnota Název hostitele IP adresa pro IoT Edge pro Linux na virtuálním počítači s Windows Port 10022 (nebo ten, který jste použili v konfiguraci nasazení) Uživatelské jméno kořen Typ ověřování Soukromý klíč Soubor privátního klíče Úplná cesta k hodnotě id_rsa
, kterou jste vytvořili v předchozím krokuPřístupové heslo Heslo použité pro klíč, který jste vytvořili v předchozím kroku Po úspěšném připojení k modulu pomocí SSH můžete zvolit proces a vybrat Připojit. Pro modul C# musíte zvolit proces dotnet a připojit ke spravovanému (CoreCLR). První spuštění může trvat 10 až 20 sekund.
Nastavte zarážku pro kontrolu modulu:
- Pokud vyvíjíte v jazyce C#, nastavte zarážku ve
PipeMessage()
funkci vModuleBackgroundService.cs
. - Pokud používáte jazyk C, nastavte zarážku ve
InputQueue1Callback()
funkci vmain.c
.
- Pokud vyvíjíte v jazyce C#, nastavte zarážku ve
Výstup by
SimulatedTemperatureSensor
měl být přesměrován nainput1
vlastní modul Linux C#. Zarážka by se měla aktivovat. Proměnné můžete sledovat v okně Místní prostředí sady Visual Studio.Ladění zastavíte tak, že vyberete Ctrl+F5 nebo vyberete tlačítko Zastavit .
Vyčištění prostředků
Pokud máte v plánu pokračovat k dalšímu doporučenému článku, můžete si vytvořené prostředky a konfigurace uschovat a znovu je použít. Také můžete dál používat stejné zařízení IoT Edge jako testovací zařízení.
Jinak odstraňte místní konfigurace a prostředky Azure, které jste použili v tomto článku, abyste se vyhnuli poplatkům.
Odstranění prostředků Azure
Odstranění prostředků Azure a skupin prostředků je nevratná akce. Ujistěte se, že nechtěně neodstraníte nesprávnou skupinu prostředků nebo prostředky. Pokud jste centrum IoT vytvořili ve stávající skupině prostředků, která obsahuje prostředky, které chcete zachovat, odstraňte pouze samotný prostředek ioT Hubu, nikoli skupinu prostředků.
Odstranění prostředků:
Přihlaste se k portálu Azure Portal a potom vyberte Skupiny prostředků.
Vyberte název skupiny prostředků, která obsahuje vaše testovací prostředky služby IoT Edge.
Zkontrolujte seznam prostředků, které vaše skupina prostředků obsahuje. Pokud chcete odstranit všechny prostředky, můžete vybrat možnost Odstranit skupinu prostředků. Pokud chcete odstranit jenom některé z nich, můžete vybrat jednotlivé prostředky, které chcete odstranit jednotlivě.
Další krok
V tomto kurzu nastavíte sadu Visual Studio na vývojovém počítači a nasadíte a ladíte z něj svůj první modul IoT Edge. Teď, když znáte základní koncepty, zkuste do modulu přidat funkce, aby bylo možné analyzovat data, která procházejí: