Az IoT Edge-megoldás éles környezetben történő üzembe helyezésének előkészítése

A következőkre vonatkozik:IoT Edge 1.5 pipa IoT Edge 1.5 IoT Edge 1.4 pipa IoT Edge 1.4

Fontos

Az IoT Edge 1.5 LTS és az IoT Edge 1.4 LTS támogatott kiadások. Az IoT Edge 1.4 LTS 2024. november 12-én megszűnik. Ha egy korábbi kiadáson dolgozik, olvassa el az IoT Edge frissítése című témakört.

Ha készen áll arra, hogy az IoT Edge-megoldást a fejlesztésből éles környezetbe helyezze, győződjön meg arról, hogy konfigurálva van a folyamatos teljesítményhez.

A cikkben megadott információk nem egyenrangúak. A rangsoroláshoz minden szakasz olyan listákkal kezdődik, amelyek két szakaszra osztják a munkát: fontos , hogy az éles környezet előtt befejeződjön, vagy hasznos legyen tudni.

Eszközkonfiguráció

Az IoT Edge-eszközök a Raspberry Pi-től a laptopon át a kiszolgálón futó virtuális gépekig bármi lehetnek. Előfordulhat, hogy fizikailag vagy virtuális kapcsolaton keresztül fér hozzá az eszközhöz, vagy hosszabb ideig el lehet különíteni. Akárhogy is, győződjön meg arról, hogy megfelelően van konfigurálva.

  • Fontos

    • Éles tanúsítványok telepítése
    • Eszközfelügyeleti terv
    • Moby használata tárolómotorként
  • Hasznos

    • Felsőbb rétegbeli protokoll kiválasztása

Éles tanúsítványok telepítése

Minden éles IoT Edge-eszközhöz telepítve kell lennie egy eszköztanúsítvány-hitelesítésszolgáltatói (CA-) tanúsítványnak. A hitelesítésszolgáltatói tanúsítvány ezután deklarálva lesz az IoT Edge-futtatókörnyezetbe a konfigurációs fájlban. Fejlesztési és tesztelési forgatókönyvek esetén az IoT Edge-futtatókörnyezet ideiglenes tanúsítványokat hoz létre, ha a konfigurációs fájlban nincsenek deklarált tanúsítványok. Ezek az ideiglenes tanúsítványok azonban három hónap után lejárnak, és éles környezetben nem biztonságosak. Éles helyzetekben saját eszköz ca-tanúsítványt kell megadnia, akár önaláírt hitelesítésszolgáltatótól, akár kereskedelmi hitelesítésszolgáltatótól vásárolva.

Az eszköz hitelesítésszolgáltatói tanúsítványának szerepének megismeréséhez tekintse meg az Azure IoT Edge tanúsítványainak használatát ismertető témakört.

A tanúsítványok IoT Edge-eszközön való telepítéséről és a konfigurációs fájlból való hivatkozásukról további információt az IoT Edge-eszköz tanúsítványának kezelése című témakörben talál.

Eszközfelügyeleti terv

Mielőtt bármilyen eszközt éles környezetbe helyez, tudnia kell, hogyan fogja kezelni a jövőbeli frissítéseket. IoT Edge-eszköz esetén a frissíteni kívánt összetevők listája a következőket tartalmazhatja:

  • Az eszköz belső vezérlőprogramja
  • Operációsrendszer-kódtárak
  • Tárolómotor, például Moby
  • IoT Edge
  • CA-tanúsítványok

Az IoT Hub eszközfrissítése egy olyan szolgáltatás, amely lehetővé teszi az IoT Edge-eszközök levegőn keresztüli frissítéseinek (OTA) üzembe helyezését.

Az IoT Edge frissítésének alternatív módszerei fizikai vagy SSH-hozzáférést igényelnek az IoT Edge-eszközhöz. További információ: Az IoT Edge-futtatókörnyezet frissítése. Több eszköz frissítéséhez fontolja meg a frissítési lépések parancsfájlhoz való hozzáadását, vagy használjon egy olyan automatizálási eszközt, mint az Ansible.

Moby használata tárolómotorként

A tárolómotor minden IoT Edge-eszköz előfeltétele. Csak a moby-motor támogatott az éles környezetben. Más tárolómotorok, például a Docker, együttműködnek az IoT Edge-lel, és nem baj, ha ezeket a motorokat használják fejlesztésre. A moby-motor az Azure IoT Edge-ben való használat esetén terjeszthető újra, és a Microsoft biztosítja a motor karbantartását.

Felsőbb rétegbeli protokoll kiválasztása

Konfigurálhatja a protokollt (amely meghatározza a használt portot) az IoT Hub felé irányuló felsőbb rétegbeli kommunikációhoz mind az IoT Edge-ügynök, mind az IoT Edge-központ számára. Az alapértelmezett protokoll az AMQP, de a hálózati beállítástól függően érdemes lehet módosítani.

A két futtatókörnyezeti modul egy UpstreamProtocol környezeti változóval rendelkezik. A változó érvényes értékei a következők:

  • MQTT
  • AMQP
  • MQTTWS
  • AMQPWS

Konfigurálja az IoT Edge-ügynök UpstreamProtocol változóját az eszköz konfigurációs fájljában. Ha például az IoT Edge-eszköz egy olyan proxykiszolgáló mögött található, amely blokkolja az AMQP-portokat, előfordulhat, hogy konfigurálnia kell az IoT Edge-ügynököt, hogy az AMQP-t használja a WebSocketen (AMQPWS) keresztül az IoT Hubhoz való kezdeti kapcsolat létrehozásához.

Miután az IoT Edge-eszköz csatlakozik, mindenképpen konfigurálja az UpstreamProtocol változót mindkét futtatókörnyezeti modulhoz a jövőbeni üzemelő példányokban. Erre a folyamatra példa az IoT Edge-eszköz konfigurálása proxykiszolgálón keresztüli kommunikációhoz.

Telepítés

  • Hasznos
    • Konzisztens a felsőbb rétegbeli protokollal
    • Gazdagéptároló beállítása rendszermodulokhoz
    • Az IoT Edge-központ által használt memóriaterület csökkentése
    • A megfelelő modulrendszerképek használata az üzembehelyezési jegyzékekben
    • Vegye figyelembe az ikerméret korlátait egyéni modulok használatakor
    • A modulok frissítési módjának konfigurálása

Konzisztens a felsőbb rétegbeli protokollal

Ha az IoT Edge-ügynököt az IoT Edge-eszközön úgy konfigurálta, hogy az alapértelmezett AMQP protokolltól eltérő protokollt használjon, akkor minden későbbi üzembe helyezésnél deklarálnia kell ugyanazt a protokollt. Ha például az IoT Edge-eszköz egy olyan proxykiszolgáló mögött található, amely blokkolja az AMQP-portokat, akkor valószínűleg úgy konfigurálta az eszközt, hogy az AMQP-n keresztül csatlakozzon a WebSocketen (AMQPWS) keresztül. Amikor modulokat helyez üzembe az eszközön, konfigurálja ugyanazt az AMQPWS protokollt az IoT Edge-ügynökhöz és az IoT Edge Hubhoz, különben az alapértelmezett AMQP felülírja a beállításokat, és megakadályozza, hogy újra csatlakozzon.

Csak az UpstreamProtocol környezeti változót kell konfigurálnia az IoT Edge-ügynökhöz és az IoT Edge hubmodulokhoz. Minden további modul bármilyen protokollt alkalmaz a futtatókörnyezeti modulokban.

Erre a folyamatra példa az IoT Edge-eszköz konfigurálása proxykiszolgálón keresztüli kommunikációhoz.

Gazdagéptároló beállítása rendszermodulokhoz

Az IoT Edge-központ és az ügynökmodulok helyi tárolót használnak az állapot fenntartásához és a modulok, eszközök és felhő közötti üzenetküldés engedélyezéséhez. A nagyobb megbízhatóság és teljesítmény érdekében konfigurálja a rendszermodulokat úgy, hogy a tárolót a gazdagép fájlrendszerén használják.

További információ: Gazdagéptároló a rendszermodulokhoz.

Az IoT Edge Hub által használt memóriaterület csökkentése

Ha korlátozott memóriával rendelkező korlátozott eszközöket helyez üzembe, konfigurálhatja az IoT Edge Hubot úgy, hogy egyszerűbb kapacitásban fusson, és kevesebb lemezterületet használjon. Ezek a konfigurációk azonban korlátozzák az IoT Edge-központ teljesítményét, ezért keresse meg a megoldáshoz megfelelő egyensúlyt.

Ne optimalizálja a teljesítményt korlátozott eszközökön

Az IoT Edge hub alapértelmezés szerint teljesítményre van optimalizálva, így nagy mennyiségű memóriát próbál lefoglalni. Ez a konfiguráció stabilitási problémákat okozhat kisebb eszközökön, például a Raspberry Pi-en. Ha korlátozott erőforrásokkal rendelkező eszközöket helyez üzembe, érdemes lehet az OptimizeForPerformance környezeti változót hamis értékre állítani az IoT Edge hubon.

Ha az OptimizeForPerformance értéke igaz, az MQTT protokollfej a PooledByteBufferAllocatort használja, amely jobb teljesítménnyel rendelkezik, de több memóriát foglal le. A kiosztó nem működik jól a 32 bites operációs rendszereken vagy a kevés memóriával rendelkező eszközökön. Emellett a teljesítményre optimalizálva a RocksDb több memóriát foglal le a helyi tárolószolgáltatóként betöltött szerepéhez.

További információ: Stabilitási problémák kisebb eszközökön.

Nem használt protokollok letiltása

Az IoT Edge-központ teljesítményének optimalizálásának és a memóriahasználat csökkentésének másik módja, ha kikapcsolja a protokollfejeket a megoldásban nem használt protokollok esetében.

A protokollfejek úgy vannak konfigurálva, hogy logikai környezeti változókat állít be az IoT Edge hub modulhoz az üzembehelyezési jegyzékekben. A három változó a következő:

  • amqp Gépház__enabled
  • mqtt Gépház__enabled
  • http Gépház__enabled

Mindhárom változó két aláhúzáspontból áll, és igaz vagy hamis értékre állítható be.

Az üzenetek tárolási idejének csökkentése

Az IoT Edge Hub modul ideiglenesen tárolja az üzeneteket, ha azokat semmilyen okból nem lehet az IoT Hubba kézbesíteni. Beállíthatja, hogy az IoT Edge-központ mennyi ideig tart a kézbesítetlen üzenetekre, mielőtt lehetővé teszi számukra a lejáratukat. Ha memóriaproblémák merülnek fel az eszközön, csökkentheti a TimeToLiveSecs értékét az IoT Edge hub ikermoduljában.

Az timeToLiveSecs paraméter alapértelmezett értéke 7200 másodperc, ami két óra.

A megfelelő modulrendszerképek használata az üzembehelyezési jegyzékekben

Ha üres vagy nem megfelelő modulrendszerképet használ, az Edge-ügynök újrapróbálkozza a rendszerkép betöltését, ami további forgalmat okoz. Adja hozzá a megfelelő lemezképeket az üzembehelyezési jegyzékhez, hogy elkerülje a felesleges forgalom generálását.

Ne használjon modulképek hibakeresési verzióit

Amikor a tesztforgatókönyvekből éles forgatókönyvekbe lép, ne felejtse el eltávolítani a hibakeresési konfigurációkat az üzembehelyezési jegyzékekből. Ellenőrizze, hogy az üzembehelyezési jegyzékek egyik modulrendszerképe sem tartalmazza-e a .debug utótagot. Ha olyan beállításokat adott hozzá, amelyek lehetővé teszik a modulokban található portok hibakeresését, távolítsa el ezeket a létrehozási beállításokat is.

Vegye figyelembe az ikerméret korlátait egyéni modulok használatakor

Az egyéni modulokat tartalmazó üzembehelyezési jegyzék az EdgeAgent ikerpéldány része. Tekintse át a modul ikerméretére vonatkozó korlátozásokat.

Ha nagy számú modult helyez üzembe, előfordulhat, hogy kimeríti ezt az ikerméretkorlátot. Fontolja meg a kemény korlát néhány gyakori megoldását:

  • A konfigurációk tárolása az egyéni modul ikerpéldányában, amelynek saját korlátja van.
  • Tároljon olyan konfigurációt, amely nem szabad területre (azaz blobtárolóra) mutat.

A modulok frissítési módjának konfigurálása

Az üzembe helyezés frissítésekor az Edge Agent ikerfrissítésként kapja meg az új konfigurációt. Ha az új konfiguráció új vagy frissített modulrendszerképeket tartalmaz, az Edge Agent alapértelmezés szerint egymás után dolgozza fel az egyes modulokat:

  1. A frissített rendszerkép letöltése
  2. A futó modul le van állítva
  3. Új modulpéldány indul el
  4. A következő modulfrissítés feldolgozása folyamatban van

Bizonyos esetekben, például ha függőségek léteznek a modulok között, célszerű lehet először letölteni az összes frissített modulrendszerképet a futó modulok újraindítása előtt. Ez a modulfrissítési viselkedés úgy konfigurálható, hogy egy IoT Edge-ügynök környezeti változóját ModuleUpdateMode sztringértékre WaitForAllPullsállítja. További információ: IoT Edge környezeti változók.

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

Tárolókezelés

  • Fontos
    • Címkék használata a verziók kezeléséhez
    • Kötetek kezelése
  • Hasznos
    • Futtatókörnyezeti tárolók tárolása a privát regisztrációs adatbázisban
    • Kép szemétgyűjtésének konfigurálása

Címkék használata a verziók kezeléséhez

A címke egy docker-fogalom, amellyel megkülönböztetheti a Docker-tárolók verzióit. A címkék olyan utótagok, mint az 1.5 , amelyek egy tárolóadattár végére kerülnek. Például mcr.microsoft.com/azureiotedge-agent:1.5. A címkék nem módosíthatók, és bármikor módosíthatók úgy, hogy egy másik tárolóra mutasson, ezért a csapatnak meg kell egyeznie egy olyan konvencióról, amely a modulképek előrehaladtának frissítésekor követendő.

A címkék segítenek a frissítések kényszerítésében az IoT Edge-eszközökön. Amikor leküldi egy modul frissített verzióját a tárolóregisztrációs adatbázisba, növelje a címkét. Ezután küldjön le egy új üzembe helyezést az eszközökre a címke növelésével. A tárolómotor felismeri a növekményes címkét új verzióként, és lekéri a legújabb modulverziót az eszközére.

Az IoT Edge-futtatókörnyezet címkéi

Az IoT Edge-ügynök és az IoT Edge hub lemezképei a hozzájuk társított IoT Edge-verzióval vannak megjelölve. A futtatókörnyezeti rendszerképekkel kétféleképpen használhat címkéket:

  • Gördülő címkék – A verziószámnak csak az első két értékével szerezheti be a számjegyeknek megfelelő legújabb képet. Az 1.5 például mindig frissül, amikor új kiadás jelenik meg, hogy a legújabb 1.5.x verzióra mutasson. Ha az IoT Edge-eszköz tároló-futtatókörnyezete ismét lekéri a lemezképet, a futtatókörnyezet moduljai a legújabb verzióra frissülnek. Az Azure Portal alapértelmezett üzembe helyezései működés közbeni címkékre. Ezt a megközelítést fejlesztési célokra javasoljuk.

  • Adott címkék – A verziószám mindhárom értékével explicit módon állíthatja be a képverziót. Az 1.5.0 például nem változik a kezdeti kiadás után. Ha készen áll a frissítésre, deklarálhat egy új verziószámot az üzembe helyezési jegyzékben. Ez a megközelítés éles környezetben javasolt.

Kötetek kezelése

Az IoT Edge nem távolítja el a modultárolókhoz csatolt köteteket. Ez a működés szándékos, mivel lehetővé teszi az adatok megőrzését tárolópéldányok között, például frissítési forgatókönyvek esetében. Ha azonban ezek a kötetek használaton kívül maradnak, akkor a lemezterület elfogyásához, majd rendszerhibákhoz vezethet. Ha docker-köteteket használ a forgatókönyvben, akkor javasoljuk, hogy olyan docker-eszközöket használjon, mint a docker volume prune és a docker volume rm , hogy eltávolítsa a nem használt köteteket, különösen éles helyzetekben.

Futtatókörnyezeti tárolók tárolása a privát regisztrációs adatbázisban

Tudja, hogyan tárolhat tárolólemezképeket egyéni kódmodulokhoz a privát Azure-regisztrációs adatbázisban, de használhatja nyilvános tárolórendszerképek, például az edgeAgent és az edgeHub futtatókörnyezeti modulok tárolására is. Erre akkor lehet szükség, ha nagyon szigorú tűzfalkorlátozásokkal rendelkezik, mivel ezek a futtatókörnyezeti tárolók a Microsoft Container Registryben (MCR) vannak tárolva.

Az alábbi lépések bemutatják, hogyan lehet lekérni az edgeAgent és az edgeHub Docker-rendszerképét a helyi gépre, hogyan lehet visszaszedni, majd leküldni a privát beállításjegyzékbe, majd frissíteni a konfigurációs fájlt, hogy az eszközök tudják, hogy lekérik a rendszerképet a privát beállításjegyzékből.

  1. Kérje le az edgeAgent Docker-lemezképet a Microsoft beállításjegyzékéből. Szükség esetén frissítse a verziószámot.

    # Pull edgeAgent image
    docker pull mcr.microsoft.com/azureiotedge-agent:1.5
    
    # Pull edgeHub image
    docker pull mcr.microsoft.com/azureiotedge-hub:1.5
    
  2. Listázhatja az összes Docker-lemezképet, megkeresheti az edgeAgent és az edgeHub rendszerképeket, majd másolhatja a képazonosítókat.

    docker images
    
  3. Az edgeAgent és az edgeHub-rendszerképek újbóli címkézése. Cserélje le a szögletes zárójelben lévő értékeket a saját értékére.

    # 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.5
    
  4. Az edgeAgent és edgeHub-rendszerképek leküldése a privát beállításjegyzékbe. Cserélje le a zárójelben lévő értéket a saját értékére.

    # 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.5
    
  5. Frissítse az edgeAgent és edgeHub rendszermodulok deployment.template.json fájljának képhivatkozásait úgy, hogy mindkét modul esetében lecseréli mcr.microsoft.com a saját "beállításjegyzék-neve/kiszolgálója" helyére.

  6. Nyisson meg egy szövegszerkesztőt az IoT Edge-eszközön a konfigurációs fájl módosításához, hogy az tudjon a privát beállításjegyzék rendszerképéről.

    sudo nano /etc/aziot/config.toml
    
  7. A szövegszerkesztőben módosítsa a képértékeket a következő alatt [agent.config]: . Cserélje le a szögletes zárójelben lévő értékeket a saját értékére.

    [agent.config]
    image = "<registry-name/server>/azureiotedge-agent:1.5"
    
  8. Ha a privát beállításjegyzék hitelesítést igényel, állítsa be a hitelesítési paramétereket a következőben [agent.config.auth]: .

    [agent.config.auth]
    serveraddress = "<login-server>" # Almost always equivalent to <registry-name/server>
    username = "<username>"
    password = "<password>"
    
  9. Mentse a módosításokat, és lépjen ki a szövegszerkesztőből.

  10. Alkalmazza az IoT Edge konfigurációs módosítását.

    sudo iotedge config apply
    

    Az IoT Edge-futtatókörnyezet újraindul.

További információkért lásd:

Kép szemétgyűjtésének konfigurálása

A rendszerképek szemétgyűjtése az IoT Edge 1.4-s és újabb verzióinak egyik funkciója, amellyel automatikusan törölheti az IoT Edge-modulok által már nem használt Docker-rendszerképeket. Csak az IoT Edge-futtatókörnyezet által az üzembe helyezés részeként lekért Docker-rendszerképeket törli. A nem használt Docker-lemezképek törlése segít a lemezterület megőrzésében.

A szolgáltatás az IoT Edge gazdagép-összetevőjében, a aziot-edged szolgáltatásban van implementálva, és alapértelmezés szerint engedélyezve van. A törlés minden nap éjfélkor (helyi idő szerint) történik, és eltávolítja a hét nappal ezelőtt utoljára használt Docker-rendszerképeket. A törlési viselkedést vezérlő paramétereket a config.toml jelen szakasz későbbi részében ismertetjük és ismertetjük. Ha nincsenek megadva paraméterek a konfigurációs fájlban, a rendszer az alapértelmezett értékeket alkalmazza.

Az alábbi példa például a kép szemétgyűjtési szakasza config.toml az alapértelmezett értékeket használva:

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

Az alábbi táblázat a kép szemétgyűjtési paramétereit ismerteti. Minden paraméter megadása nem kötelező , és egyénileg is beállítható az alapértelmezett beállítások módosításához.

Paraméter Leírás Kötelező Alapértelmezett érték
enabled Engedélyezi a kép szemétgyűjtését. A funkció letiltását úgy is választhatja, hogy ezt a beállítást a következőre falsemódosítja: . Választható true
cleanup_recurrence A tisztítási feladat ismétlődési gyakoriságát szabályozza. Napok többszöröseként kell megadni, és nem lehet egy napnál rövidebb.

Például: 1d, 2d, 6d stb.
Választható 1d
image_age_cleanup_threshold Meghatározza a fel nem használt képek minimális korhatárát, mielőtt fontolóra venné a törlést, és napokban kell megadni. 0d értéket adhat meg a rendszerképek törléséhez, amint eltávolítja őket az üzembe helyezésből.

A rendszer a rendszerképeket használaton kívülinek tekinti, miután eltávolította őket az üzembe helyezésből.
Választható 7n
cleanup_time A törlési feladat futtatásakor az eszköz helyi idő szerint megadott napjának időpontja. 24 órás HH:MM formátumban kell lennie. Választható 00:00

Hálózat

  • Hasznos
    • Kimenő/bejövő konfiguráció áttekintése
    • IoT Edge-eszközök kapcsolatainak engedélyezése
    • Kommunikáció konfigurálása proxyn keresztül
    • DNS-kiszolgáló beállítása a tárolómotor beállításaiban

Kimenő/bejövő konfiguráció áttekintése

Az Azure IoT Hub és az IoT Edge közötti kommunikációs csatornák mindig kimenőnek vannak konfigurálva. A legtöbb IoT Edge-forgatókönyv esetében csak három kapcsolatra van szükség. A tárolómotornak csatlakoznia kell a modul lemezképét tartalmazó tárolóregisztrációs adatbázishoz (vagy adatbázishoz). Az IoT Edge-futtatókörnyezetnek csatlakoznia kell az IoT Hubhoz az eszközkonfigurációs információk lekéréséhez, valamint az üzenetek és a telemetriai adatok küldéséhez. Ha pedig automatikus kiépítést használ, az IoT Edge-nek csatlakoznia kell a Device Provisioning Service-hez. További információ: Tűzfal és portkonfigurációs szabályok.

IoT Edge-eszközök kapcsolatainak engedélyezése

Ha a hálózatkezelés beállításához explicit módon engedélyeznie kell az IoT Edge-eszközökről létesített kapcsolatokat, tekintse át az IoT Edge-összetevők alábbi listáját:

  • Az IoT Edge-ügynök állandó AMQP/MQTT-kapcsolatot nyit meg az IoT Hubhoz, esetleg WebSocketeken keresztül.
  • Az IoT Edge Hub egyetlen állandó AMQP-kapcsolatot vagy több MQTT-kapcsolatot nyit meg az IoT Hubhoz, esetleg WebSocketeken keresztül.
  • Az IoT Edge szolgáltatás időszakos HTTPS-hívásokat indít az IoT Hub felé.

Mindhárom esetben a teljes tartománynév (FQDN) megegyezik a mintával \*.azure-devices.net.

Tárolóregisztrációs adatbázisok

A tárolómotor HTTPS-en keresztül indít hívásokat a tárolóregisztrációs adatbázisokhoz. Az IoT Edge futtatókörnyezeti tároló lemezképeinek lekéréséhez az FQDN az mcr.microsoft.com. A tárolómotor az üzembe helyezés során konfigurált módon csatlakozik más regisztrációs adatbázisokhoz.

Ez az ellenőrzőlista a tűzfalszabályok kiindulópontja:

Teljes tartománynév (* = helyettesítő karakter) Kimenő TCP-portok Használat
mcr.microsoft.com 443 Microsoft Container Registry
*.data.mcr.microsoft.com 443 Tartalomkézbesítést biztosító adatvégpont
*.cdn.azcr.io 443 Modulok üzembe helyezése a Marketplace-ről az eszközökre
global.azure-devices-provisioning.net 443 Device Provisioning Service-hozzáférés (nem kötelező)
*.azurecr.io 443 Személyes és külső tárolóregisztrációs adatbázisok
*.blob.core.windows.net 443 Azure Container Registry-rendszerkép-eltérések letöltése a Blob Storage-ból
*.azure-devices.net 5671, 8883, 4431 IoT Hub-hozzáférés
*.docker.io 443 Docker Hub-hozzáférés (nem kötelező)

1Nyissa meg a 8883-es portot a biztonságos MQTT-hez, vagy az 5671-es portot a biztonságos AMQP-hez. Ha csak a 443-as porton keresztül tud kapcsolatokat létesíteni, akkor ezen protokollok bármelyike futtatható egy WebSocket-alagúton keresztül.

Mivel az IoT Hub IP-címe értesítés nélkül változhat, mindig használja a teljes tartománynevet a listakonfiguráció engedélyezéséhez. További információ: Az IoT Hub IP-címének ismertetése.

Ezen tűzfalszabályok némelyike az Azure Container Registrytől öröklődik. További információ: Szabályok konfigurálása egy Azure-tárolóregisztrációs adatbázis tűzfal mögötti eléréséhez.

A *.blob.core.windows.net teljes tartománynév helyettesítő karakterek általi engedélyezésének elkerülése érdekében engedélyezheti a dedikált adatvégpontokat az Azure Container Registryben. További információ: Dedikált adatvégpontok engedélyezése.

Feljegyzés

A REST és az adatvégpontok közötti konzisztens teljes tartománynév biztosításához 2020. június 15-től a Microsoft Container Registry adatvégpontja a következőre *.cdn.mscr.io változik:*.data.mcr.microsoft.com
További információ: Microsoft Container Registry ügyféloldali tűzfalszabályok konfigurálása

Ha nem szeretné úgy konfigurálni a tűzfalat, hogy engedélyezze a nyilvános tárolóregisztrációs adatbázisokhoz való hozzáférést, a rendszerképeket a privát tárolóregisztrációs adatbázisban tárolhatja, ahogyan azt a tárolóregisztrációs adatbázis futtatókörnyezeti tárolóinak tárolása című cikk ismerteti.

Azure IoT Identity Service

Az IoT Identity Service kiépítési és titkosítási szolgáltatásokat biztosít az Azure IoT-eszközökhöz. Az identitásszolgáltatás ellenőrzi, hogy a telepített verzió-e a legújabb verzió. Az ellenőrzés a következő teljes tartománynevek használatával ellenőrzi a verziót.

FQDN Kimenő TCP-portok Használat
aka.ms 443 Hiúság URL-címe, amely átirányítja a verziófájlt
raw.githubusercontent.com 443 A GitHubon üzemeltetett identitásszolgáltatás verziófájlja

Kommunikáció konfigurálása proxyn keresztül

Ha az eszközei proxykiszolgálót használó hálózaton lesznek üzembe helyezve, képesnek kell lenniük a proxyn keresztüli kommunikációra az IoT Hub és a tárolóregisztrációs adatbázisok eléréséhez. További információ: IoT Edge-eszköz konfigurálása proxykiszolgálón keresztüli kommunikációhoz.

DNS-kiszolgáló beállítása a tárolómotor beállításaiban

Adja meg a környezet DNS-kiszolgálóját a tárolómotor beállításai között. A DNS-kiszolgáló beállítása a motor által indított összes tárolómodulra vonatkozik.

  1. Az eszköz címtárában /etc/docker szerkessze a daemon.json fájlt. Hozza létre a fájlt, ha nem létezik.

  2. Adja hozzá a DNS-kulcsot , és állítsa be a DNS-kiszolgáló címét egy nyilvánosan elérhető DNS-szolgáltatásra. Ha a peremhálózati eszköz nem tud hozzáférni egy nyilvános DNS-kiszolgálóhoz, használjon akadálymentes DNS-kiszolgálócímet a hálózaton. Példa:

    {
        "dns": ["1.1.1.1"]
    }
    

Megoldáskezelés

  • Hasznos
    • Naplók és diagnosztikák beállítása
    • Alapértelmezett naplózási illesztőprogram beállítása
    • Tesztek és CI/CD-folyamatok megfontolása

Naplók és diagnosztikák beállítása

Linuxon az IoT Edge démon naplókat használ alapértelmezett naplózási illesztőprogramként. A parancssori eszközzel journalctl lekérdezheti a démonnaplókat.

Az 1.2-es verziótól kezdve az IoT Edge több démonra támaszkodik. Bár az egyes démonok naplói egyenként lekérdezhetők journalctl, a iotedge system parancsok kényelmes módot biztosítanak az egyesített naplók lekérdezésére.

  • Összevont iotedge parancs:

    sudo iotedge system logs
    
  • Egyenértékű journalctl parancs:

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

IoT Edge-telepítés tesztelésekor általában hozzáférhet az eszközeihez a naplók lekéréséhez és a hibaelhárításhoz. Üzembe helyezési forgatókönyv esetén előfordulhat, hogy nem rendelkezik ezzel a lehetőséggel. Gondolja át, hogyan fog adatokat gyűjteni az éles környezetben lévő eszközökről. Az egyik lehetőség egy naplózási modul használata, amely adatokat gyűjt a többi modulból, és elküldi azokat a felhőbe. A naplózási modul egyik példája a logspout-loganalytics, vagy saját tervezésű.

Alapértelmezett naplózási illesztőprogram beállítása

A Moby tárolómotor alapértelmezés szerint nem állít be tárolónapló-méretkorlátokat. Ez idővel ahhoz vezethet, hogy az eszköz megtelik naplókkal, és elfogy a lemezterület. Konfigurálja a tárolómotort úgy, hogy a naplózási local illesztőprogramot használja naplózási mechanizmusként. Local A naplózási illesztőprogram alapértelmezett naplóméretkorlátot kínál, alapértelmezés szerint naplóforgatást végez, és hatékonyabb fájlformátumot használ, amely segít megelőzni a lemezterület kimerülését. Dönthet úgy is, hogy különböző naplózási illesztőprogramokat használ, és igény szerint különböző méretkorlátokat állít be.

Beállítás: Az alapértelmezett naplózási illesztőprogram konfigurálása az összes tárolómodulhoz

A tárolómotort úgy konfigurálhatja, hogy egy adott naplózási log driver illesztőprogramot használjon, ha a naplóillesztő nevére állítja az értéket a daemon.json. Az alábbi példa az alapértelmezett naplózási illesztőprogramot a local naplóillesztőre állítja (ajánlott).

{
    "log-driver": "local"
}

A kulcsokat úgy is konfigurálhatja log-opts , hogy megfelelő értékeket használjanak a daemon.json fájlban. Az alábbi példa a naplóillesztőt állítja be local és állítja be a max-size beállításokat.max-file

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

Adja hozzá (vagy fűzze hozzá) ezeket az adatokat egy elnevezett daemon.json fájlhoz, és helyezze el a következő helyre:

  • /etc/docker/

A módosítások érvénybe lépéséhez újra kell indítani a tárolómotort.

Beállítás: Az egyes tárolómodulok naplóbeállításainak módosítása

Ezt az egyes modulok createOptions elemében teheti meg. Példa:

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

További lehetőségek Linux rendszereken

  • Konfigurálja úgy a tárolómotort, hogy naplókat küldjön a naplókba systemdaz alapértelmezett naplózási illesztő beállításávaljournald.

  • Rendszeres időközönként távolítsa el a régi naplókat az eszközről egy logrotate eszköz telepítésével. Használja a következő fájlspecifikációt:

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

Tesztek és CI/CD-folyamatok megfontolása

A leghatékonyabb IoT Edge-üzembe helyezési forgatókönyv érdekében érdemes lehet integrálni az éles üzembe helyezést a tesztelési és CI/CD-folyamatokba. Az Azure IoT Edge több CI/CD platformot támogat, köztük az Azure DevOpsot is. További információ: Folyamatos integráció és folyamatos üzembe helyezés az Azure IoT Edge-ben.

Biztonsági szempontok

  • Fontos
    • A tárolóregisztrációs adatbázishoz való hozzáférés kezelése
    • Tároló hozzáférésének korlátozása gazdagéperőforrásokhoz

A tárolóregisztrációs adatbázishoz való hozzáférés kezelése

Mielőtt üzembe helyeznénk a modulokat az éles IoT Edge-eszközökön, győződjön meg arról, hogy szabályozni szeretné a tárolóregisztrációs adatbázishoz való hozzáférést, hogy a kívülállók ne férhessenek hozzá a tárolórendszerképekhez, és ne végezzenek módosításokat. Tárolólemezképek kezeléséhez használjon privát tárolóregisztrációs adatbázist.

Az oktatóanyagokban és egyéb dokumentációban arra utasítjuk, hogy ugyanazt a tárolóregisztrációs adatbázis hitelesítő adatait használja az IoT Edge-eszközön, mint a fejlesztői gépen. Ezek az utasítások csak a tesztelési és fejlesztési környezetek egyszerűbb beállításában nyújtanak segítséget, és éles környezetben nem követendők.

A beállításjegyzékhez való biztonságosabb hozzáféréshez számos hitelesítési lehetőség közül választhat. A népszerű és ajánlott hitelesítés egy Olyan Active Directory-szolgáltatásnév használata, amely jól használható alkalmazásokhoz vagy szolgáltatásokhoz tárolólemezképek automatikus vagy más felügyelet nélküli (fej nélküli) lekéréséhez, ahogyan az IoT Edge-eszközök teszik. Egy másik lehetőség az adattár hatókörű jogkivonatok használata, amelyek lehetővé teszik, hogy hosszú vagy rövid élettartamú identitásokat hozzon létre, amelyek csak az Azure Container Registryben vannak létrehozva, és hatókör-hozzáféréssel rendelkeznek az adattár szintjéhez.

Szolgáltatásnév létrehozásához futtassa a két szkriptet a szolgáltatásnév létrehozása című szakaszban leírtak szerint. Ezek a szkriptek a következő feladatokat hajtják végre:

  • Az első szkript létrehozza a szolgáltatásnevet. A szolgáltatásnév azonosítóját és a szolgáltatásnév jelszavát adja ki. Ezeket az értékeket biztonságosan tárolhatja a rekordokban.

  • A második szkript szerepkör-hozzárendeléseket hoz létre a szolgáltatásnév számára, amelyek szükség esetén később futtathatók. Javasoljuk, hogy alkalmazza az acrPull felhasználói szerepkört a role paraméterre. A szerepkörök listájáért tekintse meg az Azure Container Registry szerepköreit és engedélyeit.

A szolgáltatásnévvel történő hitelesítéshez adja meg az első szkriptből beszerzett szolgáltatásnév-azonosítót és jelszót. Adja meg ezeket a hitelesítő adatokat az üzembehelyezési jegyzékben.

  • A felhasználónévhez vagy ügyfélazonosítóhoz adja meg a szolgáltatásnév azonosítóját.

  • A jelszó vagy az ügyfél titkos kódjának megadásához adja meg a szolgáltatásnév jelszavát.


Adattár hatókörű jogkivonatok létrehozásához kövesse a tárház hatókörű jogkivonat létrehozását.

Az adattár hatókörű jogkivonatok használatával történő hitelesítéshez adja meg az adattár hatókörű jogkivonat létrehozása után beszerzett jogkivonat nevét és jelszavát. Adja meg ezeket a hitelesítő adatokat az üzembehelyezési jegyzékben.

  • A felhasználónévhez adja meg a jogkivonat felhasználónevét.

  • A jelszóhoz adja meg a jogkivonat egyik jelszavát.

Feljegyzés

A fokozott biztonsági hitelesítés implementálása után tiltsa le a Rendszergazda felhasználói beállítást, hogy az alapértelmezett felhasználónév/jelszó hozzáférés már ne legyen elérhető. Az Azure Portal tárolóregisztrációs adatbázisában a bal oldali panel menüjében válassza a Gépház alatti hozzáférési kulcsokat.

Tároló hozzáférésének korlátozása gazdagéperőforrásokhoz

A megosztott gazdaerőforrások modulok közti egyensúlyának fenntartása érdekében javasoljuk, hogy korlátozza az erőforrás-felhasználást modulonként. Ezek a korlátok biztosítják, hogy egy modul nem használhat túl sok memóriát vagy processzort, és megakadályozzák, hogy más folyamatok fussanak az eszközön. Az IoT Edge platform alapértelmezés szerint nem korlátozza az erőforrásokat a modulok számára, mivel annak megismeréséhez, hogy egy adott modulnak mennyi erőforrásra van szüksége az optimális futáshoz, tesztelésre van szükség.

A Docker bizonyos korlátozásokat biztosít, amelyekkel korlátozhatja az erőforrásokat, például a memóriát és a processzorhasználatot. További információ: Futtatókörnyezeti lehetőségek memóriával, CPU-kkal és GPU-kkal.

Ezek a korlátozások az egyes modulokra az üzembehelyezési jegyzékek létrehozási beállításainak használatával alkalmazhatók. További információ: Tároló-létrehozási beállítások konfigurálása az IoT Edge-modulokhoz.

Következő lépések