Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Použitelné pro:
IoT Edge 1.5
Important
IoT Edge 1.5 LTS je podporovaná verze. IoT Edge 1,4 LTS dosáhl konce životnosti 12. listopadu 2024. Pokud používáte starší verzi, přečtěte si téma Update IoT Edge.
Až budete připraveni vzít IoT Edge řešení z vývoje do produkčního prostředí, ujistěte se, že je nakonfigurovaná pro průběžný výkon.
Ne všechny informace v tomto článku jsou stejně důležité. Abychom vám pomohli s určením priority, začíná každý oddíl seznamy, které rozdělují práci do dvou skupin: důležité k dokončení před spuštěním, nebo informace, které je užitečné znát.
Konfigurace zařízení
IoT Edge zařízení můžou být cokoli od Raspberry Pi k přenosnému počítači nebo virtuálnímu počítači běžícímu na serveru. K zařízení můžete fyzicky přistupovat nebo prostřednictvím virtuálního připojení, nebo ho lze izolovat po delší dobu. V obou případech se ujistěte, že je nakonfigurovaná tak, aby správně fungovala.
Important
- Instalace produkčních certifikátů
- Mít plán správy zařízení
- Jako kontejnerový modul použijte Moby. Pokud používáte moduly snaps Ubuntu Core, Canonical poskytuje služby pro Docker snap a podporuje jej pro produkční scénáře.
Helpful
- Volba upstreamových protokolů
Instalace produkčních certifikátů
Každé IoT Edge zařízení v produkčním prostředí potřebuje nainstalovaný certifikát certifikační autority (CA). Deklarujte tento certifikát certifikační autority do modulu runtime IoT Edge v konfiguračním souboru. Pro vývoj a testování vytvoří modul runtime IoT Edge dočasné certifikáty, pokud v konfiguračním souboru nehlásíte 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 zadejte vlastní certifikát certifikační autority Edge, a to buď od certifikační autority podepsané svým držitelem, nebo certifikátu zakoupeného od komerční certifikační autority.
Informace o roli certifikátu certifikační autority Edge najdete v tématu Pokud Azure IoT Edge používá certifikáty.
Další informace o instalaci certifikátů na zařízení IoT Edge a odkazování na ně z konfiguračního souboru najdete v tématu Manage certificate on an IoT Edge device.
Mít plán správy zařízení
Než nasadíte jakékoli zařízení do produkčního prostředí, zvažte, jak budete spravovat budoucí aktualizace. U IoT Edge zařízení může seznam součástí, které se mají aktualizovat, zahrnovat:
- Firmware zařízení
- Knihovny operačního systému
- Kontejnerový engine, jako je Moby
- IoT Edge
- Certifikáty certifikačních autorit
Aktualizace zařízení pro IoT Hub je služba, která umožňuje nasazovat bezdrátové aktualizace (OTA) pro zařízení IoT Edge.
Další způsoby aktualizace IoT Edge vyžadují fyzický nebo SSH přístup k zařízení IoT Edge. Další informace najdete v tématu Update IoT Edge runtime. 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.
Kontejnerový engine
Pro každé zařízení IoT Edge se vyžaduje modul kontejneru. Moby-motor je podporován v produkčním prostředí. Pokud používáte moduly snaps Ubuntu Core, Canonical poskytuje služby pro Docker snap a podporuje jej pro produkční scénáře. Jiné kontejnerové moduly, jako je Docker, pracují s IoT Edge a je v pořádku používat tyto moduly pro vývoj. Moby-engine lze redistribuovat 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 použitý port) pro nadřazenou komunikaci pro IoT Hub pro agenta IoT Edge i centrum IoT Edge. Výchozí protokol je AMQP, ale v závislosti na nastavení sítě můžete chtít tento protokol změnit.
Oba runtime moduly mají proměnnou prostředí UpstreamProtocol. Platné hodnoty pro tuto 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 například vaše IoT Edge zařízení 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í k IoT Hub.
Po připojení IoT Edge zařízení pokračujte v konfiguraci proměnné UpstreamProtocol pro oba moduly modulu runtime v budoucích nasazeních. Podívejte se například na Konfigurování IoT Edge zařízení pro komunikaci prostřednictvím proxy serveru.
Deployment
-
Helpful
- Být konzistentní s upstreamovým protokolem.
- Nastavte hostitelské úložiště pro systémové moduly.
- Zmenšete paměťový prostor používaný centrem IoT Edge.
- V manifestech nasazení používejte správné image modulů.
- Při používání vlastních modulů mějte na paměti limity velikosti dvojčat.
- Nakonfigurujte způsob použití aktualizací modulů.
Být konzistentní s upstreamovým protokolem
Pokud na zařízení IoT Edge nakonfigurujete agenta IoT Edge tak, aby používal jiný protokol než výchozí protokol AMQP, deklarujte stejný protokol ve všech budoucích nasazeních. Pokud je například vaše IoT Edge zařízení za proxy serverem, který blokuje porty AMQP, pravděpodobně jste nakonfigurovali připojení zařízení přes AMQP přes WebSocket (AMQPWS). Při nasazování modulů do zařízení nakonfigurujte stejný protokol AMQPWS pro agenta IoT Edge a centrum IoT Edge. Jinak výchozí AMQP přepíše nastavení a zabrání vám v opětovném připojení.
Stačí nakonfigurovat proměnnou prostředí UpstreamProtocol pro IoT Edge agenta a moduly IoT Edge hub. Všechny další moduly dědí libovolný protokol nastavený v modulech modulu runtime.
Příklad tohoto procesu je uvedený v Konfigurujte zařízení IoT Edge tak, aby komunikuje přes proxy server.
Nastavení hostitelského úložiště pro systémové moduly
Moduly centra IoT Edge a agenta 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ěťového prostoru používaného modulem IoT Edge
Pokud nasazujete omezená zařízení s omezenou pamětí, nakonfigurujte centrum IoT Edge tak, aby běželo v efektivnější kapacitě a používalo méně místa na disku. Tato konfigurace omezuje výkon centra IoT Edge, proto najděte správnou rovnováhu, která funguje pro vaše řešení.
Nezaměřovat se na optimalizaci výkonu 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, nastavte proměnnou prostředí OptimizeForPerformance na false v centru IoT Edge.
Když nastavíte OptimizeForPerformance 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 využití paměti, je vypnout hlavičky protokolu pro všechny protokoly, které ve svém řešení nepoužíváte.
Nastavte Booleovské proměnné prostředí pro modul centra IoT Edge v nasazovacích manifestech pro konfiguraci prvků protokolu. Tři proměnné jsou:
- amqpSettings__enabled
- mqttSettings__enabled
- httpSettings__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 centra IoT Edge ukládá zprávy dočasně, pokud je nemůže doručit do IoT Hub z jakéhokoli důvodu. Můžete nakonfigurovat, jak dlouho centrum IoT Edge drží neodeslané zprávy, než vyprší. Pokud máte na zařízení problémy s pamětí, snižte hodnotu timeToLiveSecs v modulu dvoujádra rozbočovače 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 použijete prázdnou nebo nesprávnou image modulu, agent Edge se pokusí opakovaně načíst image. Tento proces opakovaných pokusů generuje další provoz. 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í odstranit ladicí konfigurace. 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 překročit tento limit velikosti digitálního dvojčete. 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 umístění bez omezení prostoru (to znamená na blob úložiště).
Konfigurace způsobu použití aktualizací modulů
Když aktualizujete nasazení, Edge Agent obdrží novou konfiguraci jako "twin update". Pokud má nová konfigurace nové nebo aktualizované image modulů, agent Edge ve výchozím nastavení postupně zpracovává každý modul:
- Aktualizovaný obrázek se stáhne.
- Spuštěný modul je zastavený.
- Spustí se nová instance modulu.
- Další aktualizace modulu se zpracuje.
V některých případech, například když existují závislosti mezi moduly, můžete před restartováním všech spuštěných modulů nejprve stáhnout všechny aktualizované image modulů. Chování aktualizace tohoto modulu můžete nakonfigurovat prostřednictvím nastavení proměnné prostředí IoT Edge Agenta ModuleUpdateMode na hodnotu řetězce WaitForAllPulls. Další informace najdete v tématu IoT Edge Proměnné prostředí.
"modulesContent": {
"$edgeAgent": {
"properties.desired": {
...
"systemModules": {
"edgeAgent": {
"env": {
"ModuleUpdateMode": {
"value": "WaitForAllPulls"
}
...
Správa kontejnerů
-
Important
- Ke správě verzí použijte značky.
- Správa svazků
-
Helpful
- Ukládejte kontejnery modulu runtime ve vašem privátním registru.
- Nakonfigurujte uvolňování nepotřebných obrazů.
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,5 , které se nacházejí na konci úložiště kontejneru. Například mcr.microsoft.com/azureiotedge-agent:1.5. Vzhledem k tomu, že značky jsou proměnlivé a mohou kdykoli změnit směr a ukazovat na jiný kontejner, měl by se váš tým dohodnout na konvenci, kterou budete nadále dodržovat při aktualizaci obrazů 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. Poté odešlete do svých zařízení nové nasazení s inkrementovanou značkou. 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
Obrazy agenta IoT Edge a IoT Edge hubu jsou označeny verzí IoT Edge, se kterou jsou spojeny. Existují dva různé způsoby použití značek s obrazy runtime:
Postupné značky – K zajištění nejnovějšího obrazu, který odpovídá těmto číslicím, použijte pouze první dvě hodnoty čísla verze. Například 1.5 se aktualizuje vždy, když je k dispozici nová verze, která ukazuje na nejnovější verzi 1.5.x. Pokud modul běhového prostředí kontejneru na vašem zařízení IoT Edge znovu stáhne image, moduly běhového prostředí se aktualizují na nejnovější verzi. Nasazení z portálu Azure ve výchozím nastavení používá průběžné značky. Tento přístup se navrhuje pro účely vývoje.
Konkrétní značky – K explicitnímu nastavení verze použijte všechny tři hodnoty čísla verze. Například verze 1.5.0 se po počáteční verzi nezmění. Když jste připraveni aktualizovat, deklarujete v manifestu nasazení nové číslo verze. Tento přístup se navrhuje pro produkční účely.
Správa svazků
IoT Edge neodebere 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 se ale tyto svazky nepoužívají, můžou vést k vyčerpání místa na disku a následným systémovým chybám. Pokud ve svém scénáři používáte svazky Dockeru, použijte nástroje Dockeru, jako docker volume prune a docker volume rm, a odeberte nepoužívané svazky, 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 v privátním registru Azure, ale můžete je použít také k ukládání veřejných imagí kontejnerů, jako jsou moduly runtime edgeAgent a edgeHub runtime. Pokud máte úzká omezení brány firewall, možná budete muset tyto kontejnery runtime uložit do privátního registru, protože jsou normálně uložené ve službě Microsoft Container Registry (MCR).
Následující kroky ukazují, jak stáhnout Docker image edgeAgent a edgeHub do vašeho místního počítače, přeoznačit ho, push do vašeho privátního registru a pak aktualizovat konfigurační soubor, aby vaše zařízení věděla, že mají image stahovat z vašeho privátního registru.
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.5 # Pull edgeHub image docker pull mcr.microsoft.com/azureiotedge-hub:1.5Vypište všechny image Dockeru, najděte image edgeAgent a edgeHub a zkopírujte jejich ID image.
docker imagesPřejmenujte vaše obrázky edgeAgent a edgeHub. 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.5 # Retag your edgeHub image docker tag <my-image-id> <registry-name/server>/azureiotedge-hub:1.5Odeslat vaše edgeAgent a edgeHub image do vašeho 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.5 # Push your edgeHub image to your private registry docker push <registry-name/server>/azureiotedge-hub:1.5Aktualizujte odkazy na image v souboru deployment.template.json pro systémové moduly edgeAgent a edgeHub tak, že pro oba moduly nahradíte
mcr.microsoft.comvlastní "název_registru/server".Otevřete textový editor na zařízení IoT Edge a změňte konfigurační soubor tak, aby věděl o imagi vašeho privátního registru.
sudo nano /etc/aziot/config.tomlV 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.5"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>"Uložte změny a ukončete textový editor.
Použijte změnu konfigurace IoT Edge.
sudo iotedge config applyVaše IoT Edge runtime se restartuje.
Další informace naleznete v tématu:
Konfigurace sběru nepotřebných dat pro image
Funkce sběru nevyužitých snímků je součástí IoT Edge verze 1.4 a novějších, která automaticky odstraní snímky Dockeru, které moduly IoT Edge již nepoužívají. Odstraní pouze Docker image, které IoT Edge runtime načítá jako součást nasazení. Odstranění nepoužívaných imagí Dockeru pomáhá šetřit místo na disku.
Služba aziot-edged, což je komponenta hostitele IoT Edge, implementuje tuto funkci a ve výchozím nastavení ji povolí. Proces čištění se spouští 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 nastavíte tak, aby kontrolovaly chování čištění v souboru config.toml a tato část je vysvětluje. Pokud v konfiguračním souboru nezadáte parametry, použijí se výchozí hodnoty.
Například následující část config.toml ukazuje nastavení sběru odpadu obrazů s výchozími hodnotami.
[image_garbage_collection]
enabled = true
cleanup_recurrence = "1d"
image_age_cleanup_threshold = "7d"
cleanup_time = "00:00"
Následující tabulka popisuje parametry správy odpadů obrazů. Všechny parametry jsou volitelné. Pokud chcete změnit výchozí nastavení, nastavte je jednotlivě.
| Parameter | Description | Required | Výchozí hodnota |
|---|---|---|---|
enabled |
Povolí spravování odpadu image. Tuto funkci můžete zakázat nastavením této hodnoty na false. |
Optional | true |
cleanup_recurrence |
Určuje, jak často se úloha čištění spouští. Tuto hodnotu zadejte jako násobek dnů a nesmí být menší než jeden den. Příklad: 1d, 2d, 6d atd. |
Optional | 1d |
image_age_cleanup_threshold |
Definuje minimální věk nepoužívaných obrázků, než se zváží jejich odstranění. Zadejte tuto hodnotu ve dnech. Můžete určit 0d, aby se obrázky vyčistily hned po odebrání z nasazení. Image se po odebrání z nasazení považují za nepoužité. |
Optional | 7d |
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 24 hodin HH:MM. Pokud zařízení není online, úloha vyčištění se nespustí. Úloha se spustí v dalším naplánovaném čase cleanup_time, pokud je zařízení v daném okamžiku online. |
Optional | 00:00 |
Sítě
-
Helpful
- Kontrola odchozí a 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í a příchozí konfigurace
Komunikační kanály vždy konfigurujete mezi Azure IoT Hub a IoT Edge tak, aby byly odchozí. U většiny IoT Edge scénářů 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 s IoT Hub k načtení informací o konfiguraci zařízení a k odesílání zpráv a telemetrie. Pokud používáte automatické zřizování, IoT Edge se musí připojit ke službě zřizování zařízení. 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, abyste explicitně povolili připojení z IoT Edge zařízení, projděte si následující seznam komponent IoT Edge:
- IoT Edge agent otevře trvalé připojení AMQP nebo MQTT k IoT Hub, případně přes WebSockets.
- IoT Edge hub otevře jedno trvalé připojení AMQP nebo několik připojení MQTT k IoT Hub, pravděpodobně přes WebSockets.
- Služba IoT Edge provádí přerušovaná volání HTTPS do IoT Hub.
Ve všech třech případech plně kvalifikovaný název domény (FQDN) odpovídá vzoru \*.azure-devices.net.
Registry kontejnerů
Container engine volá registry kontejnerů přes HTTPS. Pokud chcete načíst image kontejneru modulu runtime IoT Edge, plně kvalifikovaný název domény je mcr.microsoft.com. 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 | Usage |
|---|---|---|
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 osobních kontejnerů a kontejnerů třetích společností |
*.blob.core.windows.net |
443 | Stažení rozdílových image z Azure Container Registry z Blob Storage |
*.azure-devices.net |
5671, 8883, 4431 | přístup k IoT Hub |
*.docker.io |
443 | Docker Hub přístup (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 některý z těchto protokolů běžet přes tunel WebSocket.
Návod
Pro větší zabezpečení nahraďte plně kvalifikované názvy domén, které obsahují zástupné znaky, konkrétními koncovými body, pokud je to možné. Například nahraďte *.azure-devices.net parametrem <your-hub-name>.azure-devices.net. Nahraďte *.azurecr.io s <your-registry-name>.azurecr.io. Podnikové bezpečnostní týmy často odmítnou pravidla zástupných znaků, takže naplánujte konkrétní plně kvalifikované názvy domén v produkčním prostředí.
Vzhledem k tomu, že IP adresa IoT hubu se může bez předchozího upozornění změnit, vždy použijte plně kvalifikovaný název domény pro konfiguraci seznamu povolení. Další informace najdete v tématu Podstatení IP adresy vašeho IoT Hub.
Některá z těchto pravidel brány firewall pocházejí z Azure Container Registry. Další informace najdete v tématu Konfigurování pravidel pro přístup k registru kontejneru Azure za bránou firewall.
Ve svém registru kontejneru Azure můžete povolit vyhrazené koncové body dat, abyste se vyhnuli povolování zástupných znaků plně kvalifikovaného názvu domény *.blob.core.windows.net. Další informace najdete v tématu Povolení vyhrazených datových koncových bodů.
Note
Pokud chcete poskytnout konzistentní plně kvalifikovaný název domény mezi datovými a REST koncovými body, od 15. června 2020 se koncový bod dat služby Microsoft Container Registry změní z *.cdn.mscr.io na *.data.mcr.microsoft.com.
Další informace naleznete v tématu Konfigurace pravidel brány firewall klienta služby Microsoft Container Registry.
Pokud nechcete nastavit bránu firewall, aby umožnila přístup k veřejným registrům kontejnerů, můžete ukládat obrazy do vašeho soukromého registru kontejnerů, jak je popsáno v Ukládání modulů runtime kontejnerů do vašeho soukromého 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 používá následující plně kvalifikované názvy domén k ověření verze.
| FQDN | Odchozí porty TCP | Usage |
|---|---|---|
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ý v GitHub |
Konfigurace komunikace prostřednictvím proxy serveru
Pokud nasazujete zařízení v síti, která používá proxy server, musí komunikovat prostřednictvím proxy serveru, aby se dostaly do IoT Hub a registrů kontejnerů. Další informace najdete v tématu Konfigurování 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 se vztahuje na všechny moduly kontejneru, které modul spustí.
V adresáři
/etc/dockerna vašem zařízení upravtedaemon.jsonsoubor. Pokud soubor neexistuje, vytvořte ho.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 adresu serveru DNS, která je přístupná ve vaší síti. Například:
{ "dns": ["1.1.1.1"] }V případě podnikových nebo privátních sítí, které blokují externí DNS, použijte místo toho interní server DNS:
{ "dns": ["10.0.0.53"] }
Správa řešení
-
Helpful
- 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 použijte nástroj journalctl příkazového řádku.
Počínaje verzí 1.2 IoT Edge spoléhá na více démonů. I když můžete dotazovat protokoly jednotlivých démonů jednotlivě pomocí journalctl, použijte iotedge system příkazy k dotazování kombinovaných protokolů.
Konsolidovaný
iotedgepříkaz:sudo iotedge system logsEkvivalentní
journalctlpříkaz:journalctl -u aziot-edge -u aziot-identityd -u aziot-keyd -u aziot-certd -u aziot-tpmd
Při testování nasazení IoT Edge obvykle přistupujete k zařízením, abyste mohli 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 svých zařízeních v produkčním prostředí. Jednou z možností je použít modul protokolování, který shromažďuje informace z jiných modulů a odesílá je do cloudu. Můžete například použít logspout-loganalytics nebo navrhnout vlastní.
Nastavení výchozího ovladače protokolování
Ve výchozím nastavení modul kontejnerů Moby nenastavuje limity velikosti protokolů kontejnerů. Toto výchozí nastavení může v průběhu času způsobit, že se zařízení zaplní protokoly a dojde mu místo na disku. Nastavte modul kontejneru tak, aby jako mechanismus protokolování používal ovladač protokolování.local
local Ovladač protokolování nabízí výchozí limit velikosti protokolu, ve výchozím nastavení provádí obměnu protokolů a používá efektivnější formát souboru, který pomáhá zabránit vyčerpání místa na disku. Můžete také 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
Nastavte modul kontejneru tak, aby používal konkrétní ovladač protokolování nastavením hodnoty log driver na název ovladače protokolu v daemon.json souboru. Následující příklad nastaví výchozí protokolovací ovladač na local (doporučeno).
{
"log-driver": "local"
}
Můžete také nakonfigurovat klíče 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 k souboru s názvem daemon.json a umístěte je do následujícího umístění:
/etc/docker/
Restartujte modul kontejneru, aby se změny projevily.
Možnost: Úprava nastavení protokolu pro každý modul kontejneru
Nastavte tyto možnosti v modulu createOptions každého modulu. Napří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ímjournaldvý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.
Pro co nejefektivnější nasazení IoT Edge integrujte svoji produkci do testovacích a CI/CD kanálů. Azure IoT Edge podporuje více platforem CI/CD, včetně Azure DevOps. Další informace najdete v tématu Kontinuální integrace a kontinuální nasazování do Azure IoT Edge.
Bezpečnostní aspekty
-
Important
- Správa přístupu k registru kontejneru
- Omezte přístup kontejnerů k hostitelským prostředkům.
Správa přístupu k registru kontejneru
Než nasadíte moduly do produkčního IoT Edge zařízení, ujistěte se, že řídíte přístup k 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 použijete stejné přihlašovací údaje registru kontejneru na svém IoT Edge zařízení jako na vývojovém počítači. Tyto pokyny vám pomůžou snadněji nastavit testovací a vývojová prostředí a nejsou určené pro produkční použití.
Pokud chcete zabezpečit přístup k registru, vyberte si z několika možností ověřování. Použití služebního účtu služby Active Directory je oblíbená a doporučená metoda pro aplikace nebo služby k automatickému a bezobslužnému načítání image kontejnerů, jako je IoT Edge zařízení. Můžete také použít tokeny omezené na úložiště, které umožňují vytvářet dlouhodobé či krátkodobé identity, které existují výhradně v Azure Container Registry, kde je vytvoříte, a omezit přístup na úroveň úložiště.
Pokud chcete vytvořit instanční objekt, spusťte dva skripty popsané v části Vytvoření instančního objektu. Tyto skripty dělají následující kroky:
První skript vytvoří objekt služby. Zobrazuje 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. V případě potřeby ho následně spusťte. Pro parametr použijte roli uživatele
role. Seznam rolí naleznete v tématu Azure Container Registry role a oprávnění.
Pokud chcete provést ověření pomocí instančního objektu, zadejte ID instančního objektu a heslo z prvního skriptu v manifestu nasazení.
Jako uživatelské jméno nebo ID klienta zadejte ID hlavního objektu služby.
Jako heslo nebo tajný klíč klienta zadejte heslo služebního účtu.
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ů s oborem úložiště, zadejte název tokenu a přihlašovací údaje hesla, které získáte po vytvoření tokenu s oborem úložiště v manifestu nasazení.
Pro uživatelské jméno zadejte uživatelské jméno tokenu.
Pro heslo zadejte jedno z hesel tokenu.
Note
Po implementaci rozšířeného ověřování zabezpečení zakažte nastavení uživatele Správce , aby výchozí přístup k uživatelskému jménu a heslu nebyl k dispozici. Nastavení registru kontejneru najdete na portálu Azure v části Nastavení vyberte Access Keys.
Omezení přístupu kontejneru k hostitelským prostředkům
Pokud chcete vyrovnávat sdílené hostitelské prostředky mezi moduly, nastavte limity pro použití prostředků pro každý modul. Tato omezení zajišťují, že jeden modul nemůže používat příliš mnoho paměti nebo procesoru a brání spuštění jiných procesů v zařízení. Platforma IoT Edge ve výchozím nastavení neomezuje prostředky pro moduly, protože potřebujete otestovat, kolik prostředků modul potřebuje ke spuštění.
Docker umožňuje omezit prostředky, 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í můžete použít na jednotlivé moduly pomocí možností vytvoření v manifestech nasazení. Další informace najdete v tématu Jak konfigurovat možnosti vytváření kontejnerů pro moduly IoT Edge.
Pokud chcete například omezit modul na 256 MB paměti a 1 jádro procesoru:
"createOptions": {
"HostConfig": {
"Memory": 268435456,
"NanoCPUs": 1000000000
}
}
Další kroky
- Přečtěte si další informace o automatickém nasazení IoT Edge.
- Podívejte se, jak IoT Edge podporuje kontinuá integrace a průběžné nasazování.