IoT Edge çözümünüzü üretimde dağıtmaya hazırlanma

Şunlar için geçerlidir: IoT Edge 1.5 onay işareti IoT Edge 1.5 IoT Edge 1.4 onay işareti IoT Edge 1.4

Önemli

IoT Edge 1.5 LTS ve IoT Edge 1.4 LTS desteklenen sürümlerdir. IoT Edge 1.4 LTS, 12 Kasım 2024'te kullanım ömrü sona erer. Önceki bir sürümdeyseniz bkz. IoT Edge’i güncelleştirme.

IoT Edge çözümünüzü geliştirme aşamasından üretime almaya hazır olduğunuzda, devam eden performans için yapılandırıldığından emin olun.

Bu makalede sağlanan bilgilerin tümü eşit değildir. Öncelik belirlemenize yardımcı olmak için, her bölüm çalışmayı iki bölüme ayıran listelerle başlar: üretime geçmeden önce tamamlanması önemlidir veya bilmenize yardımcı olur .

Cihaz yapılandırması

IoT Edge cihazları Raspberry Pi'den dizüstü bilgisayara ve sunucuda çalışan bir sanal makineye kadar her şey olabilir. Cihaza fiziksel olarak veya sanal bir bağlantı üzerinden erişiminiz olabilir veya uzun süreler boyunca yalıtılmış olabilir. Her iki durumda da uygun şekilde çalışacak şekilde yapılandırıldığından emin olmak istersiniz.

  • Önemli

    • Üretim sertifikalarını yükleme
    • Cihaz yönetim planına sahip olmanız
    • Moby'yi kapsayıcı altyapısı olarak kullanın. Ubuntu Core tutturmalarını kullanıyorsanız Docker snap'e Canonical tarafından hizmet sağlanır ve üretim senaryoları için desteklenir.
  • Yardımsever

    • Yukarı akış protokollerini seçme

Üretim sertifikalarını yükleme

Üretimdeki her IoT Edge cihazının üzerinde bir cihaz sertifika yetkilisi (CA) sertifikası yüklü olmalıdır. Bu CA sertifikası daha sonra yapılandırma dosyasında IoT Edge çalışma zamanına bildirilir. Geliştirme ve test senaryoları için IoT Edge çalışma zamanı, yapılandırma dosyasında hiçbir sertifika bildirilmemişse geçici sertifikalar oluşturur. Ancak bu geçici sertifikaların süresi üç ay sonra dolar ve üretim senaryoları için güvenli değildir. Üretim senaryolarında, otomatik olarak imzalanan bir sertifika yetkilisinden veya ticari sertifika yetkilisinden satın alınan kendi Edge CA sertifikanızı sağlamanız gerekir.

Edge CA sertifikasının rolünü anlamak için bkz . Azure IoT Edge sertifikaları nasıl kullanır?

IoT Edge cihazına sertifika yükleme ve yapılandırma dosyasından bunlara başvurma hakkında daha fazla bilgi için bkz . IoT Edge cihazında sertifikayı yönetme.

Cihaz yönetim planına sahip olmanız

Herhangi bir cihazı üretime yerleştirmeden önce gelecekteki güncelleştirmeleri nasıl yöneteceğini bilmeniz gerekir. IoT Edge cihazı için güncelleştirilecek bileşenlerin listesi şunları içerebilir:

  • Cihaz üretici yazılımı
  • İşletim sistemi kitaplıkları
  • Moby gibi kapsayıcı altyapısı
  • IoT Edge
  • CA sertifikaları

IoT Hub için Cihaz Güncelleştirmesi, IoT Edge cihazlarınız için havadan güncelleştirmeler (OTA) dağıtmanızı sağlayan bir hizmettir.

IoT Edge'i güncelleştirmek için alternatif yöntemler IoT Edge cihazına fiziksel veya SSH erişimi gerektirir. Daha fazla bilgi için bkz . IoT Edge çalışma zamanını güncelleştirme. Birden çok cihazı güncelleştirmek için, güncelleştirme adımlarını bir betike eklemeyi veya Ansible gibi bir otomasyon aracını kullanmayı göz önünde bulundurun.

Kapsayıcı altyapısı

Kapsayıcı altyapısı, tüm IoT Edge cihazları için önkoşuldur. Moby altyapısı üretimde desteklenir. Ubuntu Core tutturmalarını kullanıyorsanız Docker snap'e Canonical tarafından hizmet sağlanır ve üretim senaryoları için desteklenir. Docker gibi diğer kapsayıcı altyapıları IoT Edge ile çalışır ve bu altyapıları geliştirme için kullanabilirsiniz. Moby altyapısı Azure IoT Edge ile kullanıldığında yeniden dağıtılabilir ve Microsoft bu altyapı için hizmet sağlar.

Yukarı akış protokollerini seçme

Hem IoT Edge aracısı hem de IoT Edge hub'ı için IoT Hub'a yukarı akış iletişimi için protokolü yapılandırabilirsiniz (kullanılan bağlantı noktasını belirler). Varsayılan protokol AMQP'dir, ancak bunu ağ kurulumunuza bağlı olarak değiştirmek isteyebilirsiniz.

İki çalışma zamanı modülünün her ikisi de bir UpstreamProtocol ortam değişkenine sahiptir. Değişkenin geçerli değerleri şunlardır:

  • MQTT
  • AMQP
  • MQTTWS
  • AMQPWS

Cihazın kendisindeki yapılandırma dosyasında IoT Edge aracısı için UpstreamProtocol değişkenini yapılandırın. Örneğin, IoT Edge cihazınız AMQP bağlantı noktalarını engelleyen bir ara sunucunun arkasındaysa, IoT Hub'a ilk bağlantıyı kurmak için IoT Edge aracısını WebSocket üzerinden AMQP (AMQPWS) kullanacak şekilde yapılandırmanız gerekebilir.

IoT Edge cihazınız bağlandıktan sonra, gelecekteki dağıtımlarda her iki çalışma zamanı modülü için de UpstreamProtocol değişkenini yapılandırmaya devam edin. Bu işlemin bir örneği, Bir IoT Edge cihazını ara sunucu üzerinden iletişim kuracak şekilde yapılandırma bölümünde verilmiştir.

Dağıtım

  • Yardımsever
    • Yukarı akış protokolüyle tutarlı olun
    • Sistem modülleri için konak depolamayı ayarlama
    • IoT Edge hub'ı tarafından kullanılan bellek alanını azaltma
    • Dağıtım bildirimlerinde doğru modül görüntülerini kullanma
    • Özel modülleri kullanırken ikiz boyutu sınırlarına dikkat edin
    • Modül güncelleştirmelerinin nasıl uygulanacağını yapılandırma

Yukarı akış protokolüyle tutarlı olun

IoT Edge cihazınızdaKi IoT Edge aracısını varsayılan AMQP'den farklı bir protokol kullanacak şekilde yapılandırdıysanız, gelecekteki tüm dağıtımlarda aynı protokolü bildirmeniz gerekir. Örneğin, IoT Edge cihazınız AMQP bağlantı noktalarını engelleyen bir ara sunucunun arkasındaysa, büyük olasılıkla cihazı WebSocket (AMQPWS) üzerinden AMQP üzerinden bağlanacak şekilde yapılandırmışsınızdır. Cihaza modül dağıttığınızda IoT Edge aracısı ve IoT Edge hub'ı için aynı AMQPWS protokolünü yapılandırın, aksi halde varsayılan AMQP ayarları geçersiz kılar ve yeniden bağlanmanızı engeller.

Yalnızca IoT Edge aracısı ve IoT Edge hub modülleri için UpstreamProtocol ortam değişkenini yapılandırmanız gerekir. Tüm ek modüller, çalışma zamanı modüllerinde ayarlanan protokolü benimser.

Bu işlemin bir örneği, Bir IoT Edge cihazını ara sunucu üzerinden iletişim kuracak şekilde yapılandırma bölümünde verilmiştir.

Sistem modülleri için konak depolamayı ayarlama

IoT Edge hub'ı ve aracı modülleri durumu korumak ve modüller, cihazlar ve bulut arasında mesajlaşmayı etkinleştirmek için yerel depolamayı kullanır. Daha yüksek güvenilirlik ve performans için sistem modüllerini konak dosya sisteminde depolamayı kullanacak şekilde yapılandırın.

Daha fazla bilgi için bkz . Sistem modülleri için konak depolama.

IoT Edge hub'ı tarafından kullanılan bellek alanını azaltma

Sınırlı belleği olan kısıtlı cihazlar dağıtıyorsanız, IoT Edge hub'ını daha kolay bir kapasitede çalışacak ve daha az disk alanı kullanacak şekilde yapılandırabilirsiniz. Ancak bu yapılandırmalar IoT Edge hub'ının performansını sınırlandırdığından çözümünüz için uygun dengeyi bulun.

Kısıtlanmış cihazlarda performans için iyileştirme yapma

IoT Edge hub'ı varsayılan olarak performans için iyileştirildiğinden büyük bellek öbekleri ayırmaya çalışır. Bu yapılandırma Raspberry Pi gibi daha küçük cihazlarda kararlılık sorunlarına neden olabilir. Kısıtlı kaynakları olan cihazları dağıtıyorsanız, IoT Edge hub'ına OptimizeForPerformance ortam değişkenini false olarak ayarlamak isteyebilirsiniz.

OptimizeForPerformance true olarak ayarlandığında, MQTT protokol başlığı daha iyi performansa sahip olan ancak daha fazla bellek ayıran PooledByteBufferAllocator'ı kullanır. Ayırıcı, 32 bit işletim sistemlerinde veya düşük belleğe sahip cihazlarda iyi çalışmaz. Ayrıca, performans için iyileştirildiğinde RocksDb, yerel depolama sağlayıcısı rolü için daha fazla bellek ayırır.

Daha fazla bilgi için bkz . Daha küçük cihazlarda kararlılık sorunları.

Kullanılmayan protokolleri devre dışı bırakma

IoT Edge hub'ının performansını iyileştirmenin ve bellek kullanımını azaltmanın bir diğer yolu da çözümünüzde kullanmadığınız protokollerin protokol başlıklarını kapatmaktır.

Protokol başlıkları, dağıtım bildirimlerinizde IoT Edge hub modülü için boole ortam değişkenleri ayarlanarak yapılandırılır. Üç değişken şunlardır:

  • amqpSettings__enabled
  • mqttSettings__enabled
  • httpSettings__enabled

Üç değişkenin de iki alt çizgi vardır ve true veya false olarak ayarlanabilir.

İletiler için depolama süresini azaltma

IoT Edge hub modülü, herhangi bir nedenle IoT Hub'a teslim edilemeyen iletileri geçici olarak depolar. Süresi dolmadan önce IoT Edge hub'sının teslim edilmemiş iletilerde ne kadar süreyle dayanabileceğini yapılandırabilirsiniz. Cihazınızda bellekle ilgili endişeleriniz varsa IoT Edge hub modül ikizindeki timeToLiveSecs değerini düşürebilirsiniz.

timeToLiveSecs parametresinin varsayılan değeri 7200 saniyedir ve bu da iki saattir.

Dağıtım bildirimlerinde doğru modül görüntülerini kullanma

Boş veya yanlış bir modül görüntüsü kullanılırsa, Edge aracısı görüntüyü yüklemeyi yeniden denenir ve bu da ek trafiğin oluşturulmasına neden olur. Gereksiz trafik oluşturmamak için dağıtım bildirimine doğru görüntüleri ekleyin.

Modül görüntülerinin hata ayıklama sürümlerini kullanmayın

Test senaryolarından üretim senaryolarına geçerken, dağıtım bildirimlerinden hata ayıklama yapılandırmalarını kaldırmayı unutmayın. Dağıtım bildirimlerindeki modül görüntülerinden hiçbirinin .debug sonekini içermediğini denetleyin. Hata ayıklama için modüllerdeki bağlantı noktalarını kullanıma sunan oluşturma seçenekleri eklediyseniz, bu oluşturma seçeneklerini de kaldırın.

Özel modülleri kullanırken ikiz boyutu sınırlarına dikkat edin

Özel modüller içeren dağıtım bildirimi, EdgeAgent ikizinin bir parçasıdır. Modül ikizi boyutuyla ilgili sınırlamayı gözden geçirin.

Çok sayıda modül dağıtırsanız bu ikiz boyutu sınırını tüketebilirsiniz. Bu sabit sınıra yönelik bazı yaygın risk azaltmalarını göz önünde bulundurun:

  • Herhangi bir yapılandırmayı kendi sınırı olan özel modül ikizinde depolayın.
  • Alanı sınırlı olmayan bir konuma (yani blob deposuna) işaret eden bazı yapılandırmaları depolayın.

Modül güncelleştirmelerinin nasıl uygulanacağını yapılandırma

Bir dağıtım güncelleştirildiğinde Edge Aracısı yeni yapılandırmayı ikiz güncelleştirmesi olarak alır. Yeni yapılandırmada yeni veya güncelleştirilmiş modül görüntüleri varsa, Edge Aracısı varsayılan olarak her modülü sıralı olarak işler:

  1. Güncelleştirilmiş görüntü indirildi
  2. Çalışan modül durduruldu
  3. Yeni bir modül örneği başlatıldı
  4. Sonraki modül güncelleştirmesi işlenir

Bazı durumlarda, örneğin modüller arasında bağımlılıklar olduğunda, çalışan modülleri yeniden başlatmadan önce tüm güncelleştirilmiş modül görüntülerinin indirilmesi istenebilir. Bu modül güncelleştirme davranışı, bir IoT Edge Aracısı ortam değişkeni ModuleUpdateMode dize değerine WaitForAllPullsayarlanarak yapılandırılabilir. Daha fazla bilgi için bkz . IoT Edge Ortam Değişkenleri.

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

Kapsayıcı yönetimi

  • Önemli
    • Sürümleri yönetmek için etiketleri kullanma
    • Birimleri yönetme
  • Yardımsever
    • Çalışma zamanı kapsayıcılarını özel kayıt defterinizde depolama
    • Görüntü atık toplamayı yapılandırma

Sürümleri yönetmek için etiketleri kullanma

Etiket, docker kapsayıcılarının sürümlerini ayırt etmek için kullanabileceğiniz bir docker kavramıdır. Etiketler, bir kapsayıcı deposunun sonuna giden 1.5 gibi soneklerdir. Örneğin, mcr.microsoft.com/azureiotedge-agent:1.5. Etiketler değişebilir ve istediğiniz zaman başka bir kapsayıcıya işaret eden şekilde değiştirilebilir, bu nedenle modül görüntülerinizi güncelleştirdiğinizde ekibinizin bir kural üzerinde anlaşmaya varması gerekir.

Etiketler, IoT Edge cihazlarınızda güncelleştirmeleri zorunlu kılmanıza da yardımcı olur. Kapsayıcı kayıt defterinize modülün güncelleştirilmiş bir sürümünü gönderdiğinizde etiketi artırın. Ardından, etiketi artırılmış olarak cihazlarınıza yeni bir dağıtım göndererek. Kapsayıcı altyapısı, artırılan etiketi yeni bir sürüm olarak tanır ve en son modül sürümünü cihazınıza çeker.

IoT Edge çalışma zamanı etiketleri

IoT Edge aracısı ve IoT Edge hub görüntüleri ilişkili oldukları IoT Edge sürümüyle etiketlenir. Çalışma zamanı görüntüleriyle etiketleri kullanmanın iki farklı yolu vardır:

  • Sıralı etiketler - Bu basamaklarla eşleşen en son görüntüyü almak için sürüm numarasının yalnızca ilk iki değerini kullanın. Örneğin, en son 1.5.x sürümüne işaret eden yeni bir sürüm olduğunda 1.5 güncelleştirilir. IoT Edge cihazınızdaki kapsayıcı çalışma zamanı görüntüyü yeniden çekerse, çalışma zamanı modülleri en son sürüme güncelleştirilir. Azure portalından gelen dağıtımlar varsayılan olarak sıralı etiketlere yapılır. Bu yaklaşım geliştirme amacıyla önerilir.

  • Belirli etiketler - Görüntü sürümünü açıkça ayarlamak için sürüm numarasının üç değerini de kullanın. Örneğin, 1.5.0 ilk sürümünden sonra değişmez. Güncelleştirmeye hazır olduğunuzda dağıtım bildiriminde yeni bir sürüm numarası bildirebilirsiniz. Bu yaklaşım üretim amacıyla önerilir.

Birimleri yönetme

IoT Edge modül kapsayıcılarına bağlı birimleri kaldırmaz. Bu davranış, verilerin yükseltme senaryoları gibi kapsayıcı örnekleri arasında kalıcı hal almasına izin verdiğinden tasarım gereğidir. Ancak, bu birimler kullanılmamış durumda bırakılırsa, disk alanı tükenmesine ve ardından oluşabilecek sistem hatalarına yol açabilir. Senaryonuzda docker birimleri kullanıyorsanız, özellikle üretim senaryolarında kullanılmayan birimleri kaldırmak için docker volume prune ve docker volume rm gibi docker araçlarını kullanmanızı öneririz.

Çalışma zamanı kapsayıcılarını özel kayıt defterinizde depolama

Özel azure kayıt defterinizde özel kod modülleri için kapsayıcı görüntülerini depolamayı biliyorsunuz, ancak edgeAgent ve edgeHub çalışma zamanı modülleri gibi genel kapsayıcı görüntülerini depolamak için de kullanabilirsiniz. Bu çalışma zamanı kapsayıcıları Microsoft Container Registry'de (MCR) depolandığından sıkı güvenlik duvarı kısıtlamalarınız varsa bunu yapmanız gerekebilir.

Aşağıdaki adımlar, edgeAgent ve edgeHub'ın Docker görüntüsünü yerel makinenize çekmeyi, yeniden kaydetmeyi, özel kayıt defterinize göndermeyi, ardından yapılandırma dosyanızı güncelleştirmeyi ve böylece cihazlarınızın görüntüyü özel kayıt defterinizden çekmeyi bilmesini sağlar.

  1. Microsoft kayıt defterinden edgeAgent Docker görüntüsünü çekin. Gerekirse sürüm numarasını güncelleştirin.

    # 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. Tüm Docker görüntülerinizi listeleyin, edgeAgent ve edgeHub görüntülerini bulun ve görüntü kimliklerini kopyalayın.

    docker images
    
  3. edgeAgent ve edgeHub görüntülerinizi yeniden etiketleyin. Köşeli ayraç içindeki değerleri kendi değerlerinizle değiştirin.

    # 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. edgeAgent ve edgeHub görüntülerinizi özel kayıt defterinize gönderin. Köşeli ayraç içindeki değeri kendi değerinizle değiştirin.

    # 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. edgeAgent ve edgeHub sistem modülleri için deployment.template.json dosyasındaki görüntü başvurularını her iki modül için de kendi "kayıt defteri-adı/sunucunuz" ile değiştirerek mcr.microsoft.com güncelleştirin.

  6. Özel kayıt defteri görüntünüzü bilmesi için yapılandırma dosyasını değiştirmek için IoT Edge cihazınızda bir metin düzenleyicisi açın.

    sudo nano /etc/aziot/config.toml
    
  7. Metin düzenleyicisinde altında [agent.config]görüntü değerlerinizi değiştirin. Köşeli ayraç içindeki değerleri kendi değerlerinizle değiştirin.

    [agent.config]
    image = "<registry-name/server>/azureiotedge-agent:1.5"
    
  8. Özel kayıt defteriniz kimlik doğrulaması gerektiriyorsa, içinde kimlik doğrulama parametrelerini [agent.config.auth]ayarlayın.

    [agent.config.auth]
    serveraddress = "<login-server>" # Almost always equivalent to <registry-name/server>
    username = "<username>"
    password = "<password>"
    
  9. Değişikliklerinizi kaydedin ve metin düzenleyicinizden çıkın.

  10. IoT Edge yapılandırma değişikliğini uygulayın.

    sudo iotedge config apply
    

    IoT Edge çalışma zamanınız yeniden başlatılır.

Daha fazla bilgi için bkz.

Görüntü atık toplamayı yapılandırma

Görüntü atık toplama, IoT Edge v1.4 ve sonraki sürümlerde artık IoT Edge modülleri tarafından kullanılmayan Docker görüntülerini otomatik olarak temizlemeye yönelik bir özelliktir. Yalnızca dağıtımın bir parçası olarak IoT Edge çalışma zamanı tarafından çekilen Docker görüntülerini siler. Kullanılmayan Docker görüntülerinin silinmesi disk alanından tasarruf yapmanıza yardımcı olur.

Bu özellik IoT Edge'in ana bilgisayar bileşeni olan hizmette aziot-edged uygulanır ve varsayılan olarak etkinleştirilir. Temizleme işlemi her gün gece yarısı yapılır (cihaz yerel saati) ve son yedi gün önce kullanılan kullanılmayan Docker görüntülerini kaldırır. Temizleme davranışını denetlemek için parametreler bölümünde ayarlanır config.toml ve bu bölümün ilerleyen bölümlerinde açıklanmıştır. Yapılandırma dosyasında parametreler belirtilmezse, varsayılan değerler uygulanır.

Örneğin, varsayılan değerleri kullanan görüntü çöp toplama bölümü aşağıda verilmiştir config.toml :

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

Aşağıdaki tabloda görüntü atık toplama parametreleri açıklanmaktadır. Tüm parametreler isteğe bağlıdır ve varsayılan ayarları değiştirmek için ayrı ayrı ayarlanabilir.

Parametre Açıklama Gerekli Default value
enabled Görüntü çöp toplamayı etkinleştirir. Bu ayarı falseolarak değiştirerek özelliği devre dışı bırakabilirsiniz. İsteğe bağlı true
cleanup_recurrence Temizleme görevinin yinelenme sıklığını denetler. Birden çok gün olarak belirtilmelidir ve bir günden az olamaz.

Örneğin: 1d, 2d, 6d vb.
İsteğe bağlı 1d
image_age_cleanup_threshold Temizlemeyi dikkate almadan önce kullanılmayan görüntülerin en düşük yaş eşiğini tanımlar ve gün içinde belirtilmelidir. Görüntülerin dağıtımdan kaldırıldıkları anda temizlenmesi için 0d olarak belirtebilirsiniz.

Görüntüler dağıtımdan kaldırıldıktan sonra kullanılmamış olarak kabul edilir.
İsteğe bağlı 7 g
cleanup_time Temizleme görevinin çalıştırıldığında cihazın yerel saatiyle günün saati. 24 saat SS:MM biçiminde olmalıdır. İsteğe bağlı 00.00

  • Yardımsever
    • Giden/gelen yapılandırmasını gözden geçirme
    • IoT Edge cihazlarından bağlantılara izin ver
    • Ara sunucu üzerinden iletişimi yapılandırma
    • Kapsayıcı altyapısı ayarlarında DNS sunucusunu ayarlama

Giden/gelen yapılandırmasını gözden geçirme

Azure IoT Hub ile IoT Edge arasındaki iletişim kanalları her zaman giden olacak şekilde yapılandırılır. Çoğu IoT Edge senaryosu için yalnızca üç bağlantı gereklidir. Kapsayıcı altyapısının modül görüntülerini barındıran kapsayıcı kayıt defterine (veya kayıt defterlerine) bağlanması gerekir. Cihaz yapılandırma bilgilerini almak ve ileti ve telemetri göndermek için IoT Edge çalışma zamanının IoT Hub'a bağlanması gerekir. Otomatik sağlamayı kullanıyorsanız IoT Edge'in Cihaz Sağlama Hizmeti'ne bağlanması gerekir. Daha fazla bilgi için bkz . Güvenlik duvarı ve bağlantı noktası yapılandırma kuralları.

IoT Edge cihazlarından bağlantılara izin ver

Ağ kurulumunuzda IoT Edge cihazlarından yapılan bağlantılara açıkça izin verirseniz aşağıdaki IoT Edge bileşenlerinin listesini gözden geçirin:

  • IoT Edge aracısı , büyük olasılıkla WebSockets üzerinden IoT Hub'a kalıcı bir AMQP/MQTT bağlantısı açar.
  • IoT Edge hub'ı , büyük olasılıkla WebSockets üzerinden IoT Hub'a tek bir kalıcı AMQP bağlantısı veya birden çok MQTT bağlantısı açar.
  • IoT Edge hizmeti , IoT Hub'a aralıklı HTTPS çağrıları yapar.

Üç durumda da, tam etki alanı adı (FQDN) deseni \*.azure-devices.netile eşleşir.

Kapsayıcı kayıt defterleri

Kapsayıcı altyapısı, HTTPS üzerinden kapsayıcı kayıt defterlerine çağrı yapar. IoT Edge çalışma zamanı kapsayıcı görüntülerini almak için FQDN olur mcr.microsoft.com. Kapsayıcı altyapısı, dağıtımda yapılandırıldığı gibi diğer kayıt defterlerine bağlanır.

Bu denetim listesi güvenlik duvarı kuralları için bir başlangıç noktasıdır:

FQDN (* = joker karakter) Giden TCP Bağlantı Noktaları Kullanım
mcr.microsoft.com 443 Microsoft Container Registry
*.data.mcr.microsoft.com 443 İçerik teslimi sağlayan veri uç noktası
*.cdn.azcr.io 443 Market'ten cihazlara modül dağıtma
global.azure-devices-provisioning.net 443 Cihaz Sağlama Hizmeti erişimi (isteğe bağlı)
*.azurecr.io 443 Kişisel ve üçüncü taraf kapsayıcı kayıt defterleri
*.blob.core.windows.net 443 Blob depolamadan Azure Container Registry görüntü deltalarını indirme
*.azure-devices.net 5671, 8883, 4431 IoT Hub erişimi
*.docker.io 443 Docker Hub erişimi (isteğe bağlı)

1Güvenli MQTT için 8883 numaralı bağlantı noktasını veya güvenli AMQP için 5671 numaralı bağlantı noktasını açın. Yalnızca 443 numaralı bağlantı noktası üzerinden bağlantı oluşturabiliyorsanız, bu protokollerden biri bir WebSocket tüneli üzerinden çalıştırılabilir.

IoT hub'ının IP adresi önceden bildirimde bulunmadan değişebildiğinden, izin verilenler listesi yapılandırması için her zaman FQDN'yi kullanın. Daha fazla bilgi edinmek için bkz . IoT Hub'ınızın IP adresini anlama.

Bu güvenlik duvarı kurallarından bazıları Azure Container Registry'den devralınır. Daha fazla bilgi için bkz . Güvenlik duvarının arkasındaki Azure kapsayıcı kayıt defterine erişmek için kuralları yapılandırma.

*.blob.core.windows.net FQDN'sinin joker karakter izin verilenler listesinden kaçınmak için Azure Container kayıt defterinizde ayrılmış veri uç noktalarını etkinleştirebilirsiniz. Daha fazla bilgi için bkz . Ayrılmış veri uç noktalarını etkinleştirme.

Not

REST ile veri uç noktaları arasında tutarlı bir FQDN sağlamak için, 15 Haziran 2020'den *.cdn.mscr.io itibaren Microsoft Container Registry veri uç noktası*.data.mcr.microsoft.com
Daha fazla bilgi için bkz . Microsoft Container Registry istemcisi güvenlik duvarı kuralları yapılandırması

Güvenlik duvarınızı genel kapsayıcı kayıt defterlerine erişime izin verecek şekilde yapılandırmak istemiyorsanız, görüntüleri özel kayıt defterinizdeki depolama çalışma zamanı kapsayıcıları bölümünde açıklandığı gibi özel kapsayıcı kayıt defterinizde depolayabilirsiniz.

Azure IoT Kimlik Hizmeti

IoT Kimlik Hizmeti, Azure IoT cihazları için sağlama ve şifreleme hizmetleri sağlar. Kimlik hizmeti, yüklenen sürümün en son sürüm olup olmadığını denetler. Denetim, sürümü doğrulamak için aşağıdaki FQDN'leri kullanır.

FQDN Giden TCP Bağlantı Noktaları Kullanım
aka.ms 443 Sürüm dosyasına yeniden yönlendirme sağlayan gösterim URL'si
raw.githubusercontent.com 443 GitHub'da barındırılan kimlik hizmeti sürüm dosyası

Ara sunucu üzerinden iletişimi yapılandırma

Cihazlarınız ara sunucu kullanan bir ağa dağıtılacaksa, IoT Hub ve kapsayıcı kayıt defterlerine ulaşmak için ara sunucu üzerinden iletişim kurabilmeleri gerekir. Daha fazla bilgi için bkz . Bir IoT Edge cihazını ara sunucu üzerinden iletişim kuracak şekilde yapılandırma.

Kapsayıcı altyapısı ayarlarında DNS sunucusunu ayarlama

Kapsayıcı altyapısı ayarlarında ortamınız için DNS sunucusunu belirtin. DNS sunucusu ayarı, altyapı tarafından başlatılan tüm kapsayıcı modülleri için geçerlidir.

  1. Cihazınızdaki /etc/docker dizinde dosyayı düzenleyin daemon.json . Yoksa dosyayı oluşturun.

  2. DNS anahtarını ekleyin ve DNS sunucusu adresini genel olarak erişilebilen bir DNS hizmetine ayarlayın. Uç cihazınız bir genel DNS sunucusuna erişemiyorsa, ağınızda erişilebilir bir DNS sunucusu adresi kullanın. Örneğin:

    {
        "dns": ["1.1.1.1"]
    }
    

Çözüm yönetimi

  • Yardımsever
    • Günlükleri ve tanılamayı ayarlama
    • Varsayılan günlük sürücüsünü ayarlama
    • Testleri ve CI/CD işlem hatlarını göz önünde bulundurun

Günlükleri ve tanılamayı ayarlama

Linux'ta IoT Edge daemon varsayılan günlük sürücüsü olarak günlükleri kullanır. Komut satırı aracını journalctl kullanarak daemon günlüklerini sorgulayabilirsiniz.

IoT Edge, sürüm 1.2'den başlayarak birden çok daemon'a dayanır. Her daemon'un günlükleri ile journalctliotedge system ayrı ayrı sorgulansa da komutlar, birleştirilmiş günlükleri sorgulamak için kullanışlı bir yol sağlar.

  • Birleştirilmiş iotedge komut:

    sudo iotedge system logs
    
  • Eşdeğer journalctl komut:

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

IoT Edge dağıtımını test ederken, günlükleri almak ve sorun gidermek için cihazlarınıza genellikle erişebilirsiniz. Dağıtım senaryosunda bu seçeneğe sahip olmayabilirsiniz. Üretimdeki cihazlarınız hakkında nasıl bilgi topladığınıza dikkat edin. Seçeneklerden biri, diğer modüllerden bilgi toplayan ve buluta gönderen bir günlük modülü kullanmaktır. Günlük modülüne örnek olarak logspout-loganalytics veya kendiniz tasarlayabilirsiniz.

Varsayılan günlük sürücüsünü ayarlama

Varsayılan olarak, Moby kapsayıcı altyapısı, kapsayıcı günlüğü boyut sınırlarını belirlemez. Bu durum, zaman içinde cihazın günlüklerle dolmasına ve disk alanının tamamının kullanılmasına neden olabilir. Kapsayıcı altyapınızı günlük mekanizması olarak günlük sürücüsünü kullanacak local şekilde yapılandırın. Local günlük sürücüsü varsayılan günlük boyutu sınırı sunar, varsayılan olarak günlük döndürme gerçekleştirir ve disk alanı tükenmesini önlemeye yardımcı olan daha verimli bir dosya biçimi kullanır. Ayrıca farklı günlük sürücüleri kullanmayı ve ihtiyacınıza göre farklı boyut sınırları ayarlamayı da seçebilirsiniz.

Seçenek: Tüm kapsayıcı modülleri için varsayılan günlük sürücüsünü yapılandırma

değerini log driver içindeki günlük sürücüsünün adına ayarlayarak kapsayıcı altyapınızı belirli bir günlük sürücüsünü daemon.jsonkullanacak şekilde yapılandırabilirsiniz. Aşağıdaki örnek, varsayılan günlük sürücüsünü günlük sürücüsüne local ayarlar (önerilir).

{
    "log-driver": "local"
}

Ayrıca dosyada daemon.json uygun değerleri kullanmak için anahtarlarınızı log-opts yapılandırabilirsiniz. Aşağıdaki örnek, günlük sürücüsünü olarak local ayarlar ve ve max-file seçeneklerini ayarlarmax-size.

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

Bu bilgileri adlı daemon.json bir dosyaya ekleyin (veya ekleyin) ve aşağıdaki konuma yerleştirin:

  • /etc/docker/

Değişikliklerin etkili olması için kapsayıcı altyapısı yeniden başlatılmalıdır.

Seçenek: Her kapsayıcı modülü için günlük ayarlarını yapma

Bunu her modülün createOptions bölümünde yapabilirsiniz. Örneğin:

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

Linux sistemlerinde ek seçenekler

  • Varsayılan günlük sürücüsü olarak ayarlayarak journald kapsayıcı altyapısını günlükleri günlüğe systemd gönderecek şekilde yapılandırın.

  • Logrotate aracı yükleyerek cihazınızdaki eski günlükleri düzenli aralıklarla kaldırın. Aşağıdaki dosya belirtimini kullanın:

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

Testleri ve CI/CD işlem hatlarını göz önünde bulundurun

En verimli IoT Edge dağıtım senaryosu için üretim dağıtımınızı test ve CI/CD işlem hatlarınızla tümleştirmeyi göz önünde bulundurun. Azure IoT Edge, Azure DevOps dahil olmak üzere birden çok CI/CD platformını destekler. Daha fazla bilgi için bkz . Azure IoT Edge'e sürekli tümleştirme ve sürekli dağıtım.

Güvenlik konuları

  • Önemli
    • Kapsayıcı kayıt defterinize erişimi yönetme
    • Konak kaynaklarına kapsayıcı erişimini sınırlama

Kapsayıcı kayıt defterinize erişimi yönetme

Modülleri üretim IoT Edge cihazlarına dağıtmadan önce kapsayıcı kayıt defterinize erişimi denetlediğinizden emin olun; böylece yabancılar kapsayıcı görüntülerinize erişemez veya bu görüntülerde değişiklik yapamaz. Kapsayıcı görüntülerini yönetmek için özel bir kapsayıcı kayıt defteri kullanın.

Öğreticilerde ve diğer belgelerde, IoT Edge cihazınızda geliştirme makinenizde kullandığınız kapsayıcı kayıt defteri kimlik bilgilerini kullanmanızı öneririz. Bu yönergeler yalnızca test ve geliştirme ortamlarını daha kolay ayarlamanıza yardımcı olmaya yöneliktir ve üretim senaryosunda izlenmemelidir.

Kayıt defterinize daha güvenli bir erişim için bir kimlik doğrulama seçeneğine sahipsiniz. Popüler ve önerilen kimlik doğrulaması, IoT Edge cihazlarında olduğu gibi kapsayıcı görüntülerini otomatik veya başka bir katılımsız (başsız) şekilde çekmek için uygulamalar veya hizmetler için uygun bir Active Directory hizmet sorumlusu kullanmaktır. Bir diğer seçenek de yalnızca oluşturuldukları Azure Container Registry'de var olan uzun veya kısa ömürlü kimlikler oluşturmanıza ve depo düzeyine erişimi kapsamanıza olanak tanıyan depo kapsamlı belirteçler kullanmaktır.

Hizmet sorumlusu oluşturmak için, hizmet sorumlusu oluşturma bölümünde açıklandığı gibi iki betiği çalıştırın. Bu betikler aşağıdaki görevleri yerine getirin:

  • İlk betik hizmet sorumlusunu oluşturur. Hizmet sorumlusu kimliğini ve Hizmet sorumlusu parolasını verir. Bu değerleri kayıtlarınızda güvenli bir şekilde depolayın.

  • İkinci betik, hizmet sorumlusuna vermek için rol atamaları oluşturur ve gerekirse daha sonra çalıştırılabilir. parametresi için role acrPull kullanıcı rolünün uygulanmasını öneririz. Rollerin listesi için bkz . Azure Container Registry rolleri ve izinleri.

Hizmet sorumlusu kullanarak kimlik doğrulaması yapmak için, ilk betikten aldığınız hizmet sorumlusu kimliğini ve parolasını sağlayın. Dağıtım bildiriminde bu kimlik bilgilerini belirtin.

  • Kullanıcı adı veya istemci kimliği için hizmet sorumlusu kimliğini belirtin.

  • Parola veya istemci gizli dizisi için hizmet sorumlusu parolasını belirtin.

Depo kapsamlı belirteçler oluşturmak için depo kapsamlı belirteç oluşturma'yı izleyin.

Depo kapsamlı belirteçleri kullanarak kimlik doğrulaması yapmak için, depo kapsamı belirlenmiş belirtecinizi oluşturduktan sonra aldığınız belirteç adını ve parolayı belirtin. Dağıtım bildiriminde bu kimlik bilgilerini belirtin.

  • Kullanıcı adı için belirtecin kullanıcı adını belirtin.

  • Parola için belirtecin parolalarından birini belirtin.

Not

Gelişmiş bir güvenlik kimlik doğrulaması uyguladıktan sonra, varsayılan kullanıcı adı/parola erişiminin artık kullanılamaması için Yönetici kullanıcı ayarını devre dışı bırakın. Azure portalındaki kapsayıcı kayıt defterinizde, Ayarlar'ın altındaki sol bölme menüsünde Erişim Anahtarları'nı seçin.

Konak kaynaklarına kapsayıcı erişimini sınırlama

Paylaşılan ana bilgisayar kaynaklarını modüller arasında dengelemek için modül başına kaynak tüketimine sınırlar koymanızı öneririz. Bu sınırlar, bir modülün çok fazla bellek veya CPU kullanımını ve diğer işlemlerin cihazda çalışmasını engeller. IoT Edge platformu, modüllerin kaynaklarını varsayılan olarak sınırlamaz, çünkü belirli bir modülün en iyi şekilde çalışması için gereken kaynak miktarını bilmek için test yapılması gerekir.

Docker, bellek ve CPU kullanımı gibi kaynakları sınırlamak için kullanabileceğiniz bazı kısıtlamalar sağlar. Daha fazla bilgi için bkz . Bellek, CPU ve GPU'larla çalışma zamanı seçenekleri.

Bu kısıtlamalar, dağıtım bildirimlerinde oluşturma seçenekleri kullanılarak tek tek modüllere uygulanabilir. Daha fazla bilgi için bkz . IoT Edge modülleri için kapsayıcı oluşturma seçeneklerini yapılandırma.

Sonraki adımlar