IoT Edge cihazını ara sunucu üzerinden iletişim kuracak şekilde yapılandırma

Şunlar için geçerlidir:IoT Edge 1.4 checkmark IoT Edge 1.4

Önemli

IoT Edge 1.4 desteklenen sürümdür. Önceki bir sürümdeyseniz 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ğladıysanız IoT Edge çalışma zamanını sunucu üzerinden iletişim kuracak şekilde yapılandırmanız gerekir. Proxy sunucuları, IoT Edge hub'ı üzerinden yönlendirmediğiniz 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:

  1. 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ştirirken de aynı bağlantılara ihtiyacınız vardır.

  2. 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.

  3. 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ı yapabilmesi 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.

  4. Gelecekteki tüm modül dağıtımları için ara sunucu üzerinden iletişim kurarak herhangi bir modül için ortam değişkenlerini ayarlayın

    Bir IoT Edge cihazını kurup ara sunucu aracılığıyla IoT Hub'a bağladı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öneticinizi yapılandırdı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. Diğer adımları yüklemeniz veya güncelleştirmeniz 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 :

  1. 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>
    
  2. 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 ekleyememenize neden olan karmaşık kimlik bilgileriniz varsa içindeki parametresini -ProxyCredential-InvokeWebRequestParameterskullanı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.

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 proxy sunucusunu kullanmak için hem Moby hem de IoT Edge daemon'larını yapılandırmanız 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. İş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 aziot-edged

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>"

Sürüm 1.2'den itibaren IoT Edge, IoT Hub veya IoT Hub Cihazı Sağlama Hizmeti ile cihaz sağlamayı işlemek için IoT kimlik hizmetini kullanır. IoT kimlik hizmeti daemon'unu yapılandırmak için terminalde bir düzenleyici açın.

sudo systemctl edit aziot-identityd

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>"

Yeni yapılandırmaları almak için hizmet yöneticisini yenileyin.

sudo systemctl daemon-reload

Her iki daemon'da yapılan değişikliklerin etkili olması için IoT Edge sistem hizmetlerini yeniden başlatın.

sudo iotedge system restart

Ortam değişkenlerinizin ve yeni yapılandırmanın mevcut olduğunu doğrulayın.

systemctl show --property=Environment aziot-edged
systemctl show --property=Environment aziot-identityd

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 bu makalenin 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. Bu modül, IoT Edge yapılandırma dosyasındaki bilgilere göre ilk kez başlar. Ardından IoT Edge aracısı, dağıtım bildirimlerini almak için IoT Hub'a bağlanır. Bildirim, cihazın dağıtılması gereken diğer modülleri bildirir.

Bu adım, ilk cihaz kurulumu sırasında IoT Edge cihazında bir kez gerçekleştirilir.

  1. IoT Edge cihazınızda yapılandırma dosyasını açın: /etc/aziot/config.toml. Yapılandırma dosyasına erişmek için yönetici ayrıcalıklarına sahip olmanız gerekir. Linux sistemlerinde, dosyayı tercih ettiğiniz metin düzenleyicisinde açmadan önce komutunu kullanın sudo .

  2. Yapılandırma dosyasında, başlangıçta kullanılacak edgeAgent modülünün tüm yapılandırma bilgilerini içeren bölümünü bulun [agent] . Bölümün [agent] açıklamasız olduğundan emin olun. [agent] Bölüm eksikse bölümüne ekleyinconfig.toml. IoT Edge aracı tanımı, ortam değişkenleri ekleyebileceğiniz bir [agent.env] alt bölüm içerir.

  3. 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>"
    
  4. 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>"
    
  5. 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>"
    
  6. 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>"
    
  7. Değişiklikleri kaydedin ve düzenleyiciyi kapatın. En son değişikliklerinizi uygulayın.

    sudo iotedge config apply
    
  8. bölümünde kullanarak docker inspect edgeAgent proxy ayarlarınızın Env yayıldığını doğrulayın. Aksi takdirde kapsayıcıyı yeniden oluşturmanız gerekir.

    sudo docker rm -f edgeAgent
    
  9. IoT Edge çalışma zamanı bir dakika içinde yeniden oluşturmalıdır edgeAgent . edgeAgent Kapsayıcı yeniden çalıştırıldıktan sonra, ara sunucu ayarlarının docker inspect edgeAgent yapılandırma dosyasıyla eşleşdiğini doğrulamak için komutunu kullanın.

Dağıtım bildirimlerini yapılandırma

IoT Edge cihazınızı proxy sunucunuzla çalışacak şekilde yapılandırdıktan sonra, HTTPS_PROXY ortam değişkenini gelecekteki dağıtım bildirimlerinde bildirin. 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'ni seçin.

Screenshot of how to configure advanced Edge Runtime settings.

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.

Screenshot of how to set the https_proxy environment variable.

Dağıtım bildirimine eklediğiniz diğer tüm modüller aynı deseni izler. Yaptığınız değişiklikleri kaydetmek için Apply'ı (Uygula) seçin.

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. Bunları Azure portalına eklemediyseniz, bunları buraya JSON bildirim dosyanıza ekleyin. değerini kendi değerinizle değiştirin <proxy URL> .

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.4",
        "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, IoT Edge modülleri (edgeAgent ve edgeHub dahil) bu proxy'nin sertifikasına güvenmez ve TLS el sıkışması başarısız olur.

Başarısız el sıkışmasını çözmek için, aşağıdaki adımlarla hem işletim sistemini hem de IoT Edge modüllerini proxy'nin kök sertifikasına güvenecek şekilde yapılandırın.

  1. 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.

  2. 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 sunucunuzun güvenlik duvarı tüm FQDN'leri İnternet bağlantısı için izin verilenler listenize eklemenizi gerektiriyorsa, 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