Konfigurace zařízení IoT Edge tak, aby komunikovalo přes proxy server
Platí pro: IoT Edge 1.1
Důležité
Datum ukončení podpory ioT Edge 1.1 bylo 13. prosince 2022. Informace o způsobu podpory tohoto produktu, služby, technologie nebo rozhraní API najdete v tématu věnovaném životnímu cyklu produktů Microsoftu. Další informace o aktualizaci na nejnovější verzi IoT Edge najdete v tématu Aktualizace IoT Edge.
Zařízení IoT Edge odesílají požadavky HTTPS ke komunikaci se službou IoT Hub. Pokud je vaše zařízení připojené k síti, která používá proxy server, musíte nakonfigurovat modul runtime IoT Edge pro komunikaci přes server. Proxy servery můžou mít vliv také na jednotlivé moduly IoT Edge, pokud provedou požadavky HTTP nebo HTTPS, které nejsou směrovány přes centrum IoT Edge.
Tento článek vás provede následujícími čtyřmi kroky ke konfiguraci a správě zařízení IoT Edge za proxy serverem:
Instalace modulu runtime IoT Edge na zařízení
Instalační skripty IoT Edge načítají balíčky a soubory z internetu, takže vaše zařízení musí komunikovat přes proxy server, aby tyto požadavky udělalo. Instalační skript pro zařízení s Windows také poskytuje možnost offline instalace.
Tento krok je jednorázový proces konfigurace zařízení IoT Edge při prvním nastavení. Stejná připojení se vyžadují také při aktualizaci modulu runtime IoT Edge.
Konfigurace IoT Edge a modulu runtime kontejneru na vašem zařízení
IoT Edge zodpovídá za komunikaci se službou IoT Hub. Modul runtime kontejneru zodpovídá za správu kontejnerů, takže komunikuje s registry kontejnerů. Obě tyto komponenty musí provádět webové požadavky prostřednictvím proxy serveru.
Tento krok je jednorázový proces konfigurace zařízení IoT Edge při prvním nastavení.
Konfigurace vlastností agenta IoT Edge v konfiguračním souboru na vašem zařízení
Proces démon IoT Edge nejprve spustí modul edgeAgent. Pak modul edgeAgent načte manifest nasazení ze služby IoT Hub a spustí všechny ostatní moduly. Aby agent IoT Edge udělal počáteční připojení ke službě IoT Hub, nakonfigurujte proměnné prostředí modulu edgeAgent ručně na samotném zařízení. Po počátečním připojení můžete vzdáleně nakonfigurovat modul edgeAgent.
Tento krok je jednorázový proces konfigurace zařízení IoT Edge při prvním nastavení.
-
Jakmile je zařízení IoT Edge nastavené a připojené ke službě IoT Hub prostřednictvím proxy serveru, musíte připojení udržovat ve všech budoucích nasazeních modulů.
Tento krok probíhá vzdáleně, takže každá nová aktualizace modulu nebo aktualizace nasazení udržuje schopnost zařízení komunikovat prostřednictvím proxy serveru.
Seznámení s adresou URL proxy serveru
Než začnete s některým z kroků v tomto článku, potřebujete znát adresu URL proxy serveru.
Adresy URL proxy serveru mají následující formát: protocol://proxy_host:proxy_port.
Protokol je HTTP nebo HTTPS. Démon Dockeru může v závislosti na nastavení registru kontejneru používat oba protokoly, ale kontejnery démon a modul runtime IoT Edge by měly vždy používat protokol HTTP pro připojení k proxy serveru.
Proxy_host je adresa proxy serveru. Pokud proxy server vyžaduje ověření, můžete své přihlašovací údaje zadat jako součást hostitele proxy serveru s následujícím formátem: user:password@proxy_host.
Proxy_port je síťový port, ve kterém proxy server reaguje na síťový provoz.
Instalace IoT Edge prostřednictvím proxy serveru
Bez ohledu na to, jestli vaše zařízení IoT Edge běží ve Windows nebo Linuxu, potřebujete přístup k instalačním balíčkům prostřednictvím proxy serveru. V závislosti na vašem operačním systému nainstalujte modul runtime IoT Edge prostřednictvím proxy serveru.
Zařízení s Linuxem
Pokud instalujete modul runtime IoT Edge na zařízení s Linuxem, nakonfigurujte správce balíčků tak, aby procházel proxy serverem pro přístup k instalačnímu balíčku. Můžete například nastavit apt-get pro použití http-proxy. Jakmile je správce balíčků nakonfigurovaný, postupujte podle pokynů v části Instalace modulu runtime Azure IoT Edge obvyklým způsobem.
Zařízení s Windows využívající IoT Edge pro Linux ve Windows
Pokud instalujete modul runtime IoT Edge pomocí IoT Edge pro Linux ve Windows, ioT Edge se ve výchozím nastavení nainstaluje na virtuální počítač s Linuxem. Nejsou vyžadovány žádné další kroky instalace nebo aktualizace.
Zařízení s Windows využívající kontejnery Windows
Pokud instalujete modul runtime IoT Edge na zařízení s Windows, musíte dvakrát projít proxy serverem. První připojení stáhne soubor skriptu instalačního programu a druhé připojení se během instalace stáhne potřebné součásti. Informace o proxy serveru můžete nakonfigurovat v nastavení windows nebo zahrnout informace o proxy serveru přímo do příkazů PowerShellu.
Následující kroky ukazují příklad instalace systému Windows pomocí argumentu -proxy
:
Příkaz Invoke-WebRequest potřebuje informace o proxy serveru pro přístup ke skriptu instalačního programu. Potom příkaz Deploy-IoTEdge potřebuje informace o proxy serveru ke stažení instalačních souborů.
. {Invoke-WebRequest -proxy <proxy URL> -useb aka.ms/iotedge-win} | Invoke-Expression; Deploy-IoTEdge -proxy <proxy URL>
Příkaz Initialize-IoTEdge nemusí procházet proxy serverem, takže druhý krok vyžaduje pouze informace o proxy serveru pro Invoke-WebRequest.
. {Invoke-WebRequest -proxy <proxy URL> -useb aka.ms/iotedge-win} | Invoke-Expression; Initialize-IoTEdge
Pokud máte složité přihlašovací údaje pro proxy server, které nelze zahrnout do adresy URL, použijte -ProxyCredential
parametr v rámci -InvokeWebRequestParameters
. Příklad:
$proxyCredential = (Get-Credential).GetNetworkCredential()
. {Invoke-WebRequest -proxy <proxy URL> -ProxyCredential $proxyCredential -useb aka.ms/iotedge-win} | Invoke-Expression; `
Deploy-IoTEdge -InvokeWebRequestParameters @{ '-Proxy' = '<proxy URL>'; '-ProxyCredential' = $proxyCredential }
Další informace o parametrech proxy serveru naleznete v tématu Invoke-WebRequest. Další informace o parametrech instalace Windows najdete v tématu PowerShellové skripty pro IoT Edge ve Windows.
Konfigurace IoT Edge a Moby
IoT Edge spoléhá na dva démony spuštěné na zařízení IoT Edge. Démon Moby provádí webové požadavky na vyžádání imagí kontejnerů z registrů kontejnerů. Proces démon IoT Edge provádí webové požadavky na komunikaci se službou IoT Hub.
Moby i démony IoT Edge je potřeba nakonfigurovat tak, aby používaly proxy server pro průběžné funkce zařízení. Tento krok probíhá na zařízení IoT Edge během počátečního nastavení zařízení.
Démon Moby
Vzhledem k tomu, že moby je postaven na Dockeru, přečtěte si dokumentaci Dockeru ke konfiguraci démona Moby s proměnnými prostředí. Většina registrů kontejnerů (včetně DockerHubu a Azure Container Registryies) podporuje požadavky HTTPS, takže parametr, který byste měli nastavit, je HTTPS_PROXY. Pokud načítáte image z registru, který nepodporuje protokol TLS (Transport Layer Security), měli byste nastavit parametr HTTP_PROXY .
Zvolte článek, který se týká operačního systému zařízení IoT Edge:
- Konfigurace démona Dockeru v linuxovém démonu Moby na zařízeních s Linuxem uchovává název Dockeru.
- Konfigurace démona Dockeru ve Windows Démon Moby na zařízeních s Windows se nazývá iotedge-moby. Názvy se liší, protože na zařízení s Windows je možné paralelně spouštět Jak Docker Desktop, tak Moby.
Démon IoT Edge
Démon IoT Edge je nakonfigurovaný podobným způsobem jako démon Moby. Pomocí následujícího postupu nastavte proměnnou prostředí pro službu na základě vašeho operačního systému.
Proces démon IoT Edge vždy používá protokol HTTPS k odesílání požadavků do IoT Hubu.
Linux
Otevřete editor v terminálu a nakonfigurujte démon IoT Edge.
sudo systemctl edit iotedge
Zadejte následující text a nahraďte <adresu URL> proxy serveru adresou a portem proxy serveru. Pak uložte a ukončete.
[Service]
Environment=https_proxy=<proxy URL>
Aktualizujte správce služeb, aby si vybral novou konfiguraci pro IoT Edge.
sudo systemctl daemon-reload
Restartujte IoT Edge, aby se změny projevily.
sudo systemctl restart iotedge
Ověřte, že byla vytvořena proměnná prostředí a byla načtena nová konfigurace.
systemctl show --property=Environment iotedge
Windows využívající IoT Edge pro Linux ve Windows
Přihlaste se k IoT Edge pro Linux na virtuálním počítači s Windows:
Connect-EflowVm
Ke konfiguraci démona IoT Edge použijte stejný postup jako v části Linux výše.
Windows využívající kontejnery Windows
Otevřete okno PowerShellu jako správce a spuštěním následujícího příkazu upravte registr pomocí nové proměnné prostředí. Nahraďte <adresu URL> proxy serveru adresou a portem proxy serveru.
reg add HKLM\SYSTEM\CurrentControlSet\Services\iotedge /v Environment /t REG_MULTI_SZ /d https_proxy=<proxy URL>
Restartujte IoT Edge, aby se změny projevily.
Restart-Service iotedge
Konfigurace agenta IoT Edge
Agent IoT Edge je prvním modulem, který se spustí na jakémkoli zařízení IoT Edge. Poprvé se spustí na základě informací v konfiguračním souboru IoT Edge. Agent IoT Edge se pak připojí ke službě IoT Hub a načte manifesty nasazení, které deklarují, jaké další moduly by se měly na zařízení nasadit.
Tento krok probíhá jednou na zařízení IoT Edge během počátečního nastavení zařízení.
Na zařízení IoT Edge otevřete soubor config.yaml. V systémech Linux se tento soubor nachází ve složce /etc/iotedge/config.yaml. V systémech Windows se tento soubor nachází v umístění C:\ProgramData\iotedge\config.yaml. Konfigurační soubor je chráněný, takže pro přístup k němu potřebujete oprávnění správce. V systémech Linux použijte
sudo
příkaz před otevřením souboru v preferovaném textovém editoru. Ve Windows otevřete textový editor, jako je Poznámkový blok jako správce, a pak soubor otevřete.V souboru config.yaml vyhledejte část specifikace modulu agenta Edge. Definice agenta IoT Edge obsahuje parametr env , do kterého můžete přidat proměnné prostředí.
Odeberte složené závorky, které jsou zástupnými symboly pro parametr env, a přidejte novou proměnnou na nový řádek. Nezapomeňte, že odsazení v YAML jsou dvě mezery.
https_proxy: "<proxy URL>"
Modul runtime IoT Edge ve výchozím nastavení používá AMQP ke komunikaci se službou IoT Hub. Některé proxy servery blokují porty AMQP. Pokud tomu tak je, musíte také nakonfigurovat edgeAgent tak, aby používal AMQP přes WebSocket. Přidejte druhou proměnnou prostředí.
UpstreamProtocol: "AmqpWs"
Uložte změny souboru config.yaml a zavřete editor. Restartujte IoT Edge, aby se změny projevily.
Linux a IoT Edge pro Linux ve Windows:
sudo systemctl restart iotedge
Windows s využitím kontejnerů Windows:
Restart-Service iotedge
Přidejte parametr https_proxy do oddílu proměnných prostředí a nastavte adresu URL proxy serveru jako její hodnotu.
[agent] name = "edgeAgent" type = "docker" [agent.config] image = "mcr.microsoft.com/azureiotedge-agent:1.4" [agent.env] # "RuntimeLogLevel" = "debug" # "UpstreamProtocol" = "AmqpWs" "https_proxy" = "<proxy URL>"
Modul runtime IoT Edge ve výchozím nastavení používá AMQP ke komunikaci se službou IoT Hub. Některé proxy servery blokují porty AMQP. Pokud tomu tak je, musíte také nakonfigurovat edgeAgent tak, aby používal AMQP přes WebSocket. Odkomentujte
UpstreamProtocol
parametr.[agent.config] image = "mcr.microsoft.com/azureiotedge-agent:1.4" [agent.env] # "RuntimeLogLevel" = "debug" "UpstreamProtocol" = "AmqpWs" "https_proxy" = "<proxy URL>"
Uložte změny a zavřete editor. Použijte nejnovější změny.
sudo iotedge config apply
Ověřte, že se vaše nastavení proxy serveru šíří pomocí
docker inspect edgeAgent
oddíluEnv
. Pokud ne, kontejner se musí znovu vytvořit.sudo docker rm -f edgeAgent
Modul runtime IoT Edge by se měl znovu vytvořit
edgeAgent
během minuty. PoedgeAgent
opětovném spuštění kontejneru ověřte,docker inspect edgeAgent
že nastavení proxy serveru odpovídá konfiguračnímu souboru.
Konfigurace manifestů nasazení
Jakmile je zařízení IoT Edge nakonfigurované tak, aby fungovalo s proxy serverem, musíte v budoucích manifestech nasazení deklarovat proměnnou prostředí HTTPS_PROXY. Manifesty nasazení můžete upravit pomocí průvodce webu Azure Portal nebo úpravou souboru JSON manifestu nasazení.
Vždy nakonfigurujte dva moduly modulu runtime, edgeAgent a edgeHub, aby komunikovali přes proxy server, aby mohly udržovat připojení ke službě IoT Hub. Pokud odeberete informace o proxy serveru z modulu edgeAgent, jediným způsobem, jak obnovit připojení, je úprava konfiguračního souboru na zařízení, jak je popsáno v předchozí části.
Kromě modulů edgeAgent a edgeHub můžou další moduly potřebovat konfiguraci proxy serveru. Moduly, které potřebují přistupovat k prostředkům Azure kromě IoT Hubu, jako je úložiště objektů blob, musí mít HTTPS_PROXY proměnnou zadanou v souboru manifestu nasazení.
Následující postup platí po celou dobu životnosti zařízení IoT Edge.
portál Azure
Když k vytváření nasazení pro zařízení IoT Edge použijete Průvodce nastavením modulů , každý modul má oddíl Proměnné prostředí, kde můžete nakonfigurovat připojení proxy serveru.
Pokud chcete nakonfigurovat agenta IoT Edge a moduly centra IoT Edge, vyberte v prvním kroku průvodce nastavení modulu runtime.
Přidejte proměnnou prostředí https_proxy do definice modulu Centra IoT Edge i agenta IoT Edge. Pokud jste do konfiguračního souboru v zařízení IoT Edge zahrnuli proměnnou prostředí UpstreamProtocol , přidejte ji také do definice modulu agenta IoT Edge.
Všechny ostatní moduly, které přidáte do manifestu nasazení, se řídí stejným vzorem.
Soubory manifestu nasazení JSON
Pokud vytváříte nasazení pro zařízení IoT Edge pomocí šablon v editoru Visual Studio Code nebo ručně vytváříte soubory JSON, můžete proměnné prostředí přidat přímo do každé definice modulu.
Použijte následující formát JSON:
"env": {
"https_proxy": {
"value": "<proxy URL>"
}
}
Při zahrnutí proměnných prostředí by definice vašeho modulu měla vypadat jako v následujícím příkladu edgeHubu:
"edgeHub": {
"type": "docker",
"settings": {
"image": "mcr.microsoft.com/azureiotedge-hub:1.1",
"createOptions": "{}"
},
"env": {
"https_proxy": {
"value": "http://proxy.example.com:3128"
}
},
"status": "running",
"restartPolicy": "always"
}
Pokud jste do souboru confige.yaml v zařízení IoT Edge zahrnuli proměnnou prostředí UpstreamProtocol , přidejte ji také do definice modulu agenta IoT Edge.
"env": {
"https_proxy": {
"value": "<proxy URL>"
},
"UpstreamProtocol": {
"value": "AmqpWs"
}
}
Práce s proxy servery kontrolou provozu
Některé proxy servery, jako je Zscaler , můžou kontrolovat provoz šifrovaný protokolem TLS. Během kontroly provozu protokolu TLS certifikát vrácený proxy serverem není certifikát z cílového serveru, ale certifikát podepsaný vlastním kořenovým certifikátem proxy serveru. Ve výchozím nastavení certifikát tohoto proxy serveru nejsou moduly IoT Edge důvěryhodné (včetně edgeAgent a edgeHubu) a metoda handshake protokolu TLS selže.
Pokud chcete tento problém vyřešit, musí kořenový certifikát proxy serveru důvěřovat jak operačnímu systému, tak modulům IoT Edge.
Nakonfigurujte certifikát proxy serveru v úložišti důvěryhodných kořenových certifikátů vašeho hostitelského operačního systému. Další informace o instalaci kořenového certifikátu naleznete v tématu Instalace kořenové certifikační autority do úložiště certifikátů operačního systému.
Nakonfigurujte zařízení IoT Edge tak, aby komunikuje přes proxy server odkazováním na certifikát v sadě důvěryhodných certifikátů. Další informace o tom, jak nakonfigurovat sadu důvěryhodných certifikátů, najdete v tématu Správa důvěryhodné kořenové certifikační autority (sada důvěryhodnosti).
Pokud chcete nakonfigurovat podporu proxy kontroly provozu pro kontejnery, které nespravuje IoT Edge, obraťte se na svého poskytovatele proxy serveru.
Plně kvalifikované názvy domén (FQDN) cílů, se kterými IoT Edge komunikuje
Pokud má váš proxy bránu firewall, která vyžaduje, abyste povolili seznam všech plně kvalifikovaných názvů domén pro připojení k internetu, projděte si seznam povolených připojení ze zařízení IoT Edge a zjistěte, které plně kvalifikované názvy domén se mají přidat.
Další kroky
Přečtěte si další informace o rolích modulu runtime IoT Edge.
Řešení potíží s instalací a konfigurací s běžnými problémy a jejich řešeními pro Azure IoT Edge