IoT Edge çözümünüzü üretimde dağıtmaya hazırlanma
Şunlar için geçerlidir: IoT Edge 1.5 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:
- Güncelleştirilmiş görüntü indirildi
- Çalışan modül durduruldu
- Yeni bir modül örneği başlatıldı
- 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 WaitForAllPulls
ayarlanarak 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.
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
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
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
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
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.Ö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
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"
Ö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>"
Değişikliklerinizi kaydedin ve metin düzenleyicinizden çıkın.
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ı false olarak 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 |
Ağ
- 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.net
ile 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.
Cihazınızdaki
/etc/docker
dizinde dosyayı düzenleyindaemon.json
. Yoksa dosyayı oluşturun.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 journalctl
iotedge 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.json
kullanacak ş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üğesystemd
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
- IoT Edge otomatik dağıtımı hakkında daha fazla bilgi edinin.
- IoT Edge'in Sürekli tümleştirmeyi ve sürekli dağıtımı nasıl desteklediğini görün.