IoT Edge cihazını ara sunucu üzerinden iletişim kuracak şekilde yapılandırma
Şunlar için geçerlidir: IoT Edge 1.1
Önemli
IoT Edge 1.1 destek sonu tarihi 13 Aralık 2022'ydi. Bu ürünün, hizmetin, teknolojinin veya API’nin nasıl desteklendiği hakkında bilgi edinmek için Microsoft Ürün Yaşam Döngüsü’ne göz atın. IoT Edge'in en son sürümüne güncelleştirme hakkında daha fazla bilgi için bkz . IoT Edge'i güncelleştirme.
IoT Edge cihazları, IoT Hub ile iletişim kurmak için HTTPS istekleri gönderir. Cihazınız ara sunucu kullanan bir ağa bağlıysa, IoT Edge çalışma zamanını sunucu üzerinden iletişim kuracak şekilde yapılandırmanız gerekir. Proxy sunucuları, IoT Edge hub'ı üzerinden yönlendirilmeyen HTTP veya HTTPS isteklerinde bulunurlarsa tek tek IoT Edge modüllerini de etkileyebilir.
Bu makalede, bir IoT Edge cihazını ara sunucunun arkasında yapılandırmak ve yönetmek için aşağıdaki dört adım açıklanmaktadır:
Cihazınıza IoT Edge çalışma zamanını yükleme
IoT Edge yükleme betikleri paketleri ve dosyaları internetten çeker, bu nedenle cihazınızın bu istekleri yapmak için ara sunucu üzerinden iletişim kurması gerekir. Windows cihazları için, yükleme betiği çevrimdışı bir yükleme seçeneği de sağlar.
Bu adım, IoT Edge cihazını ilk kez ayarladığınızda yapılandırmak için tek seferlik bir işlemdir. IoT Edge çalışma zamanını güncelleştirdiğinizde de aynı bağlantılar gereklidir.
Cihazınızda IoT Edge'i ve kapsayıcı çalışma zamanını yapılandırma
IoT Edge, IoT Hub ile iletişimden sorumludur. Kapsayıcı çalışma zamanı kapsayıcı yönetiminden sorumludur, bu nedenle kapsayıcı kayıt defterleriyle iletişim kurar. Bu bileşenlerin her ikisinin de ara sunucu üzerinden web isteklerinde bulunmaları gerekir.
Bu adım, IoT Edge cihazını ilk kez ayarladığınızda yapılandırmak için tek seferlik bir işlemdir.
Cihazınızdaki yapılandırma dosyasında IoT Edge aracı özelliklerini yapılandırma
IoT Edge daemon'ı başlangıçta edgeAgent modülünü başlatır. Ardından edgeAgent modülü IoT Hub'dan dağıtım bildirimini alır ve diğer tüm modülleri başlatır. IoT Edge aracısının IoT Hub'a ilk bağlantıyı yapması için edgeAgent modülü ortam değişkenlerini cihazın kendisinde el ile yapılandırın. İlk bağlantıdan sonra edgeAgent modülünü uzaktan yapılandırabilirsiniz.
Bu adım, IoT Edge cihazını ilk kez ayarladığınızda yapılandırmak için tek seferlik bir işlemdir.
-
IoT Edge cihazınız ayarlandıktan ve ara sunucu aracılığıyla IoT Hub'a bağlandıktan sonra, gelecekteki tüm modül dağıtımlarında bağlantıyı sürdürmeniz gerekir.
Bu adım, her yeni modül veya dağıtım güncelleştirmesinin cihazın ara sunucu üzerinden iletişim kurma becerisini koruması için uzaktan gerçekleştirilir.
Proxy URL'nizi tanıma
Bu makaledeki adımlardan herhangi birine başlamadan önce proxy URL'nizi bilmeniz gerekir.
Proxy URL'leri şu biçimi alır: protocol://proxy_host:proxy_port.
Protokol HTTP veya HTTPS'dir. Docker daemon kapsayıcı kayıt defteri ayarlarınıza bağlı olarak iki protokolü de kullanabilir, ancak IoT Edge daemon ve çalışma zamanı kapsayıcıları ara sunucuya bağlanmak için her zaman HTTP kullanmalıdır.
proxy_host, ara sunucunun adresidir. Proxy sunucunuz kimlik doğrulaması gerektiriyorsa, kimlik bilgilerinizi ara sunucunun bir parçası olarak şu biçimde sağlayabilirsiniz: user:password@proxy_host.
proxy_port, ara sunucusunun ağ trafiğine yanıt verdiği ağ bağlantı noktasıdır.
IoT Edge'i ara sunucu aracılığıyla yükleme
IoT Edge cihazınızın Windows veya Linux üzerinde çalışması fark etmeksizin, yükleme paketlerine ara sunucu üzerinden erişmeniz gerekir. İşletim sisteminize bağlı olarak, IoT Edge çalışma zamanını bir ara sunucu aracılığıyla yükleme adımlarını izleyin.
Linux cihazları
IoT Edge çalışma zamanını bir Linux cihazına yüklüyorsanız, yükleme paketine erişmek için paket yöneticisini proxy sunucunuzdan geçecek şekilde yapılandırın. Örneğin, http-proxy kullanmak için apt-get'i ayarlayın. Paket yöneticiniz yapılandırıldıktan sonra Azure IoT Edge çalışma zamanını her zamanki gibi yükleme başlığı altında yer alan yönergeleri izleyin.
Windows üzerinde Linux için IoT Edge kullanan Windows cihazları
Windows üzerinde Linux için IoT Edge kullanarak IoT Edge çalışma zamanını yüklüyorsanız, IoT Edge varsayılan olarak Linux sanal makinenize yüklenir. Ek yükleme veya güncelleştirme adımları gerekmez.
Windows kapsayıcılarını kullanan Windows cihazları
IoT Edge çalışma zamanını bir Windows cihazına yüklüyorsanız ara sunucudan iki kez geçmeniz gerekir. İlk bağlantı yükleyici betik dosyasını indirir ve ikinci bağlantı gerekli bileşenleri indirmek için yükleme sırasındadır. Ara sunucu bilgilerini Windows ayarlarında yapılandırabilir veya proxy bilgilerinizi doğrudan PowerShell komutlarında ekleyebilirsiniz.
Aşağıdaki adımlarda bağımsız değişkenini kullanan bir Windows yüklemesi örneği gösterilmektedir -proxy
:
Invoke-WebRequest komutunun yükleyici betiğine erişmek için ara sunucu bilgilerine ihtiyacı vardır. Ardından Deploy-IoTEdge komutu, yükleme dosyalarını indirmek için ara sunucu bilgilerine ihtiyaç duyar.
. {Invoke-WebRequest -proxy <proxy URL> -useb aka.ms/iotedge-win} | Invoke-Expression; Deploy-IoTEdge -proxy <proxy URL>
Initialize-IoTEdge komutunun proxy sunucusundan geçmesi gerekmez, bu nedenle ikinci adım yalnızca Invoke-WebRequest için proxy bilgileri gerektirir.
. {Invoke-WebRequest -proxy <proxy URL> -useb aka.ms/iotedge-win} | Invoke-Expression; Initialize-IoTEdge
PROXY sunucusu için URL'ye eklenmeyecek karmaşık kimlik bilgileriniz varsa içindeki parametresini -ProxyCredential
-InvokeWebRequestParameters
kullanın. Örneğin,
$proxyCredential = (Get-Credential).GetNetworkCredential()
. {Invoke-WebRequest -proxy <proxy URL> -ProxyCredential $proxyCredential -useb aka.ms/iotedge-win} | Invoke-Expression; `
Deploy-IoTEdge -InvokeWebRequestParameters @{ '-Proxy' = '<proxy URL>'; '-ProxyCredential' = $proxyCredential }
Proxy parametreleri hakkında daha fazla bilgi için bkz . Invoke-WebRequest. Windows yükleme parametreleri hakkında daha fazla bilgi için bkz . Windows üzerinde IoT Edge için PowerShell betikleri.
IoT Edge ve Moby'yi yapılandırma
IoT Edge, IoT Edge cihazında çalışan iki daemon'a dayanır. Moby daemon, kapsayıcı kayıt defterlerinden kapsayıcı görüntülerini çekmek için web isteklerinde bulunur. IoT Edge daemon'ı IoT Hub ile iletişim kurmak için web isteklerinde bulunur.
Devam eden cihaz işlevselliği için hem Moby hem de IoT Edge daemon'larının proxy sunucusunu kullanacak şekilde yapılandırılması gerekir. Bu adım, ilk cihaz kurulumu sırasında IoT Edge cihazında gerçekleşir.
Moby daemon
Moby Docker üzerinde oluşturulduğundan, Moby daemon'u ortam değişkenleriyle yapılandırmak için Docker belgelerine bakın. Çoğu kapsayıcı kayıt defteri (DockerHub ve Azure Container Registries dahil) HTTPS isteklerini desteklediğinden ayarlamanız gereken parametre HTTPS_PROXY. Aktarım katmanı güvenliğini (TLS) desteklemeyen bir kayıt defterinden görüntü çekiyorsanız HTTP_PROXY parametresini ayarlamanız gerekir.
IoT Edge cihaz işletim sisteminiz için geçerli olan makaleyi seçin:
- Linux'ta Docker daemon'u yapılandırma Linux cihazlarında Moby daemon, Docker adını korur.
- Windows'da Docker daemon'ı yapılandırma Windows cihazlarında Moby daemon'u iotedge-moby olarak adlandırılır. Bir Windows cihazında hem Docker Desktop'ı hem de Moby'yi paralel olarak çalıştırmak mümkün olduğundan adlar farklıdır.
IoT Edge daemon
IoT Edge daemon'u, Moby daemon'a benzer şekilde yapılandırılır. İşletim sisteminize göre hizmet için bir ortam değişkeni ayarlamak için aşağıdaki adımları kullanın.
IoT Edge daemon'ı her zaman IoT Hub'a istek göndermek için HTTPS kullanır.
Linux
IoT Edge daemon'unu yapılandırmak için terminalde bir düzenleyici açın.
sudo systemctl edit iotedge
Ara sunucu URL'sini> proxy sunucu adresiniz ve bağlantı noktanızla değiştirerek <aşağıdaki metni girin. Ardından kaydedin ve çıkın.
[Service]
Environment=https_proxy=<proxy URL>
IoT Edge için yeni yapılandırmayı almak için hizmet yöneticisini yenileyin.
sudo systemctl daemon-reload
Değişikliklerin geçerli olması için IoT Edge'i yeniden başlatın.
sudo systemctl restart iotedge
Ortam değişkeninizin oluşturulduğunu ve yeni yapılandırmanın yüklendiğini doğrulayın.
systemctl show --property=Environment iotedge
Windows üzerinde Linux için IoT Edge kullanan Windows
Windows sanal makinesinde Linux için IoT Edge'inizde oturum açın:
Connect-EflowVm
IoT Edge daemon'unu yapılandırmak için yukarıdaki Linux bölümüyle aynı adımları izleyin.
Windows kapsayıcılarını kullanan Windows
Yönetici olarak bir PowerShell penceresi açın ve kayıt defterini yeni ortam değişkeniyle düzenlemek için aşağıdaki komutu çalıştırın. Proxy URL'sini proxy sunucu adresiniz ve bağlantı noktanızla değiştirin<.>
reg add HKLM\SYSTEM\CurrentControlSet\Services\iotedge /v Environment /t REG_MULTI_SZ /d https_proxy=<proxy URL>
Değişikliklerin geçerli olması için IoT Edge'i yeniden başlatın.
Restart-Service iotedge
IoT Edge aracısını yapılandırma
IoT Edge aracısı, herhangi bir IoT Edge cihazında başlayan ilk modüldür. IoT Edge yapılandırma dosyasındaki bilgiler temel alınarak ilk kez başlatılır. Ardından IoT Edge aracısı, cihazda dağıtılması gereken diğer modülleri bildiren dağıtım bildirimlerini almak için IoT Hub'a bağlanır.
Bu adım, ilk cihaz kurulumu sırasında IoT Edge cihazında bir kez gerçekleştirilir.
IoT Edge cihazınızda config.yaml dosyasını açın. Linux sistemlerinde, bu dosya /etc/iotedge/config.yaml konumunda bulunur. Windows sistemlerinde, bu dosya C:\ProgramData\iotedge\config.yaml konumunda bulunur. Yapılandırma dosyası korumalı olduğundan, dosyaya erişmek için yönetici ayrıcalıklarına ihtiyacınız vardır. Linux sistemlerinde, dosyayı tercih ettiğiniz metin düzenleyicisinde açmadan önce komutunu kullanın
sudo
. Windows'da, Not Defteri gibi bir metin düzenleyicisini yönetici olarak açın ve dosyayı açın.config.yaml dosyasında Edge Aracısı modülü belirtimi bölümünü bulun. IoT Edge aracı tanımı, ortam değişkenleri ekleyebileceğiniz bir env parametresi içerir.
env parametresi için yer tutucu olan küme ayraçlarını kaldırın ve yeni değişkeni yeni bir satıra ekleyin. YAML'deki girintilerin iki boşluk olduğunu unutmayın.
https_proxy: "<proxy URL>"
IoT Edge çalışma zamanı, IoT Hub ile konuşmak için varsayılan olarak AMQP kullanır. Bazı proxy sunucuları AMQP bağlantı noktalarını engeller. Böyle bir durum söz konusuysa edgeAgent'ı WebSocket üzerinden AMQP kullanacak şekilde de yapılandırmanız gerekir. İkinci bir ortam değişkeni ekleyin.
UpstreamProtocol: "AmqpWs"
config.yaml dosyasındaki değişiklikleri kaydedin ve düzenleyiciyi kapatın. Değişikliklerin geçerli olması için IoT Edge'i yeniden başlatın.
Windows üzerinde Linux için Linux ve IoT Edge:
sudo systemctl restart iotedge
Windows kapsayıcılarını kullanan Windows:
Restart-Service iotedge
ortam değişkenleri bölümüne https_proxy parametresini ekleyin ve proxy URL'nizi değeri olarak ayarlayın.
[agent] name = "edgeAgent" type = "docker" [agent.config] image = "mcr.microsoft.com/azureiotedge-agent:1.4" [agent.env] # "RuntimeLogLevel" = "debug" # "UpstreamProtocol" = "AmqpWs" "https_proxy" = "<proxy URL>"
IoT Edge çalışma zamanı, IoT Hub ile konuşmak için varsayılan olarak AMQP kullanır. Bazı proxy sunucuları AMQP bağlantı noktalarını engeller. Böyle bir durum söz konusuysa edgeAgent'ı WebSocket üzerinden AMQP kullanacak şekilde de yapılandırmanız gerekir. Parametresinin açıklamasını kaldırın
UpstreamProtocol
.[agent.config] image = "mcr.microsoft.com/azureiotedge-agent:1.4" [agent.env] # "RuntimeLogLevel" = "debug" "UpstreamProtocol" = "AmqpWs" "https_proxy" = "<proxy URL>"
Değişiklikleri kaydedin ve düzenleyiciyi kapatın. En son değişikliklerinizi uygulayın.
sudo iotedge config apply
bölümünde kullanarak
docker inspect edgeAgent
proxy ayarlarınızınEnv
yayıldığını doğrulayın. Aksi takdirde kapsayıcı yeniden oluşturulmalıdır.sudo docker rm -f edgeAgent
IoT Edge çalışma zamanı bir dakika içinde yeniden oluşturmalıdır
edgeAgent
. Kapsayıcı yeniden çalıştırıldıktan sonraedgeAgent
aradocker inspect edgeAgent
sunucu ayarlarının yapılandırma dosyasıyla eşleşip eşleşmedığını doğrulayın.
Dağıtım bildirimlerini yapılandırma
IoT Edge cihazınız proxy sunucunuzla çalışacak şekilde yapılandırıldıktan sonra, gelecekteki dağıtım bildirimlerinde HTTPS_PROXY ortam değişkenini bildirmeye devam etmeniz gerekir. Dağıtım bildirimlerini Azure portal sihirbazını kullanarak veya bir dağıtım bildirimi JSON dosyasını düzenleyerek düzenleyebilirsiniz.
IoT Hub ile bağlantı kurabilmeleri için her zaman edgeAgent ve edgeHub adlı iki çalışma zamanı modülünü ara sunucu üzerinden iletişim kuracak şekilde yapılandırın. EdgeAgent modülünden ara sunucu bilgilerini kaldırırsanız bağlantıyı yeniden kurmanın tek yolu, önceki bölümde açıklandığı gibi cihazdaki yapılandırma dosyasını düzenlemektir.
edgeAgent ve edgeHub modüllerine ek olarak, diğer modüllerin ara sunucu yapılandırması gerekebilir. Blob depolama gibi IoT Hub'ın yanı sıra Azure kaynaklarına erişmesi gereken modüllerin dağıtım bildirim dosyasında belirtilen HTTPS_PROXY değişkenine sahip olması gerekir.
Aşağıdaki yordam IoT Edge cihazının ömrü boyunca geçerlidir.
Azure portal
IoT Edge cihazları için dağıtım oluşturmak üzere Modülleri ayarlama sihirbazını kullandığınızda, her modülün ara sunucu bağlantılarını yapılandırabileceğiniz bir Ortam Değişkenleri bölümü vardır.
IoT Edge aracısını ve IoT Edge hub modüllerini yapılandırmak için sihirbazın ilk adımında Çalışma Zamanı Ayarları'nı seçin.
https_proxy ortam değişkenini hem IoT Edge aracısına hem de IoT Edge hub modülü tanımlarına ekleyin. IoT Edge cihazınızdaki yapılandırma dosyasına UpstreamProtocol ortam değişkenini eklediyseniz, bunu IoT Edge aracı modülü tanımına da ekleyin.
Dağıtım bildirimine eklediğiniz diğer tüm modüller aynı deseni izler.
JSON dağıtım bildirim dosyaları
Visual Studio Code'daki şablonları kullanarak veya JSON dosyalarını el ile oluşturarak IoT Edge cihazları için dağıtımlar oluşturursanız, ortam değişkenlerini her modül tanımına doğrudan ekleyebilirsiniz.
Aşağıdaki JSON biçimini kullanın:
"env": {
"https_proxy": {
"value": "<proxy URL>"
}
}
Ortam değişkenleri dahilken modül tanımınız aşağıdaki edgeHub örneğine benzer olmalıdır:
"edgeHub": {
"type": "docker",
"settings": {
"image": "mcr.microsoft.com/azureiotedge-hub:1.1",
"createOptions": "{}"
},
"env": {
"https_proxy": {
"value": "http://proxy.example.com:3128"
}
},
"status": "running",
"restartPolicy": "always"
}
IoT Edge cihazınızdaki confige.yaml dosyasına UpstreamProtocol ortam değişkenini eklediyseniz, bunu da IoT Edge aracı modülü tanımına ekleyin.
"env": {
"https_proxy": {
"value": "<proxy URL>"
},
"UpstreamProtocol": {
"value": "AmqpWs"
}
}
Trafik denetleme proxy'leriyle çalışma
Zscaler gibi bazı proxy'ler TLS ile şifrelenmiş trafiği inceleyebilir. TLS trafik denetimi sırasında, ara sunucu tarafından döndürülen sertifika hedef sunucudan gelen sertifika değildir, bunun yerine proxy'nin kendi kök sertifikası tarafından imzalanan sertifikadır. Varsayılan olarak, bu proxy'nin sertifikası IoT Edge modülleri (edgeAgent ve edgeHub dahil) tarafından güvenilir değildir ve TLS el sıkışması başarısız olur.
Bu sorunu çözmek için proxy'nin kök sertifikasına hem işletim sistemi hem de IoT Edge modülleri tarafından güvenilmesi gerekir.
Ana bilgisayar işletim sisteminizin güvenilen kök sertifika deposunda ara sunucu sertifikasını yapılandırın. Kök sertifika yükleme hakkında daha fazla bilgi için bkz . kök CA'yı işletim sistemi sertifika deposuna yükleme.
IoT Edge cihazınızı güven paketindeki sertifikaya başvurarak bir ara sunucu üzerinden iletişim kuracak şekilde yapılandırın. Güven paketini yapılandırma hakkında daha fazla bilgi için bkz . Güvenilen kök CA'yı (güven paketi) yönetme.
IoT Edge tarafından yönetilmeyen kapsayıcılar için trafik denetimi ara sunucusu desteğini yapılandırmak için ara sunucu sağlayıcınıza başvurun.
IoT Edge'in iletişim kurduğunu hedeflerin tam etki alanı adları (FQDN'ler)
Ara sunucunuzda İnternet bağlantısı için tüm FQDN'lere izin vermenizi gerektiren bir güvenlik duvarı varsa, hangi FQDN'lerin ekleneceğini belirlemek için IoT Edge cihazlarından bağlantılara izin ver'deki listeyi gözden geçirin.
Sonraki adımlar
IoT Edge çalışma zamanının rolleri hakkında daha fazla bilgi edinin.
Azure IoT Edge için yaygın sorunlar ve çözümleri ile yükleme ve yapılandırma hatalarını giderme