Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunun için geçerlidir:
IoT Edge 1.6
Important
IoT Edge 1.6 LTS desteklenen sürümdür. IoT Edge 1.5 LTS desteği 10 Kasım 2026'da sona erer; IoT Edge 1.4 LTS, 12 Kasım 2024'te ömrünün sonuna ulaştı. Önceki bir sürümü kullanıyorsanız bkz. Update IoT Edge.
geliştirme aşamasından üretime IoT Edge çözümünüzü almaya hazır olduğunuzda, çözümün sürekli performans için yapılandırıldığından emin olun.
Bu makaledeki tüm bilgiler aynı derecede önemli değildir. Öncelik belirlemenize yardımcı olmak için her bölüm, işi iki gruba ayıran listelerle başlar: üretime geçmeden önce tamamlanması önemlidir veya bilmeniz yararlı olur .
Cihaz yapılandırması
IoT Edge cihazlar Raspberry Pi'den dizüstü bilgisayara veya sunucuda çalışan bir sanal makineye kadar her şey olabilir. Cihaza fiziksel olarak veya sanal bir bağlantı üzerinden erişebilirsiniz ya da uzun süreler için yalıtılabilir. Her iki durumda da uygun şekilde çalışacak şekilde yapılandırıldığından emin olun.
Important
- Üretim sertifikalarını yükleme
- Cihaz yönetim planına sahip olmanız
- Moby'yi konteyner motoru olarak kullanın. Ubuntu Core snap'lerini kullanıyorsanız, Canonical Docker snap'ini sunmaktadır ve prodüksiyon senaryoları için desteklemektedir.
Helpful
- 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. Ca sertifikasını yapılandırma dosyasındaki IoT Edge çalışma zamanına bildirin. Geliştirme ve test için, yapılandırma dosyasında sertifika bildirmezseniz 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ı için, kendinden imzalı bir sertifika yetkilisinden veya ticari bir sertifika yetkilisinden satın alınan, kendi Edge CA sertifikanızı sağlayın.
Edge CA sertifikasının rolünü anlamak için bkz. Azure IoT Edge sertifikaları nasıl kullanır.
IoT Edge bir cihaza 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 almadan önce, gelecekteki güncelleştirmeleri nasıl yönetileceğini göz önünde bulundurun. 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ı motoru
- IoT Edge
- CA sertifikaları
IoT Hub için Cihaz Güncellemesi, IoT Edge cihazlarınız için havadan güncelleştirmeler (OTA) dağıtmanıza olanak tanıyan bir hizmettir.
IoT Edge güncelleştirmenin diğer yolları, 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ı motoru
Herhangi bir IoT Edge cihazı için kapsayıcı motoru gerekir. Moby motoru üretimde desteklenmektedir. Ubuntu Core snap'lerini kullanıyorsanız, Canonical Docker snap'ini sunmaktadır ve prodüksiyon senaryoları için desteklemektedir. 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
IoT Edge aracısı ve IoT Edge hub'ı için IoT Hub'a yukarı akış iletişimi için kullanılan protokolü (hangi bağlantı noktasının kullanılacağını belirler) yapılandırabilirsiniz. Varsayılan protokol AMQP'dir, ancak ağ kurulumunuza bağlı olarak bu protokolü değiştirmek isteyebilirsiniz.
Her iki çalışma zamanı modülünde de bir UpstreamProtocol ortam değişkeni vardır. Bu değişken için geçerli değerler şunlardır:
- MQTT
- AMQP
- MQTTWS
- AMQPWS
UpstreamProtocol değişkenini cihazın kendisindeki yapılandırma dosyasındaki IoT Edge aracısı için 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ıyı 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. Örneğin, bkz. Proxy sunucusu üzerinden iletişim kurmak için IoT Edge cihazı yapılandırma.
Deployment
-
Helpful
- Yukarı akış protokolüyle tutarlı olun.
- Sistem modülleri için konak depolamayı ayarlayın.
- IoT Edge hub'ı tarafından kullanılan bellek alanını azaltın.
- Dağıtım bildirimlerinde doğru modül görüntülerini kullanın.
- Özel modülleri kullanırken ikiz boyutu sınırlarına dikkat edin.
- Modül güncelleştirmelerinin nasıl uygulanacağını yapılandırın.
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ırıyorsanız, gelecekteki tüm dağıtımlarda aynı protokolü bildirin. Ö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. Tüm ek modüller, çalışma zamanı modüllerinde ayarlanan protokolü devralır.
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 depolama birimini 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 Sistem modülleri için konak depolama bölümüne bakın.
IoT Edge hub'ı tarafından kullanılan bellek alanını azaltma
Sınırlı belleğe sahip kısıtlanmış cihazlar dağıtıyorsanız, IoT Edge hub'ı daha kolay bir kapasitede çalışacak ve daha az disk alanı kullanacak şekilde yapılandırın. Ancak bu yapılandırma, IoT Edge hub'ının performansını sınırlar, bu nedenle çö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ği için büyük bellek blokları 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 OptimizeForPerformance ortam değişkenini IoT Edge hub'ına false olarak ayarlayın.
olarak OptimizeForPerformanceayarladığınızdatrue, 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ını yapılandırmak için dağıtım bildirimlerinizde IoT Edge hub modülü için boole ortam değişkenlerini ayarlayın. Üç değişken şunlardır:
- amqpSettings__enabled
- mqttSettings__enabled
- httpSettings__enabled
Üç değişkenin de iki alt çizgisi vardır ve doğru veya yanlış olarak ayarlanabilir.
İletiler için depolama süresini azaltma
IoT Edge hub modülü, herhangi bir nedenle iletileri IoT Hub'e gönderemezse iletileri geçici olarak depolar. IoT Edge hub'ının teslim edilmemiş iletileri süresi dolmadan ne kadar süreyle tutacağını 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ırsanız, Edge aracısı görüntüyü yüklemek için yeniden denenir. Bu yeniden deneme işlemi ek trafik oluşturur. 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ştirdiğinizde 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
Modüller arasında bağımlılıklar olması gibi bazı durumlarda, çalışan modülleri yeniden başlatmadan önce tüm güncelleştirilmiş modül görüntülerini indirmek isteyebilirsiniz. IoT Edge Aracısı ortam değişkeni ModuleUpdateMode dize değerine WaitForAllPulls ayarlayarak bu modül güncelleştirme davranışını yapılandırabilirsiniz. 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
-
Important
- Sürümleri yönetmek için etiketleri kullanın.
- Birimleri yönetin.
-
Helpful
- Özel kayıt defterinizde çalışma zamanı kapsayıcılarını depolayın.
- Görüntü atık toplamayı yapılandırın.
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, 1.6 gibi bir paket deposunun sonunda yer alan ek eklerdir. Örneğin, mcr.microsoft.com/azureiotedge-agent:1.6. Etiketler değişebilir ve istediğiniz zaman başka bir kapsayıcıyı işaret eden şekilde değiştirilebilir, bu nedenle modül görüntülerinizi ileriye doğru güncelleştirirken 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, etiketin artırılmış halini kullanarak cihazlarınıza yeni bir dağıtım gönderin. 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 rakamlarla eşleşen en son görüntüyü elde etmek için sürüm numarasının yalnızca ilk iki değerini kullanın. Örneğin, 1.6, yeni bir sürüm çıktığında en son 1.6.x sürümüne işaret etmek için güncellenir. 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 yapılan dağıtımlar varsayılan olarak aşamalı etiketleme şeklindedir. 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.6.0 ilk sürümünden sonra değişmiyor. Güncelleştirmeye hazır olduğunuzda dağıtım bildiriminde yeni bir sürüm numarası bildirirsiniz. Bu yaklaşım üretim amacıyla önerilir.
Birimleri yönet
IoT Edge modül kapsayıcılarına bağlı birimleri kaldırmaz. Bu davranış, verilerin kapsayıcı örnekleri arasında, örneğin yükseltme senaryolarında, kalıcı olmasına olanak sağladığı için tasarımın bir parçasıdır. Ancak, bu birimler kullanılmamışsa 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 volume prune ve docker volume rm gibi Docker araçlarını kullanın.
Çalışma zamanı kapsayıcılarını özel kayıt defterinizde depolayın.
Özel kod modülleri için kapsayıcı görüntülerini özel Azure kayıt defterinizde depolamayı biliyorsunuz, ancak edgeAgent ve edgeHub çalışma zamanı modülleri gibi genel kapsayıcı görüntülerini depolamak için de kullanabilirsiniz. Sıkı güvenlik duvarı kısıtlamalarınız varsa, normalde Microsoft Container Registry'de (MCR) depolandığından bu çalışma zamanı kapsayıcılarını özel kayıt defterinizde depolamanız gerekebilir.
Aşağıdaki adımlarda edgeAgent ve edgeHub'ın Docker görüntüsünü yerel makinenize çekme, yeniden kaydetme, özel kayıt defterinize gönderme ve ardından yapılandırma dosyanızı güncelleştirerek cihazlarınızın görüntüyü özel kayıt defterinizden çekmesini sağlamasını sağlama adımları gösterilmektedir.
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.6 # Pull edgeHub image docker pull mcr.microsoft.com/azureiotedge-hub:1.6Tüm Docker görüntülerinizi listeleyin, edgeAgent ve edgeHub görüntülerini bulun ve görüntü kimliklerini kopyalayın.
docker imagesedgeAgent 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.6 # Retag your edgeHub image docker tag <my-image-id> <registry-name/server>/azureiotedge-hub:1.6edgeAgent 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.6 # Push your edgeHub image to your private registry docker push <registry-name/server>/azureiotedge-hub:1.6edgeAgent ve edgeHub sistem modülleri için `deployment.template.json` dosyasındaki görüntü referanslarını güncelleyin ve her iki modül için `` yerine kendi "kayıt-adı/sunucu" ifadenizi kullanın.
Yapılandırma dosyasını özel kayıt defteri görüntünüz hakkında bilgi edinecek şekilde değiştirmek için IoT Edge cihazınızda bir metin düzenleyicisi açın.
sudo nano /etc/aziot/config.tomlMetin 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.6"Ö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 applyIoT 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 bulunan ve modüllerin artık kullanmadığını IoT Edge Docker görüntülerini otomatik olarak temizleyen bir özelliktir. Yalnızca IoT Edge çalışma zamanının bir dağıtımın parçası olarak çektiği Docker görüntülerini siler. Kullanılmayan Docker görüntülerinin silinmesi disk alanından tasarruf yapmanıza yardımcı olur.
IoT Edge konak bileşeni olan aziot-edged hizmeti bu özelliği uygular ve varsayılan olarak etkinleştirir. Temizleme işlemi her gün gece yarısı (cihaz yerel saati) çalışır ve en son yedi gün önce kullanılan kullanılmayan Docker görüntülerini kaldırır. config.toml dosyasında temizleme davranışını denetlemek için parametreleri ayarlarsınız ve bu bölümde bunlar açıklanır. Yapılandırma dosyasında parametre belirtmezseniz varsayılan değerler uygulanır.
Örneğin, aşağıdaki config.toml bölümünde varsayılan değerlerle görüntü çöp toplama ayarları gösterilir:
[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. Varsayılan ayarları değiştirmek için bunları ayrı ayrı ayarlayın.
| Parameter | Description | Required | Varsayılan değer |
|---|---|---|---|
enabled |
Görüntü atık toplamayı etkinleştirir. Bu değeri falseolarak ayarlayarak özelliği devre dışı bırakabilirsiniz. |
Optional | true |
cleanup_recurrence |
Temizleme görevinin ne sıklıkta çalıştığını denetler. Bu değeri birkaç gün olarak belirtin ve bir günden az olamaz. Örneğin: 1d, 2d, 6d vb. |
Optional | 1d |
image_age_cleanup_threshold |
Kullanılmayan görüntüleri temizlemeyi düşünmeden önce dikkate alınacak asgari yaş eşiğini tanımlar. Bu değeri gün olarak belirtin. Görüntülerin dağıtımdan kaldırıldıkları anda temizlenmesini belirtebilirsiniz 0d . Görüntüler dağıtımdan kaldırıldıktan sonra kullanılmamış olarak kabul edilir. |
Optional | 7d |
cleanup_time |
Temizleme görevinin çalıştırıldığı günün saati, cihazın yerel saatine göre. 24 saatlik HH:MM biçiminde olmalıdır. Cihaz çevrimiçi değilse temizleme görevi çalışmaz. Cihaz o sırada çevrimiçiyse görev bir sonraki zamanlanan cleanup_time'de çalıştırılır. |
Optional | 00:00 |
Networking
-
Helpful
- Giden ve gelen yapılandırmayı gözden geçirin
- IoT Edge cihazlardan bağlantılara izin ver
- Ara sunucu üzerinden iletişimi yapılandırma
- Kapsayıcı altyapısı ayarlarında DNS sunucusunu ayarlama
Giden ve gelen yapılandırmayı gözden geçirin
Azure IoT Hub ile IoT Edge arasındaki iletişim kanallarını her zaman giden olacak şekilde yapılandırabilirsiniz. çoğu IoT Edge senaryo için yalnızca üç bağlantı gereklidir. Kapsayıcı motorunun, modül görüntülerini tutmakta olan 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 IoT Edge cihazlardan gelen bağlantılara açıkça izin vermenizi gerektiriyorsa, 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 kalıcı bir AMQP veya 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 service IoT Hub aralıklı HTTPS çağrıları yapar.
Her üç durumda da, tam etki alanı adı (FQDN) modelle eşleşir \*.azure-devices.net.
Container kayıt defterleri
Kapsayıcı altyapısı, HTTPS üzerinden kapsayıcı kayıt defterlerine çağrı yapar. FQDN'i kullanarak IoT Edge çalışma zamanı kapsayıcı görüntülerini almak için mcr.microsoft.com. Kapsayıcı motoru, dağıtımda bağlanmak üzere yapılandırıldığı şekilde 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ı | Usage |
|---|---|---|
mcr.microsoft.com |
443 | Microsoft Konteyner Kayıt Defteri |
*.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 hazne kayıt defterleri |
*.blob.core.windows.net |
443 | Blob depolama alanından Azure Container Registry görüntü değişikliklerini 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.
İpucu
Daha sıkı güvenlik için joker karakter FQDN'lerini mümkün olduğunca belirli uç noktalarla değiştirin. Örneğin, *.azure-devices.net ile <your-hub-name>.azure-devices.net öğesini değiştirin.
*.azurecr.io öğesini <your-registry-name>.azurecr.io ile değiştirin. Kurumsal güvenlik ekipleri genellikle joker karakter kurallarını reddeder, bu nedenle üretimdeki belirli FQDN'leri planlayın.
IoT hub'ının IP adresi önceden bildirimde bulunmadan değişebileceği için, izin verilenler listelerini yapılandırırken 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'den devralınmıştır. Daha fazla bilgi için bkz. Bir 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 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.
Note
REST ve veri uç noktaları arasında tutarlı bir FQDN sağlamak için 15 Haziran 2020'den itibaren, Microsoft Container Registry veri uç noktası *.cdn.mscr.io yerine *.data.mcr.microsoft.com olarak değiştirilecektir.
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ı | Usage |
|---|---|---|
aka.ms |
443 | Özel URL, sürüm dosyasına yeniden yönlendirme sağlar. |
raw.githubusercontent.com |
443 | GitHub'de 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ıyorsanız, IoT Hub ve kapsayıcı kayıt defterlerine ulaşmak için ara sunucu üzerinden iletişim kurmaları 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ı, motorun başlattığı tüm kapsayıcı modüllerine uygulanır.
Cihazınızdaki
/etc/dockerdizinde dosyayı düzenleyindaemon.json. Dosya mevcut değilse 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şilebilen bir DNS sunucusu adresi kullanın. Örneğin:
{ "dns": ["1.1.1.1"] }Dış DNS'yi engelleyen kurumsal veya özel ağlar için, bunun yerine iç DNS sunucunuzu kullanın:
{ "dns": ["10.0.0.53"] }
Çözüm yönetimi
-
Helpful
- Günlükleri ve teşhisi ayarlayın
- 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 teşhisi ayarlayın
Linux'ta, IoT Edge daemon varsayılan günlük sürücüsü olarak günlükleri kullanır. Daemon günlüklerini sorgulamak için komut satırı aracını journalctl kullanın.
sürüm 1.2'den başlayarak IoT Edge birden çok daemon'a dayanır. Siz journalctl kullanarak her daemon'un günlüklerini tek tek sorgulayabilirsiniz, ancak iotedge system komutlarını kullanarak birleşik günlükleri sorgulayabilirsiniz.
Birleştirilmiş
iotedgekomut:sudo iotedge system logsEşdeğer
journalctlkomut:journalctl -u aziot-edge -u aziot-identityd -u aziot-keyd -u aziot-certd -u aziot-tpmd
Bir IoT Edge dağıtımını test ettiğinizde, günlükleri almak ve sorun gidermek için genellikle cihazlarınıza erişirsiniz. 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. Örneğin logspout-loganalytics kullanın veya kendi tasarımınızı oluşturun.
Varsayılan günlük sürücüsünü ayarlama
Varsayılan olarak, Moby kapsayıcı motoru, kapsayıcı günlük boyutu sınırlandırmalarını ayarlamaz. Zaman içinde, bu varsayılan ayar cihazın günlüklerle dolmasına ve disk alanının dolmasına neden olabilir. Kapsayıcı motorunuzu, günlük kaydı mekanizması olarak local günlük sürücüsünü kullanacak şekilde ayarlayın. Günlük local 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 kullanabilir ve gereksinimlerinize göre farklı boyut sınırları ayarlayabilirsiniz.
Tüm kapsayıcı modülleri için varsayılan log sürücüsünü yapılandırma seçeneği
log driver dosyasındaki değeri, günlük sürücüsünün adı olan daemon.json değerine ayarlayarak kapsayıcı motorunuzu belirli bir günlük sürücüsünü kullanacak şekilde ayarlayın. Aşağıdaki örnek, varsayılan günlük sürücüsünü local log sürücüsüne ayarlar (önerilir).
{
"log-driver": "local"
}
Ayrıca dosyada log-opts uygun değerleri kullanmak için anahtarlarınızı daemon.json yapılandırabilirsiniz. Aşağıdaki örnek, günlük sürücüsünü local olarak ayarlar ve max-size ile max-file seçeneklerini ayarlar.
{
"log-driver": "local",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
Bilgileri daemon.json adlı dosyaya ekleyin veya ekleyerek aşağıdaki konuma yerleştirin.
/etc/docker/
Değişikliklerin etkili olması için kapsayıcı motorunu yeniden başlatın.
Seçenek: Her kapsayıcı modülü için günlük ayarlarını ayarla
Her modülün createOptions bölümünde bu seçenekleri ayarlayın. Örneğin:
"createOptions": {
"HostConfig": {
"LogConfig": {
"Type": "local",
"Config": {
"max-size": "10m",
"max-file": "3"
}
}
}
}
Linux sistemlerinde ek seçenekler
Varsayılan günlük kaydı sürücüsü olarak
systemdayarlayarak kapsayıcı motorunu günlüklerijournald’a 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ı için üretim dağıtımınızı test ve CI/CD işlem hatlarınızla tümleştirin. Azure IoT Edge, Azure DevOps dahil olmak üzere birden çok CI/CD platformlarını destekler. Daha fazla bilgi için bkz. Azure IoT Edge için sürekli tümleştirme ve sürekli dağıtım.
Güvenlik konuları
-
Important
- Kapsayıcı kayıt defterinize erişimi yönetin.
- Kapsayıcıların konak kaynaklarına erişimini sınırlayın.
Konteyner 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üleri değiştiremez. 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 makinenizdekiyle aynı kapsayıcı kayıt defteri kimlik bilgilerini kullanırsınız. Bu yönergeler test ve geliştirme ortamlarını daha kolay ayarlamanıza yardımcı olur ve üretim kullanımına yönelik değildir.
Kayıt defterinize daha güvenli erişim için çeşitli kimlik doğrulama seçenekleri arasından seçim yapın. Active Directory hizmet ilkesi kullanmak, uygulamaların veya hizmetlerin, IoT Edge cihazlarında olduğu gibi, konteyner imajlarını otomatik ve katılımsız olarak çekebilmesi için popüler ve önerilen bir yöntemdir. Depoya özgü belirteçler de kullanabilirsiniz; bu belirteçler, yalnızca oluşturduğunuz Azure Container Registry içinde var olan, uzun veya kısa süreli kimlikler oluşturmanıza ve erişimi depo düzeyine kadar sınırlandırmanıza olanak tanır.
Hizmet sorumlusu oluşturmak için, hizmet sorumlusu oluşturma bölümünde açıklanan iki betiği çalıştırın. Bu betikler aşağıdaki adımları uygular:
İlk komut dosyası hizmet prensibini oluşturur. Hizmet sorumlusu kimliğini ve hizmet sorumlusu parolasını gösterir. Bu değerleri kayıtlarınızda güvenli bir şekilde depolayın.
İkinci betik, hizmet sorumlusuna vermek üzere rol atamaları yapar. Gerekirse daha sonra çalıştırın. parametresi için
rolekullanıcı rolünü kullanın. Rollerin listesi için bkz. Azure Container Registry rolleri ve izinleri.
Hizmet sorumlusu kullanarak kimlik doğrulaması yapmak için, dağıtım bildirimindeki ilk betikten hizmet sorumlusu kimliğini ve parola kimlik bilgilerini sağlayın.
Kullanıcı adı veya istemci kimliği için hizmet sorumlusu kimliğini belirtin.
Parola veya istemci gizli anahtarı için hizmet sorumlusu şifresini belirtin.
Depo kapsamlı belirteçler oluşturmak için depo kapsamlı belirteç oluşturma adımlarını takip edin.
Depo kapsamlı belirteçleri kullanarak kimlik doğrulaması yapmak için, dağıtım bildiriminde depo kapsamlı belirtecinizi oluşturduktan sonra aldığınız belirteç adını ve parola kimlik bilgilerini sağlayın.
Kullanıcı adı için, belirteçteki kullanıcı adını belirtin.
Parola için belirtecin parolalarından birini belirtin.
Note
Gelişmiş bir güvenlik kimlik doğrulaması uyguladıktan sonra, varsayılan kullanıcı adı ve parola erişiminin kullanılamaması için Yönetici kullanıcı ayarını devre dışı bırakın. Kapsayıcı kayıt defterinizin ayarını Azure portalında Settings altında Access Keys seçeneğini belirleyebilirsiniz.
Ana bilgisayar kaynaklarına kapsayıcı erişimini sınırlayın
Paylaşılan konak kaynaklarını modüller arasında dengelemek için her modül için kaynak kullanımıyla ilgili sınırlar ayarlayın. Bu sınırlar, bir modülün çok fazla bellek veya CPU kullanmamasını ve diğer işlemlerin cihazda çalışmasını engellemeyi sağlar. IoT Edge platformu varsayılan olarak modüllerin kaynaklarını sınırlamaz çünkü bir modülün ne kadar kaynağın düzgün çalışması gerektiğini test etmeniz gerekir.
Docker, bellek ve CPU kullanımı gibi kaynakları sınırlamanıza olanak tanır. Daha fazla bilgi için bkz . Bellek, CPU ve GPU'larla çalışma zamanı seçenekleri.
Dağıtım bildirimlerinde oluşturma seçeneklerini kullanarak bu kısıtlamaları tek tek modüllere uygulayabilirsiniz. Daha fazla bilgi için bkz. IoT Edge modülleri için kapsayıcı oluşturma seçeneklerini yapılandırma.
Örneğin, bir modülü 256 MB bellek ve 1 CPU çekirdeği ile sınırlamak için:
"createOptions": {
"HostConfig": {
"Memory": 268435456,
"NanoCPUs": 1000000000
}
}
Sonraki Adımlar
- IoT Edge otomatik dağıtım hakkında daha fazla bilgi edinin.
- IoT Edge'in sürekli tümleştirme ve sürekli dağıtımı nasıl desteklediğini görün.