Sdílet prostřednictvím


Kurz: Vývoj modulů IoT Edge s linuxovými kontejnery pomocí IoT Edge pro Linux ve Windows

Platí pro: Značka zaškrtnutí IoT Edge 1.5 IoT Edge 1.5 Značka zaškrtnutí IoT Edge 1.4 IoT Edge 1.4

Důležité

Podporované verze ioT Edge 1.5 LTS a IoT Edge 1.4 LTS. IoT Edge 1.4 LTS je konec životnosti 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.

  • Stáhněte sadu .NET Core SDK.

  • 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.

  • 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:

  1. 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.

  2. Extrahujte docker.exe do adresáře ve vašem vývojovém počítači, C:\Docker\binnapříklad .

  3. Otevřete O systému PC>System Info>Advanced nastavení systému.

  4. Vyberte Rozšířené>proměnné prostředí. V části Proměnné uživatele vyberte Cestu.

  5. Upravte proměnnou Path a přidejte umístění docker.exe.

  6. Otevřete relaci PowerShellu se zvýšenými oprávněními.

  7. 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í.

  1. 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:

  1. 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 
    
  2. 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.

  1. 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ů.

  2. 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ší.

  3. Na stránce Konfigurovat nový projekt zadejte název projektu a zadejte umístění a pak vyberte Vytvořit.

  4. 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.

  5. Do pole Název modulu zadejte název modulu.

  6. 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.

  7. Výběrem možnosti Přidat přidáte modul do projektu.

    Snímek obrazovky s výběrem pro přidání aplikace a modulu do řešení sady Visual Studio

    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í ve repository 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 a edgeHub.
  • 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í:

  1. 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.

    Snímek obrazovky s výběrem pro nastavení verze modulu runtime IoT Edge

  2. 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 image edgeAgent modulu runtime systému a edgeHub. 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",
       //...
    
  3. 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.

  1. Otevřete soubor manifestu deployment.debug.template.json nasazení.

  2. Změňte verzi modulu runtime pro image edgeAgent modulu runtime systému a edgeHub. 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:

  1. Vyberte Nástroje>Azure IoT Edge Tools>IoT Edge – nastavení nástrojů IoT Edge.

  2. 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.

    Snímek obrazovky s nastavením nástrojů IoT Edge

  3. 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í:

  1. V Průzkumník řešení vyberte složku projektu modulu (například myIotEdgeModule).

  2. Nastavte vlastní modul jako spouštěný projekt. V nabídce vyberte Project>Set as StartUp Project (Spustit projekt).

  3. 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.

  4. 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_rsanázev klíče .

    ssh-keygen -t RSA -b 4096 -m PEM
    

    Snímek obrazovky s příkazem PowerShellu pro vytvoření klíče SSH

  5. 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>
    
  1. 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.

  2. Pokud používáte privátní registr, jako je Azure Container Registry, musíte do nastavení modulu runtime nalezeného v souboru deployment.template.jsonpř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.

  3. 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 souboru deployment.debug.template.json:

         "createOptions": {
            "HostConfig": {
               "Privileged": true,
               "PortBindings": {
                     "22/tcp": [
                        {
                           "HostPort": "10022"
                        }
                     ]
               }
            }
         }
    
  4. 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.

  5. Vyberte Zobrazit>Průzkumníka cloudu. Ujistěte se, že jste přihlášení k sadě Visual Studio 2019.

  6. V Průzkumníku cloudu rozbalte své předplatné a vyhledejte Azure IoT Hub a zařízení Azure IoT Edge, které chcete nasadit.

  7. 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říklad deployment.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.

  1. 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"
              }
            }
          }
        },
    //...
    
  2. 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í modul IotEdgeModule1, nahraďte hodnotu vlastnosti image hodnotou značky.

  3. 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í a createOptions 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\"}]}}}"
    }
    
  4. 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 Hubu my-iot-hub pro zařízení my-deviceIoT 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>.

  5. 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í

  1. V relaci PowerShellu se zvýšenými oprávněními spusťte následující příkazy:

    1. 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>"
      
    2. Zkontrolujte správnost $moduleId . Pokud je proměnná prázdná, ujistěte se, že používáte správný název modulu.

    3. Spusťte službu SSH v kontejneru Linuxu:

      Invoke-EflowVmCommand "sudo docker exec -it -d $moduleId service ssh start"
      
    4. 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ě.

  2. 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 kroku
    Přístupové heslo Heslo použité pro klíč, který jste vytvořili v předchozím kroku
  3. 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.

  4. Nastavte zarážku pro kontrolu modulu:

    • Pokud vyvíjíte v jazyce C#, nastavte zarážku ve PipeMessage() funkci v ModuleBackgroundService.cs.
    • Pokud používáte jazyk C, nastavte zarážku ve InputQueue1Callback() funkci v main.c.
  5. Výstup by SimulatedTemperatureSensor měl být přesměrován na input1 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.

    Snímek obrazovky s ladit jeden modul

  6. 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ů:

  1. Přihlaste se k portálu Azure Portal a potom vyberte Skupiny prostředků.

  2. Vyberte název skupiny prostředků, která obsahuje vaše testovací prostředky služby IoT Edge.

  3. 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í: