Příprava na nasazení řešení IoT Edge v produkčním prostředí

Platí pro:IoT Edge 1.4 checkmark IoT Edge 1.4

Důležité

IoT Edge 1.4 je podporovaná verze. Pokud používáte starší verzi, podívejte se na článek Aktualizace IoT Edge.

Až budete připraveni využít řešení IoT Edge z vývoje do produkčního prostředí, ujistěte se, že je nakonfigurovaná pro průběžný výkon.

Informace uvedené v tomto článku se nerovnají. Aby vám pomohl určit prioritu, začíná každý oddíl seznamy, které rozdělují práci na dvě části: důležité k dokončení před přechodem do produkčního prostředí nebo užitečné pro vás.

Konfigurace zařízení

Zařízení IoT Edge můžou být cokoli od Raspberry Pi k přenosnému počítači na virtuálním počítači běžícím na serveru. Možná máte k zařízení přístup fyzicky nebo prostřednictvím virtuálního připojení, nebo ho můžete izolovat po delší dobu. V obou případech se chcete ujistit, že je nakonfigurovaná tak, aby fungovala správně.

  • Důležité upozornění

    • Instalace produkčních certifikátů
    • Mít plán správy zařízení
    • Použití Moby jako kontejnerového modulu
  • Užitečné

    • Volba upstreamových protokolů

Instalace produkčních certifikátů

Každé zařízení IoT Edge v produkčním prostředí potřebuje nainstalovaný certifikát certifikační autority (CA). Tento certifikát certifikační autority se pak deklaruje modulu runtime IoT Edge v konfiguračním souboru. Pro scénáře vývoje a testování modul runtime IoT Edge vytvoří dočasné certifikáty, pokud nejsou v konfiguračním souboru deklarovány žádné certifikáty. Platnost těchto dočasných certifikátů však vyprší po třech měsících a nejsou v produkčních scénářích zabezpečená. V produkčních scénářích byste měli zadat vlastní certifikát certifikační autority zařízení, a to buď od certifikační autority podepsané svým držitelem, nebo zakoupený od komerční certifikační autority.

Pokud chcete porozumět roli certifikátu certifikační autority zařízení, přečtěte si, jak Azure IoT Edge používá certifikáty.

Další informace o tom, jak nainstalovat certifikáty na zařízení IoT Edge a odkazovat na ně z konfiguračního souboru, najdete v tématu Správa certifikátu na zařízení IoT Edge.

Mít plán správy zařízení

Než dáte jakékoli zařízení do produkčního prostředí, měli byste vědět, jak budete spravovat budoucí aktualizace. U zařízení IoT Edge může seznam součástí, které se mají aktualizovat, zahrnovat:

  • Firmware zařízení
  • Knihovny operačního systému
  • Kontejnerový modul, jako je Moby
  • IoT Edge
  • Certifikáty certifikačních autorit

Aktualizace zařízení pro IoT Hub je služba, která umožňuje nasazovat pro zařízení IoT Edge prostřednictvím air aktualizací (OTA).

Alternativní metody aktualizace IoT Edge vyžadují fyzický nebo SSH přístup k zařízení IoT Edge. Další informace najdete v tématu Aktualizace modulu runtime IoT Edge. Pokud chcete aktualizovat více zařízení, zvažte přidání kroků aktualizace do skriptu nebo použití nástroje pro automatizaci, jako je Ansible.

Použití Moby jako kontejnerového modulu

Kontejnerový modul je předpokladem pro jakékoli zařízení IoT Edge. V produkčním prostředí je podporován pouze moby-engine. Jiné kontejnerové moduly, jako je Docker, pracují se službou IoT Edge a je v pořádku tyto moduly používat pro vývoj. Moby-engine je možné distribuovat při použití s Azure IoT Edge a Microsoft poskytuje servis pro tento modul.

Volba upstreamových protokolů

Můžete nakonfigurovat protokol (který určuje port použitý) pro nadřazenou komunikaci se službou IoT Hub pro agenta IoT Edge i centrum IoT Edge. Výchozí protokol je AMQP, ale můžete to změnit v závislosti na nastavení sítě.

Oba moduly modulu runtime mají proměnnou prostředí UpstreamProtocol . Platné hodnoty pro proměnnou jsou:

  • MQTT
  • AMQP
  • MQTTWS
  • AMQPWS

Nakonfigurujte proměnnou UpstreamProtocol pro agenta IoT Edge v konfiguračním souboru samotného zařízení. Pokud je vaše zařízení IoT Edge například za proxy serverem, který blokuje porty AMQP, možná budete muset nakonfigurovat agenta IoT Edge tak, aby používal AMQP přes WebSocket (AMQPWS) k navázání počátečního připojení ke službě IoT Hub.

Jakmile se zařízení IoT Edge připojí, nezapomeňte v budoucích nasazeních pokračovat v konfiguraci proměnné UpstreamProtocol pro oba moduly modulu runtime. Příkladem tohoto procesu je konfigurace zařízení IoT Edge pro komunikaci prostřednictvím proxy serveru.

Nasazení

  • Užitečné
    • Být konzistentní s upstreamovým protokolem
    • Nastavení hostitelského úložiště pro systémové moduly
    • Snížení paměti využitého centrem IoT Edge
    • Použití správných imagí modulů v manifestech nasazení
    • Při používání vlastních modulů mějte na paměti limity velikosti dvojčat.
    • Konfigurace způsobu použití aktualizací modulů

Být konzistentní s upstreamovým protokolem

Pokud jste na svém zařízení IoT Edge nakonfigurovali agenta IoT Edge tak, aby používal jiný protokol než výchozí AMQP, měli byste deklarovat stejný protokol ve všech budoucích nasazeních. Pokud je například vaše zařízení IoT Edge za proxy serverem, který blokuje porty AMQP, pravděpodobně jste nakonfigurovali připojení zařízení přes AMQP přes WebSocket (AMQPWS). Když nasadíte moduly do zařízení, nakonfigurujte stejný protokol AMQPWS pro agenta IoT Edge a centrum IoT Edge nebo jinak výchozí AMQP přepíše nastavení a zabrání vám v opětovném připojení.

Proměnnou prostředí UpstreamProtocol musíte nakonfigurovat jenom pro moduly agenta IoT Edge a centra IoT Edge. Všechny další moduly přijímají jakýkoli protokol nastavený v modulech modulu runtime.

Příkladem tohoto procesu je konfigurace zařízení IoT Edge pro komunikaci prostřednictvím proxy serveru.

Nastavení hostitelského úložiště pro systémové moduly

Moduly centra a agenta IoT Edge používají místní úložiště k udržování stavu a povolení zasílání zpráv mezi moduly, zařízeními a cloudem. Kvůli lepší spolehlivosti a výkonu nakonfigurujte systémové moduly tak, aby používaly úložiště v systému souborů hostitele.

Další informace naleznete v tématu Úložiště hostitele pro systémové moduly.

Snížení paměti používaného centrem IoT Edge

Pokud nasazujete omezená zařízení s omezenou pamětí, můžete nakonfigurovat centrum IoT Edge tak, aby běželo v efektivnější kapacitě a používalo méně místa na disku. Tyto konfigurace omezují výkon centra IoT Edge, proto najděte správnou rovnováhu, která funguje pro vaše řešení.

Neoptimalizovat výkon na omezených zařízeních

Centrum IoT Edge je ve výchozím nastavení optimalizované pro výkon, takže se pokusí přidělit velké bloky paměti. Tato konfigurace může způsobit problémy se stabilitou na menších zařízeních, jako je Raspberry Pi. Pokud nasazujete zařízení s omezenými prostředky, můžete nastavit proměnnou prostředí OptimizeForPerformance na false v centru IoT Edge.

Pokud je optimizeForPerformance nastavena na hodnotu true, hlavička protokolu MQTT používá PooledByteBufferAllocator, který má lepší výkon, ale přiděluje více paměti. Alokátor nefunguje dobře na 32bitových operačních systémech nebo na zařízeních s nedostatkem paměti. Kromě toho při optimalizaci výkonu přiděluje RocksDb více paměti pro svou roli jako místního poskytovatele úložiště.

Další informace najdete v tématu Problémy se stabilitou na menších zařízeních.

Zakázání nepoužívaných protokolů

Dalším způsobem, jak optimalizovat výkon centra IoT Edge a snížit jeho využití paměti, je vypnout hlavičky protokolu pro všechny protokoly, které ve svém řešení nepoužíváte.

Hlavičky protokolů se konfigurují nastavením logických proměnných prostředí pro modul centra IoT Edge v manifestech nasazení. Tři proměnné jsou:

  • amqp Nastavení__enabled
  • mqtt Nastavení__enabled
  • http Nastavení__enabled

Všechny tři proměnné mají dvě podtržítka a dají se nastavit na true nebo false.

Zkrácení doby ukládání zpráv

Modul IoT Edge Hub dočasně ukládá zprávy, pokud je z nějakého důvodu nejde do ioT Hubu doručit. Před vypršením platnosti můžete nakonfigurovat, jak dlouho se centrum IoT Edge drží na nedoručené zprávy. Pokud máte na svém zařízení obavy o paměť, můžete snížit hodnotu timeToLiveSecs ve dvojčeti modulu centra IoT Edge.

Výchozí hodnota parametru timeToLiveSecs je 7200 sekund, což je dvě hodiny.

Použití správných imagí modulů v manifestech nasazení

Pokud se použije prázdná nebo nesprávná image modulu, agent Edge se pokusí načíst image, což způsobí vygenerování nadbytečného provozu. Přidejte do manifestu nasazení správné image, abyste se vyhnuli zbytečnému provozu.

Nepoužívejte ladicí verze imagí modulů.

Při přechodu z testovacích scénářů do produkčních scénářů nezapomeňte z manifestů nasazení odebrat konfigurace ladění. Zkontrolujte, že žádná z imagí modulu v manifestech nasazení nemá příponu .debug . Pokud jste přidali možnosti vytváření pro zveřejnění portů v modulech pro ladění, odeberte tyto možnosti vytváření také.

Při používání vlastních modulů mějte na paměti limity velikosti dvojčat.

Manifest nasazení, který obsahuje vlastní moduly, je součástí dvojčete EdgeAgent. Zkontrolujte omezení velikosti dvojčete modulu.

Pokud nasadíte velký počet modulů, můžete tento limit velikosti dvojčete vyčerpat. Zvažte několik běžných omezení rizik pro tento pevný limit:

  • Uložte jakoukoli konfiguraci ve vlastním dvojčeti modulu, která má vlastní limit.
  • Uložte určitou konfiguraci, která odkazuje na neprostorové umístění (to znamená na úložiště objektů blob).

Konfigurace způsobu použití aktualizací modulů

Když se nasazení aktualizuje, agent Edge obdrží novou konfiguraci jako aktualizaci dvojčete. Pokud má nová konfigurace nové nebo aktualizované image modulů, agent Edge ve výchozím nastavení postupně zpracovává každý modul:

  1. Aktualizovaný obrázek se stáhne.
  2. Spuštěný modul je zastavený.
  3. Spustí se nová instance modulu.
  4. Další aktualizace modulu se zpracuje.

V některých případech, například pokud existují závislosti mezi moduly, může být žádoucí nejprve stáhnout všechny aktualizované image modulů před restartováním všech spuštěných modulů. Toto chování aktualizace modulu lze nakonfigurovat nastavením proměnné ModuleUpdateMode prostředí agenta IoT Edge na hodnotu WaitForAllPullsřetězce . Další informace najdete v tématu Proměnné prostředí IoT Edge.

"modulesContent": {
    "$edgeAgent": {
        "properties.desired": {
            ...
            "systemModules": {
                "edgeAgent": {
                    "env": {
                        "ModuleUpdateMode": {
                            "value": "WaitForAllPulls"
                        }
                    ...

Správa kontejnerů

  • Důležité upozornění
    • Použití značek ke správě verzí
    • Správa svazků
  • Užitečné
    • Ukládání kontejnerů modulu runtime do privátního registru
    • Konfigurace uvolňování paměti image

Použití značek ke správě verzí

Značka je koncept Dockeru, který můžete použít k rozlišení mezi verzemi kontejnerů Dockeru. Značky jsou přípony jako 1.1 , které se nacházejí na konci úložiště kontejneru. Například mcr.microsoft.com/azureiotedge-agent:1.1. Značky jsou proměnlivé a je možné je kdykoli změnit tak, aby odkazy na jiný kontejner, takže by váš tým měl odsouhlasit konvenci, která bude následovat při aktualizaci imagí modulů.

Značky také pomáhají vynucovat aktualizace na zařízeních IoT Edge. Když do registru kontejneru nasdílíte aktualizovanou verzi modulu, zvýší se značka. Pak do zařízení odešlete nové nasazení se značkou, která se zvýší. Modul kontejneru rozpozná přírůstkovou značku jako novou verzi a stáhne nejnovější verzi modulu do vašeho zařízení.

Značky pro modul runtime IoT Edge

Image agenta IoT Edge a centra IoT Edge jsou označené verzí IoT Edge, ke které jsou přidružené. Existují dva různé způsoby použití značek s imagemi modulu runtime:

  • Kumulativní značky – K získání nejnovější image, která odpovídá těmto číslicům, použijte pouze první dvě hodnoty čísla verze. Například verze 1.1 se aktualizuje vždy, když existuje nová verze, která ukazuje na nejnovější verzi 1.1.x. Pokud modul runtime kontejneru na zařízení IoT Edge znovu stáhne image, moduly runtime se aktualizují na nejnovější verzi. Nasazení z webu Azure Portal jsou ve výchozím nastavení na kumulativní značky. Tento přístup se navrhuje pro účely vývoje.

  • Konkrétní značky – K explicitní nastavení verze použijte všechny tři hodnoty čísla verze. Například verze 1.1.0 se po počáteční verzi nezmění. Nové číslo verze můžete deklarovat v manifestu nasazení, až budete připraveni k aktualizaci. Tento přístup se navrhuje pro produkční účely.

Správa svazků

IoT Edge neodebírá svazky připojené ke kontejnerům modulů. Toto chování je záměrné, protože umožňuje uchovávat data napříč instancemi kontejnerů například v případě upgradu. Pokud však tyto svazky zůstanou nevyužité, může to vést k vyčerpání místa na disku a následným chybám systému. Pokud ve svém scénáři používáte svazky Dockeru, doporučujeme používat nástroje Dockeru, jako je vyřazení svazku Dockeru a rm svazku Dockeru, k odebrání nepoužívaných svazků, zejména pro produkční scénáře.

Ukládání kontejnerů modulu runtime do privátního registru

Víte, jak ukládat image kontejnerů pro vlastní moduly kódu ve vašem privátním registru Azure, ale můžete je také použít k ukládání veřejných imagí kontejnerů, jako jsou moduly runtime edgeAgent a edgeHub . To se může vyžadovat, pokud máte velmi úzká omezení brány firewall, protože tyto kontejnery modulu runtime jsou uložené ve službě Microsoft Container Registry (MCR).

Následující kroky ukazují, jak načíst image Dockeru edgeAgent a EdgeHubu na místní počítač, znovu ho značek nahrát do privátního registru a pak aktualizovat konfigurační soubor, aby vaše zařízení věděla, že image z vašeho privátního registru načítá.

  1. Stáhněte image EdgeAgent Dockeru z registru Microsoftu. V případě potřeby aktualizujte číslo verze.

    # Pull edgeAgent image
    docker pull mcr.microsoft.com/azureiotedge-agent:1.4
    
    # Pull edgeHub image
    docker pull mcr.microsoft.com/azureiotedge-hub:1.4
    
  2. Vypíšete všechny image Dockeru , najděte image edgeAgent a edgeHub a zkopírujte jejich ID imagí.

    docker images
    
  3. Znovu nastavte image edgeAgent a edgeHubu . Nahraďte hodnoty v hranatých závorkách vlastními hodnotami.

    # Retag your edgeAgent image
    docker tag <my-image-id> <registry-name/server>/azureiotedge-agent:1.4
    
    # Retag your edgeHub image
    docker tag <my-image-id> <registry-name/server>/azureiotedge-hub:1.4
    
  4. Nasdílejte image edgeAgent a edgeHubu do privátního registru. Nahraďte hodnotu v závorkách vlastními.

    # Push your edgeAgent image to your private registry
    docker push <registry-name/server>/azureiotedge-agent:1.4
    
    # Push your edgeHub image to your private registry
    docker push <registry-name/server>/azureiotedge-hub:1.4
    
  5. Aktualizujte odkazy na image v souboru deployment.template.json pro systémové moduly edgeAgent a edgeHub tak, že pro oba moduly nahradíte mcr.microsoft.com vlastní "název_registru/server".

  6. Otevřete textový editor na zařízení IoT Edge a změňte konfigurační soubor, aby věděl o imagi vašeho privátního registru.

    sudo nano /etc/aziot/config.toml
    
  7. V textovém editoru změňte hodnoty obrázků v části [agent.config]. Nahraďte hodnoty v hranatých závorkách vlastními hodnotami.

    [agent.config]
    image = "<registry-name/server>/azureiotedge-agent:1.4"
    
  8. Pokud váš privátní registr vyžaduje ověření, nastavte parametry ověřování v [agent.config.auth]souboru .

    [agent.config.auth]
    serveraddress = "<login-server>" # Almost always equivalent to <registry-name/server>
    username = "<username>"
    password = "<password>"
    
  9. Uložte změny a ukončete textový editor.

  10. Použijte změnu konfigurace IoT Edge.

    sudo iotedge config apply
    

    Váš modul runtime IoT Edge se restartuje.

Další informace naleznete v tématu:

Konfigurace uvolňování paměti image

Uvolňování paměti image je funkce ioT Edge verze 1.4 a novější, která automaticky vyčistí image Dockeru, které už moduly IoT Edge nepoužívají. Odstraní jenom image Dockeru, které modul runtime IoT Edge načítá jako součást nasazení. Odstranění nepoužívaných imagí Dockeru pomáhá šetřit místo na disku.

Tato funkce se implementuje v hostitelské komponentě IoT Edge, aziot-edged ve výchozím nastavení je služba a povolená. Vyčištění se provádí každý den o půlnoci (místní čas zařízení) a odebere nepoužívané image Dockeru, které byly naposledy použity před sedmi dny. Parametry pro řízení chování čištění jsou nastaveny v config.toml následující části a vysvětleny dále v této části. Pokud nejsou parametry zadané v konfiguračním souboru, použijí se výchozí hodnoty.

Například následující je config.toml část uvolňování paměti image s použitím výchozích hodnot:

[image_garbage_collection]
enabled = true
cleanup_recurrence = "1d"
image_age_cleanup_threshold = "7d" 
cleanup_time = "00:00"

Následující tabulka popisuje parametry uvolňování paměti image. Všechny parametry jsou volitelné a dají se nastavit jednotlivě, aby se změnilo výchozí nastavení.

Parametr Popis Povinní účastníci Default value
enabled Povolí uvolňování paměti image. Tuto funkci můžete zakázat změnou tohoto nastavení na false. Volitelné true
cleanup_recurrence Řídí frekvenci opakování úlohy vyčištění. Je nutné zadat jako několik dní a nesmí být kratší než jeden den.

Příklad: 1d, 2d, 6d atd.
Volitelné 1d
image_age_cleanup_threshold Definuje minimální věkovou prahovou hodnotu nepoužívaných obrázků před zvážením vyčištění a musí být zadána ve dnech. Image můžete vyčistit zadáním 0d , jakmile budou odebrány z nasazení.

Po odebrání z nasazení se image považují za nepoužité.
Volitelné 7 d
cleanup_time Čas dne v místním čase zařízení, kdy se úloha vyčištění spustí. Musí být ve formátu HH:MM 24 hodin. Volitelné 00:00

Sítě

  • Užitečné
    • Kontrola odchozí nebo příchozí konfigurace
    • Povolit připojení ze zařízení IoT Edge
    • Konfigurace komunikace prostřednictvím proxy serveru
    • Nastavení serveru DNS v nastavení kontejnerového stroje

Kontrola odchozí nebo příchozí konfigurace

Komunikační kanály mezi Azure IoT Hubem a IoT Edge jsou vždy nakonfigurované tak, aby byly odchozí. U většiny scénářů IoT Edge jsou nutná pouze tři připojení. Modul kontejneru se musí připojit k registru kontejneru (nebo registrům), který obsahuje image modulů. Modul runtime IoT Edge se musí připojit ke službě IoT Hub, aby načetl informace o konfiguraci zařízení a aby se odesílaly zprávy a telemetrie. A pokud používáte automatické zřizování, musí se IoT Edge připojit ke službě Device Provisioning. Další informace najdete v tématu Pravidla konfigurace brány firewall a portu.

Povolit připojení ze zařízení IoT Edge

Pokud vaše nastavení sítě vyžaduje explicitní povolení připojení ze zařízení IoT Edge, projděte si následující seznam komponent IoT Edge:

  • Agent IoT Edge otevře trvalé připojení AMQP/MQTT ke službě IoT Hub, případně přes WebSockets.
  • Centrum IoT Edge otevře jedno trvalé připojení AMQP nebo několik připojení MQTT ke službě IoT Hub, případně přes WebSockets.
  • Služba IoT Edge provádí přerušovaná volání HTTPS do IoT Hubu.

Ve všech třech případech by plně kvalifikovaný název domény (FQDN) odpovídal vzoru \*.azure-devices.net.

Registry kontejnerů

Modul kontejnerů volá registry kontejnerů přes HTTPS. Pro načtení imagí kontejneru modulu runtime IoT Edge je mcr.microsoft.complně kvalifikovaný název domény . Modul kontejneru se připojí k dalším registrům podle konfigurace v nasazení.

Tento kontrolní seznam je výchozím bodem pravidel brány firewall:

Plně kvalifikovaný název domény (* = zástupný znak) Odchozí porty TCP Využití
mcr.microsoft.com 443 Microsoft Container Registry
*.data.mcr.microsoft.com 443 Datový koncový bod poskytující doručování obsahu
*.cdn.azcr.io 443 Nasazení modulů z Marketplace do zařízení
global.azure-devices-provisioning.net 443 Přístup ke službě Device Provisioning ( volitelné)
*.azurecr.io 443 Registry kontejnerů osobních a třetích stran
*.blob.core.windows.net 443 Stažení rozdílových imagí služby Azure Container Registry z úložiště objektů blob
*.azure-devices.net 5671, 8883, 4431 Přístup ke službě IoT Hub
*.docker.io 443 Přístup ke službě Docker Hub (volitelné)

1Otevřete port 8883 pro zabezpečení MQTT nebo port 5671 pro zabezpečení AMQP. Pokud můžete vytvořit připojení pouze přes port 443, může být některý z těchto protokolů spuštěn prostřednictvím tunelu WebSocket.

Vzhledem k tomu, že IP adresa centra IoT se může bez předchozího upozornění změnit, vždy použijte plně kvalifikovaný název domény ke konfiguraci seznamu povolených. Další informace najdete v tématu Vysvětlení IP adresy ioT Hubu.

Některá z těchto pravidel brány firewall se dědí ze služby Azure Container Registry. Další informace najdete v tématu Konfigurace pravidel pro přístup k registru kontejneru Azure za bránou firewall.

Ve službě Azure Container Registry můžete povolit vyhrazené koncové body dat, abyste se vyhnuli seznamu povolených zástupných znaků pro *.blob.core.windows.net plně kvalifikovaný název domény. Další informace najdete v tématu Povolení vyhrazených datových koncových bodů.

Poznámka:

Pokud chcete poskytovat konzistentní plně kvalifikovaný název domény mezi koncovými body REST a dat, změní se od 15. června 2020 koncový bod dat služby Microsoft Container Registry na *.cdn.mscr.io*.data.mcr.microsoft.com
Další informace naleznete v tématu Konfigurace pravidel brány firewall klienta služby Microsoft Container Registry

Pokud nechcete bránu firewall nakonfigurovat tak, aby umožňovala přístup k veřejným registrům kontejnerů, můžete ukládat image do privátního registru kontejneru, jak je popsáno v kontejnerech modulu runtime úložiště ve vašem privátním registru.

Azure IoT Identity Service

Služba IoT Identity Service poskytuje služby zřizování a kryptografických služeb pro zařízení Azure IoT. Služba identit zkontroluje, jestli je nainstalovaná verze nejnovější. Kontrola k ověření verze používá následující plně kvalifikované názvy domén.

FQDN Odchozí porty TCP Využití
aka.ms 443 Jednoduchá adresa URL, která poskytuje přesměrování na soubor verze
raw.githubusercontent.com 443 Soubor verze služby identit hostovaný na GitHubu

Konfigurace komunikace prostřednictvím proxy serveru

Pokud budou vaše zařízení nasazená v síti, která používá proxy server, musí být schopná komunikovat přes proxy server, aby se dostala do IoT Hubu a registrů kontejnerů. Další informace najdete v tématu Konfigurace zařízení IoT Edge pro komunikaci prostřednictvím proxy serveru.

Nastavení serveru DNS v nastavení kontejnerového stroje

V nastavení modulu kontejneru zadejte server DNS pro vaše prostředí. Nastavení serveru DNS platí pro všechny moduly kontejneru spuštěné modulem.

  1. V adresáři /etc/docker na vašem zařízení upravte daemon.json soubor. Pokud soubor neexistuje, vytvořte ho.

  2. Přidejte klíč DNS a nastavte adresu serveru DNS na veřejně přístupnou službu DNS. Pokud vaše hraniční zařízení nemá přístup k veřejnému serveru DNS, použijte ve vaší síti přístupnou adresu serveru DNS. Příklad:

    {
        "dns": ["1.1.1.1"]
    }
    

Správa řešení

  • Užitečné
    • Nastavení protokolů a diagnostiky
    • Nastavení výchozího ovladače protokolování
    • Zvažte testy a kanály CI/CD.

Nastavení protokolů a diagnostiky

V Linuxu používá démon IoT Edge jako výchozí ovladač protokolování deníky. K dotazování protokolů démona můžete použít nástroj journalctl příkazového řádku.

Od verze 1.2 se IoT Edge spoléhá na několik démonů. I když se protokoly jednotlivých démonů dají dotazovat journalctljednotlivě, iotedge system příkazy poskytují pohodlný způsob dotazování kombinovaných protokolů.

  • Konsolidovaný iotedge příkaz:

    sudo iotedge system logs
    
  • Ekvivalentní journalctl příkaz:

    journalctl -u aziot-edge -u aziot-identityd -u aziot-keyd -u aziot-certd -u aziot-tpmd
    

Při testování nasazení IoT Edge můžete obvykle přistupovat ke svým zařízením a načítat protokoly a řešit potíže. Ve scénáři nasazení možná tuto možnost nemáte. Zvažte, jak budete shromažďovat informace o vašich zařízeních v produkčním prostředí. Jednou z možností je použít modul protokolování, který shromažďuje informace z ostatních modulů a odesílá je do cloudu. Jedním z příkladů modulu protokolování je logspout-loganalytics nebo můžete navrhnout vlastní.

Nastavení výchozího ovladače protokolování

Modul kontejnerů Moby ve výchozím nastavení nestanoví limity velikosti protokolů kontejnerů. Časem to může vést k zaplnění zařízení protokoly a vyčerpání místa na disku. Nakonfigurujte modul kontejneru tak, aby jako mechanismus protokolování používal local ovladač protokolování. Local Ovladač protokolování nabízí výchozí limit velikosti protokolu, ve výchozím nastavení provádí rotaci protokolů a používá efektivnější formát souboru, který pomáhá zabránit vyčerpání místa na disku. Můžete se také rozhodnout použít různé ovladače protokolování a nastavit různá omezení velikosti podle vašich potřeb.

Možnost: Konfigurace výchozího ovladače protokolování pro všechny moduly kontejneru

Modul kontejneru můžete nakonfigurovat tak, aby používal konkrétní ovladač protokolování nastavením hodnoty log driver na název ovladače protokolu v souboru daemon.json. Následující příklad nastaví výchozí ovladač protokolování na local ovladač protokolu (doporučeno).

{
    "log-driver": "local"
}

Klíče můžete také nakonfigurovat log-opts tak, aby používaly odpovídající hodnoty v daemon.json souboru. Následující příklad nastaví ovladač protokolu na local a nastaví max-size a max-file možnosti.

{
    "log-driver": "local",
    "log-opts": {
        "max-size": "10m",
        "max-file": "3"
    }
}

Přidejte (nebo připojte) tyto informace do souboru s názvem daemon.json a umístěte je do následujícího umístění:

  • /etc/docker/

Aby se změny projevily, musí se modul kontejneru restartovat.

Možnost: Úprava nastavení protokolu pro každý modul kontejneru

Můžete to udělat v modulu createOptions každého modulu. Příklad:

"createOptions": {
    "HostConfig": {
        "LogConfig": {
            "Type": "local",
            "Config": {
                "max-size": "10m",
                "max-file": "3"
            }
        }
    }
}

Další možnosti v systémech Linux

  • Nakonfigurujte modul kontejneru tak, aby odesílal protokoly do systemddeníku nastavením journald výchozího ovladače protokolování.

  • Pravidelně odebírat staré protokoly ze zařízení instalací nástroje logrotate. Použijte následující specifikaci souboru:

    /var/lib/docker/containers/*/*-json.log{
         copytruncate
         daily
         rotate7
         delaycompress
         compress
         notifempty
         missingok
    }
    

Zvažte testy a kanály CI/CD.

V případě nejúčinnějšího scénáře nasazení IoT Edge zvažte integraci produkčního nasazení do kanálů testování a CI/CD. Azure IoT Edge podporuje několik platforem CI/CD, včetně Azure DevOps. Další informace najdete v tématu Kontinuální integrace a průběžné nasazování do Azure IoT Edge.

Bezpečnostní aspekty

  • Důležité upozornění
    • Správa přístupu k registru kontejneru
    • Omezení přístupu kontejneru k hostitelským prostředkům

Správa přístupu k registru kontejneru

Než nasadíte moduly do produkčních zařízení IoT Edge, ujistěte se, že řídíte přístup ke svému registru kontejneru, aby externí uživatelé nemohli přistupovat k imagím kontejnerů nebo je měnit. Ke správě imagí kontejnerů použijte privátní registr kontejneru.

V kurzech a další dokumentaci vám dáváme pokyn, abyste na zařízení IoT Edge použili stejné přihlašovací údaje registru kontejneru, jaké používáte na vývojovém počítači. Tyto pokyny vám pomůžou snadněji nastavit testovací a vývojová prostředí a neměli byste je dodržovat v produkčním scénáři.

Pro bezpečnější přístup k vašemu registru máte možnost ověřování. Oblíbeným a doporučeným ověřováním je použití instančního objektu služby Active Directory, který je vhodný pro aplikace nebo služby k automatickému nebo bezobslužném (bezobslužném) způsobu načítání imagí kontejnerů, jak to dělají zařízení IoT Edge. Další možností je použít tokeny s vymezeným úložištěm, které umožňují vytvářet dlouhé nebo krátké identity, které existují pouze ve službě Azure Container Registry, ve kterých byly vytvořeny, a přístup k rozsahu na úrovni úložiště.

Pokud chcete vytvořit instanční objekt, spusťte dva skripty, jak je popsáno v tématu vytvoření instančního objektu. Tyto skripty dělají následující úlohy:

  • První skript vytvoří instanční objekt. Vypíše ID instančního objektu a heslo instančního objektu. Tyto hodnoty bezpečně uložte do záznamů.

  • Druhý skript vytvoří přiřazení rolí k udělení instančnímu objektu, které lze následně spustit v případě potřeby. Pro parametr doporučujeme použít roli role uživatele acrPull. Seznam rolí najdete v tématu Role a oprávnění služby Azure Container Registry.

Pokud chcete provést ověření pomocí instančního objektu, zadejte ID instančního objektu a heslo, které jste získali z prvního skriptu. Zadejte tyto přihlašovací údaje v manifestu nasazení.

  • Jako uživatelské jméno nebo ID klienta zadejte ID instančního objektu.

  • Jako heslo nebo tajný klíč klienta zadejte heslo instančního objektu.


Pokud chcete vytvořit tokeny s vymezeným úložištěm, postupujte podle pokynů k vytvoření tokenu s oborem úložiště.

Pokud se chcete ověřit pomocí tokenů v oboru úložiště, zadejte název tokenu a heslo, které jste získali po vytvoření tokenu s oborem úložiště. Zadejte tyto přihlašovací údaje v manifestu nasazení.

  • Pro uživatelské jméno zadejte uživatelské jméno tokenu.

  • Pro heslo zadejte jedno z hesel tokenu.

Poznámka:

Po implementaci rozšířeného ověřování zabezpečení zakažte nastavení uživatele Správa tak, aby výchozí přístup k uživatelskému jménu a heslu už nebyl dostupný. V registru kontejneru na webu Azure Portal v nabídce levého podokna v části Nastavení vyberte Přístupové klíče.

Omezení přístupu kontejneru k hostitelským prostředkům

V zájmu vyvážení sdílených prostředků hostitele napříč moduly doporučujeme pro jednotlivé moduly nastavit limity využití prostředků. Tyto limity zajistí, aby jeden modul neměl příliš vysoké využití paměti nebo procesoru a nebránil tak spuštění dalších procesů na zařízení. Platforma IoT Edge ve výchozím nastavení neomezuje prostředky pro moduly, protože ke zjištění, kolik prostředků daný modul potřebuje k optimálnímu provozu, je potřeba provést testování.

Docker poskytuje určitá omezení, která můžete použít k omezení prostředků, jako je využití paměti a procesoru. Další informace naleznete v tématu Možnosti modulu runtime s pamětí, procesory a gpu.

Tato omezení je možné použít u jednotlivých modulů pomocí možností vytvoření v manifestech nasazení. Další informace najdete v tématu Konfigurace možností vytváření kontejnerů pro moduly IoT Edge.

Další kroky