IoT Edge çözümünüzü üretim ortamına dağıtmaya hazırlanma

Şunun için geçerlidir:evet simgesi IoT Edge 1.1 Diğer sürümler:IoT Edge 1.3, IoT Edge 1.4

Şunlar için geçerlidir:IoT Edge 1.3 onay işareti IoT Edge 1.3 IoT Edge 1.4 onay işareti IoT Edge 1.4 Diğer sürümler:IoT Edge 1.1

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

Bu makalede sağlanan bilgilerin tümü eşit değildir. Önceliklerinizi belirlemenize yardımcı olmak için her bölüm, işi iki bölüme ayıran listelerle başlar: üretime gitmeden ö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 için 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
    • Kapsayıcı altyapısı olarak Moby kullanma
  • Yararlı

    • Yukarı akış protokollerini seçme

Üretim sertifikalarını yükleme

Üretimdeki her IoT Edge cihazın üzerinde bir cihaz sertifika yetkilisi (CA) sertifikası yüklü olmalıdır. Bu CA sertifikası daha sonra yapılandırma dosyasındaki IoT Edge çalışma zamanına bildirilir. Geliştirme ve test senaryolarında, yapılandırma dosyasında hiçbir sertifika bildirilmemişse IoT Edge çalışma zamanı 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 cihaz CA sertifikanızı sağlamanız gerekir.

Not

Şu anda libiothsm'deki bir sınırlama, 1 Ocak 2038 veya sonrasında süresi dolan sertifikaların kullanımını engelliyor.

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

Sertifikaları bir IoT Edge cihazına 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 koymadan önce gelecekteki güncelleştirmeleri nasıl yöneteceğini bilmeniz gerekir. IoT Edge bir 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 (Önizleme), IoT Edge cihazlarınız için havadan güncelleştirmeler (OTA) dağıtmanızı sağlayan bir hizmettir.

IoT Edge güncelleştirmek için alternatif yöntemler, IoT Edge cihaza 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ı olarak Moby kullanma

Kapsayıcı altyapısı, herhangi bir IoT Edge cihazı için önkoşuldur. Yalnızca moby-engine üretimde desteklenir. Docker gibi diğer kapsayıcı altyapıları IoT Edge ile çalışır ve geliştirme için bu altyapıları 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 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 de bir UpstreamProtocol ortam değişkeni vardır. Değişkenin geçerli değerleri şunlardır:

  • MQTT
  • AMQP
  • MQTTWS
  • AMQPWS

Cihazın kendisindeki yapılandırma dosyasındaki 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 ilk bağlantısını kurmak için IoT Edge aracısını WebSocket (AMQPWS) üzerinden AMQP 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

  • Yararlı
    • 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üller 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 takdirde 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. 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 depolama 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ı kullanılabilir belleği olan kısıtlı cihazlar dağıtıyorsanız, IoT Edge hub'ı daha kolay bir kapasitede çalışacak ve daha az disk alanı kullanacak şekilde yapılandırabilirsiniz. Bu yapılandırmalar IoT Edge hub'ının performansını sınırlandırdığından çözümünüz için uygun olan doğru 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.

OptimizeForPerformancetrue 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 belleği düşük 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 protokoller için 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 teslim edilemeyen iletileri geçici olarak depolar. IoT Edge hub'larının süresi dolmadan önce teslim edilemeyen iletilerde ne kadar süreyle tutabileceğ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 fazladan trafik 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 kullanma

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.
  • Boşlukla 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ı bir 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ırayla 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
  • Yararlı
    • Çalışma zamanı kapsayıcılarını özel kayıt defterinizde depolama
    • Görüntü çöp 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.1 gibi soneklerdir. Örneğin , mcr.microsoft.com/azureiotedge-agent:1.1. Etiketler değişebilir ve herhangi bir zamanda başka bir kapsayıcıya işaret etmek üzere değiştirilebilir. Bu nedenle, siz modül görüntülerinizi güncelleştirirken ekibinizin izlemesi gereken 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ımlı 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.1.x sürümüne işaret eden yeni bir sürüm olduğunda 1.1 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 varsayılandan sıralı etiketlere dağıtımlar. 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ğerinin tümünü kullanın. Örneğin, 1.1.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ı haleılmasına izin verdiğinden tasarım gereğidir. Ancak, bu birimler kullanılmamış durumda bırakılırsa, disk alanı tükenmesine ve sonraki sistem hatalarına yol açabilir. Senaryonuzda docker birimleri kullanıyorsanız, özellikle üretim senaryolarında kullanılmayan birimleri kaldırmak için docker birim ayıklama 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 kod modülleri için kapsayıcı görüntülerinizi özel Azure kayıt defterinizde depolamayı biliyorsunuz, ancak edgeAgent ve edgHub ç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 çok sıkı güvenlik duvarı kısıtlamalarınız varsa bunu yapmanız gerekebilir.

Özel kayıt defterinize yerleştirmek için Docker çekme komutuyla görüntüleri alın. Çekme işlemi sırasında kapsayıcı sürümünü belirtmeniz, kapsayıcı açıklaması sayfasında aşağıdaki gibi en son kapsayıcı sürümünü bulmanız ve gerekirse çekme komutundaki sürümü değiştirmeniz gerekir. Görüntüleri IoT Edge çalışma zamanının her yeni sürümüyle güncelleştirmeniz gerekeceğini unutmayın.

çalışma zamanı kapsayıcısı IoT Edge Docker çekme komutu
Azure IoT Edge Aracısı docker pull mcr.microsoft.com/azureiotedge-agent:<VERSION_TAG>
Azure IoT Edge Hub docker pull mcr.microsoft.com/azureiotedge-hub:<VERSION_TAG>

Ardından, edgeAgent ve edgeHub sistem modülleri için deployment.template.json dosyasındaki görüntü başvurularını güncelleştirdiğinizden emin olun. değerini her iki modül için de kayıt defteri adınız ve sunucunuzla değiştirin mcr.microsoft.com .

  • edgeAgent:

    "image": "<registry name and server>/azureiotedge-agent:1.1",

  • edgeHub:

    "image": "<registry name and server>/azureiotedge-hub:1.1",

Görüntü çöp toplamayı yapılandırma

Görüntü çöp toplama, IoT Edge v1.4 ve sonraki sürümlerde artık IoT Edge modüller 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 sağlar.

Özellik, IoT Edge 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 en 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ü çöp 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 Varsayılan değer
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 olarak 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ı 7d
cleanup_time Temizleme görevinin çalıştırıldığında cihazın yerel saatinde günün saati. 24 saat SS:MM biçiminde olmalıdır. İsteğe Bağlı 00:00

  • Yararlı
    • Giden/gelen yapılandırmasını gözden geçirme
    • IoT Edge cihazlardan bağlantılara izin ver
    • Ara sunucu üzerinden iletişimi yapılandırma

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

Azure IoT Hub ile IoT Edge arasındaki iletişim kanalları her zaman giden olarak yapılandırılır. Çoğu IoT Edge senaryo 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. IoT Edge çalışma zamanının cihaz yapılandırma bilgilerini almak ve ileti ve telemetri göndermek için IoT Hub ile bağlanması gerekir. Otomatik sağlamayı kullanıyorsanız IoT Edge 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 cihazlardan bağlantılara izin ver

Ağ kurulumunuz için IoT Edge cihazlardan yapılan bağlantılara açıkça izin verirseniz, aşağıdaki IoT Edge bileşenleri listesini gözden geçirin:

  • IoT Edge aracısı, büyük olasılıkla WebSockets üzerinden IoT Hub kalıcı bir AMQP/MQTT bağlantısı açar.
  • IoT Edge hub'ı, büyük olasılıkla WebSockets üzerinden IoT Hub için 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.

Ayrıca , 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 olurmcr.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ü değişikliklerini indirme
*.azure-devices.net 5671, 8883, 4431 erişimi IoT Hub
*.docker.io 443 Docker Hub erişimi (isteğe bağlı)

1 Gü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ı gerçekleştirebiliyorsanız, bu protokollerden herhangi biri bir WebSocket tüneli üzerinden çalıştırılabilir.

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

Bu güvenlik duvarı kurallarından bazıları Azure Container Registry 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ı olarak değiştirilecektir *.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 çalışma zamanı kapsayıcılarını depolama bölümünde açıklandığı gibi özel kapsayıcı kayıt defterinizde depolayabilirsiniz.

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. IoT Edge cihazını ara sunucu üzerinden iletişim kuracak şekilde yapılandırma.

Çözüm yönetimi

  • Yararlı
    • 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.

Windows'da IoT Edge daemon'u PowerShell tanılamalarını kullanır. Günlükleri daemon'dan sorgulamak için kullanın Get-IoTEdgeLog . IoT Edge modülleri, günlük kaydı için varsayılan olan JSON sürücüsünü kullanır.

. {Invoke-WebRequest -useb aka.ms/iotedge-win} | Invoke-Expression; Get-IoTEdgeLog

Sürüm 1.2'den başlayarak, IoT Edge 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
    

bir IoT Edge dağıtımı 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üğü boyutu sınırlarını ayarlamaz. Zaman içinde bu, cihazın günlüklerle dolmasına ve disk alanının bitmesine yol açabilir. Kapsayıcı altyapınızı günlüğe kaydetme mekanizmanız olarak günlük sürücüsünü kullanacaklocal ş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ı 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 anahtarlarınızı log-opts dosyada daemon.json uygun değerleri kullanacak şekilde 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:

Platform Konum
Linux /etc/docker/
Windows C:\ProgramData\iotedge-moby\config\
  • /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ı ayarlama

Bunu her modülün createOptions bölümünde yapabilirsiniz. Örnek:

"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üğesystemd gönderecek şekilde yapılandırın.

  • Bir logrotate aracı yükleyerek cihazınızdan düzenli aralıklarla eski günlükleri 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 platformlarını destekler. Daha fazla bilgi için bkz. Azure IoT Edge 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 dışarıdan gelenler kapsayıcı görüntülerinize erişemez veya bunlarda 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, geliştirme makinenizde kullandığınız IoT Edge cihazınızdaki 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ı olmak için tasarlanmıştır ve üretim senaryosunda izlenmemelidir.

Kayıt defterinize daha güvenli bir erişim için , kimlik doğrulama seçeneklerinden birini tercih edebilirsiniz. Popüler ve önerilen bir kimlik doğrulaması, IoT Edge cihazlarda olduğu gibi kapsayıcı görüntülerini otomatik veya başka bir katılımsız (gözetimsiz) bir şekilde çekmek için uygulamalar veya hizmetler için uygun bir Active Directory hizmet sorumlusu kullanmaktır. Bir diğer seçenek de depo kapsamlı belirteçler kullanmaktır. Bu belirteçler yalnızca oluşturuldukları Azure Container Registry var olan uzun veya kısa ömürlü kimlikler oluşturmanıza ve depo düzeyine erişimi kapsamanıza olanak tanı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 üzere rol atamaları oluşturur ve bu atamalar gerekirse daha sonra çalıştırılabilir. parametresi için acrPull kullanıcı rolünün role uygulanmasını öneririz. Rollerin listesi için bkz. rolleri ve izinleri Azure Container Registry.

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 gizli anahtar için hizmet sorumlusu parolasını belirtin.


Depo kapsamlı belirteçler oluşturmak için lütfen depo kapsamlı belirteç oluşturma adımlarını izleyin.

Depo kapsamlı belirteçleri kullanarak kimlik doğrulaması yapmak için, depo kapsamlı belirtecinizi oluşturduktan sonra aldığınız belirteç adını ve parolayı sağlayın. 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 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 konak 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ı tüketmemesini sağlar ve diğer işlemlerin cihazda çalışmasını önler. 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 ne kadar kaynak gerektiğini bilmek test gerektirir.

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