Aracılığıyla paylaş


Hiyerarşi oluşturmak için Azure IoT Edge cihazlarını bağlama

Şunlar için geçerlidir: IoT Edge 1.5 onay işareti IoT Edge 1.5 IoT Edge 1.4 onay işareti 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.

Bu makalede IoT Edge ağ geçidi ile aşağı akış IoT Edge cihazı arasında güvenilir bağlantı kurma adımları sağlanır. Bu yapılandırma iç içe kenar olarak da bilinir.

Bir ağ geçidi senaryosunda IoT Edge cihazı hem ağ geçidi hem de aşağı akış cihazı olabilir. Cihaz hiyerarşisi oluşturmak için birden çok IoT Edge ağ geçidi katmanlanabilir. Aşağı akış (alt) cihazlar, ağ geçidi (üst) cihazları aracılığıyla kimlik doğrulaması yapabilir ve ileti gönderebilir veya alabilir.

Bir ağ geçidi hiyerarşisinde IoT Edge cihazları için iki farklı yapılandırma vardır ve bu makale her ikisini de ele alır. Birincisi en üst katman IoT Edge cihazıdır. Birden çok IoT Edge cihazı birbirine bağlandığında, üst cihazı olmayan ancak doğrudan IoT Hub'a bağlanan tüm cihazlar en üst katmanda kabul edilir. Bu cihaz, altındaki tüm cihazlardan gelen istekleri işlemekten sorumludur. Diğer yapılandırma, hiyerarşinin alt katmanındaki tüm IoT Edge cihazları için geçerlidir. Bu cihazlar diğer aşağı akış IoT ve IoT Edge cihazları için bir ağ geçidi olabilir, ancak aynı zamanda tüm iletişimleri kendi üst cihazları üzerinden yönlendirmesi gerekir.

Bazı ağ mimarileri, yalnızca bir hiyerarşideki en üst IoT Edge cihazının buluta bağlanabilmesini gerektirir. Bu yapılandırmada, hiyerarşinin alt katmanlarında yer alan tüm IoT Edge cihazları yalnızca ağ geçidi (üst) cihazları ve aşağı akış (alt) cihazlarıyla iletişim kurabilir.

Bu makaledeki tüm adımlar, IoT Edge cihazını aşağı akış IoT cihazları için bir ağ geçidi olacak şekilde ayarlayan saydam bir ağ geçidi olarak davranacak şekilde yapılandırma konusunda derlenmektedir. Tüm ağ geçidi senaryolarında aynı temel adımlar geçerlidir:

  • Kimlik doğrulaması: Ağ geçidi hiyerarşisindeki tüm cihazlar için IoT Hub kimlikleri oluşturun.
  • Yetkilendirme: Aşağı akış cihazlarını IoT Hub'a bağlanacakları gibi üst cihazlara bağlanma yetkisi vermek için IoT Hub'da üst/alt ilişkiyi ayarlayın.
  • Ağ geçidi bulma: Aşağı akış cihazının ana cihazını yerel ağda bulabildiğinden emin olun.
  • Güvenli bağlantı: Aynı zincirin parçası olan güvenilen sertifikalarla güvenli bir bağlantı kurun.

Önkoşullar

  • Ücretsiz veya standart bir IoT hub'ı.
  • En az iki IoT Edge cihazı, biri en üst katman cihaz ve bir veya daha fazla alt katman cihazı olmak üzere. Kullanılabilir IoT Edge cihazlarınız yoksa Azure IoT Edge'i Ubuntu sanal makinelerinde çalıştırabilirsiniz.
  • Cihazları oluşturmak ve yönetmek için Azure CLI kullanıyorsanız Azure IoT uzantısını yükleyin.

İpucu

Bu makalede, senaryonuz için doğru ağ geçidi hiyerarşisini oluşturmanıza yardımcı olacak ayrıntılı adımlar ve seçenekler sağlanır. Kılavuzlu bir öğretici için bkz . Ağ geçitlerini kullanarak IoT Edge cihazları hiyerarşisi oluşturma.

Ağ geçidi hiyerarşisi oluşturma

Senaryoda IoT Edge cihazları için üst/alt ilişkileri tanımlayarak bir IoT Edge ağ geçidi hiyerarşisi oluşturursunuz. Yeni bir cihaz kimliği oluşturduğunuzda bir üst cihaz ayarlayabilir veya mevcut bir cihaz kimliğinin üst ve alt öğelerini yönetebilirsiniz.

Üst/alt ilişkileri ayarlama adımı, aşağı akış cihazlarını IoT Hub'a bağlanacakları gibi üst cihazlarına bağlanma yetkisi verir.

Yalnızca IoT Edge cihazları üst cihaz olabilir, ancak hem IoT Edge cihazları hem de IoT cihazları alt öğe olabilir. Bir ebeveynin çok sayıda çocuğu olabilir, ancak bir çocuğun yalnızca bir ebeveyni olabilir. Bir ağ geçidi hiyerarşisi, bir cihazın alt öğesinin başka bir cihazın üst öğesi olması için üst/alt kümeler birbirine zincirlenerek oluşturulur.

Varsayılan olarak, bir üst öğenin en fazla 100 alt öğesi olabilir. Üst cihazın edgeHub modülünde MaxConnectedClients ortam değişkenini ayarlayarak bu sınırı değiştirebilirsiniz.

Azure portalında, yeni cihaz kimlikleri oluşturduğunuzda veya mevcut cihazları düzenleyerek üst/alt ilişkiyi yönetebilirsiniz.

Yeni bir IoT Edge cihazı oluşturduğunuzda, söz konusu hub'daki mevcut IoT Edge cihazları listesinden üst ve alt cihazları seçme seçeneğiniz vardır.

  1. Azure portalında IoT hub'ınıza gidin.
  2. Cihaz yönetimi menüsünün altında Cihazlar'ı seçin.
  3. Cihaz ekle'yi seçin, ardından IoT Edge Cihazı onay kutusunu işaretleyin.
  4. Cihaz kimliği ve kimlik doğrulama ayarlarının yanı sıra, Bir üst cihaz ayarlayabilir veya Alt cihazları seçebilirsiniz.
  5. Ebeveyn veya alt öğe olarak kullanmak istediğiniz cihazı veya cihazları seçin.

Ayrıca, mevcut cihazlar için üst/alt ilişki oluşturabilir veya yönetebilirsiniz.

  1. Azure portalında IoT hub'ınıza gidin.
  2. Cihaz yönetimi menüsünde Cihazlar'ı seçin.
  3. Listeden yönetmek istediğiniz IoT Edge cihazını seçin.
  4. Üst cihaz dişlisi ayarla simgesini veya Alt cihazları yönet'i seçin.
  5. Üst veya alt cihazları ekleyin veya kaldırın.

Not

Üst-alt öğe ilişkilerini program aracılığıyla oluşturmak istiyorsanız C#, Java veya Node.js IoT Hub Hizmeti SDK'sını kullanabilirsiniz.

Aşağıda, C# SDK'sını kullanarak alt cihaz atama örneği verilmiştir. Görev RegistryManager_AddAndRemoveDeviceWithScope() , program aracılığıyla üç katmanlı hiyerarşinin nasıl oluşturulacağını gösterir. IoT Edge cihazı, üst katman olarak birinci katmandadır. Bir diğer IoT Edge cihazı, hem alt hem de üst öğe olarak hizmet veren ikinci katmandır. Son olarak, bir IoT cihazı en düşük katman alt cihaz olarak üçüncü katmandadır.

İstemci sertifikaları oluşturma

Kendi aralarında güvenli bir iletişim kurmak için tutarlı bir sertifika zincirinin aynı ağ geçidi hiyerarşisindeki cihazlara yüklenmesi gerekir. İster IoT Edge cihazı ister IoT aşağı akış cihazı olsun, hiyerarşideki her cihaz aynı kök CA sertifikasının bir kopyasına ihtiyaç duyar. Ardından hiyerarşideki her IoT Edge cihazı, Edge CA sertifikasının kökü olarak bu kök CA sertifikasını kullanır.

Bu kurulumla, her aşağı akış IoT Edge cihazı, bağlandıkları edgeHub'ın paylaşılan kök CA sertifikası tarafından imzalanan bir sunucu sertifikasına sahip olduğunu doğrulayarak üstlerinin kimliğini doğrulayabilir.

Ağ geçidi ve aşağı akış cihazında kök CA tarafından verilen sertifika zincirinin çizimi

IoT Edge sertifika gereksinimleri hakkında daha fazla bilgi için bkz . Azure IoT Edge'in sertifikaları nasıl kullandığını anlama.

  1. Aşağıdaki sertifikaları oluşturun veya isteyin:

    • Belirli bir ağ geçidi hiyerarşisindeki tüm cihazlar için en üstteki paylaşılan sertifika olan kök CA sertifikası. Bu sertifika tüm cihazlara yüklenir.
    • Kök sertifika zincirine eklemek istediğiniz tüm ara sertifikalar .
    • Kök ve ara sertifikalar tarafından oluşturulan bir Edge CA sertifikası ve özel anahtarı. Ağ geçidi hiyerarşisindeki her IoT Edge cihazı için benzersiz bir Edge CA sertifikasına ihtiyacınız vardır.

    Otomatik olarak imzalanan bir sertifika yetkilisi kullanabilir veya Baltimore, Verisign, Digicert veya GlobalSign gibi güvenilir bir ticari sertifika yetkilisinden bir sertifika satın alabilirsiniz.

  2. Test için kullanılacak kendi sertifikalarınız yoksa, bir kök ve ara sertifika kümesi oluşturun, ardından her cihaz için Edge CA sertifikaları oluşturun. Bu makalede, örnekler ve öğreticiler için test CA sertifikaları kullanılarak oluşturulan test sertifikalarını kullanacağız. Örneğin, aşağıdaki komutlar bir kök CA sertifikası, bir üst cihaz sertifikası ve bir alt cihaz sertifikası oluşturur.

    # !!! For test only - do not use in production !!!
    
    # Create the the root CA test certificate
    ./certGen.sh create_root_and_intermediate
    
    # Create the parent (gateway) device test certificate 
    # signed by the shared root CA certificate
    ./certGen.sh create_edge_device_ca_certificate "gateway"
    
    # Create the downstream device test certificate
    # signed by the shared root CA certificate
    ./certGen.sh create_edge_device_ca_certificate "downstream"
    

    Uyarı

    Üretim için test betikleri tarafından oluşturulan sertifikaları kullanmayın. Bunlar sabit kodlanmış parolalar içerir ve varsayılan olarak 30 gün sonra süresi dolar. Ca Sertifikalarını anlamanıza yardımcı olmak için test CA sertifikaları tanıtım amacıyla sağlanır. Üretimde sertifikasyon oluşturma ve yaşam süresi yönetimi için kendi güvenlik en iyi yöntemlerinizi kullanın.

    Test sertifikaları oluşturma hakkında daha fazla bilgi için bkz . IoT Edge cihaz özelliklerini test etmek için tanıtım sertifikaları oluşturma.

  3. Sertifikaları ve anahtarları her cihaza aktarmanız gerekir. USB sürücüsü, Azure Key Vault gibi bir hizmet veya Güvenli dosya kopyası gibi bir işlev kullanabilirsiniz. Senaryonuza en uygun yöntemlerden birini seçin. Dosyaları sertifikalar ve anahtarlar için tercih edilen dizine kopyalayın. Sertifikalar ve /var/aziot/secrets anahtarlar için kullanın/var/aziot/certs.

Bir cihaza sertifika yükleme hakkında daha fazla bilgi için bkz . IoT Edge cihazında sertifikaları yönetme.

Üst cihazı yapılandırma

Üst cihazınızı yapılandırmak için yerel veya uzak bir komut kabuğu açın.

Güvenli bağlantıları etkinleştirmek için, bir ağ geçidi senaryosundaki her IoT Edge üst cihazının benzersiz bir Edge CA sertifikası ve ağ geçidi hiyerarşisindeki tüm cihazlar tarafından paylaşılan kök CA sertifikasının bir kopyasıyla yapılandırılması gerekir.

  1. Sertifikalarınızın biçim gereksinimlerini karşıladığından denetleyin.

  2. Kök CA sertifikasını, üst Edge CA sertifikasını ve üst özel anahtarı üst cihaza aktarın.

  3. Sertifikaları ve anahtarları doğru dizinlere kopyalayın. Cihaz sertifikaları için tercih edilen dizinler sertifikalar /var/aziot/certs ve /var/aziot/secrets anahtarlar içindir.

    ### Copy device certificate ###
    
    # If the device certificate and keys directories don't exist, create, set ownership, and set permissions
    sudo mkdir -p /var/aziot/certs
    sudo chown aziotcs:aziotcs /var/aziot/certs
    sudo chmod 755 /var/aziot/certs
    
    sudo mkdir -p /var/aziot/secrets
    sudo chown aziotks:aziotks /var/aziot/secrets
    sudo chmod 700 /var/aziot/secrets
    
    # Copy full-chain device certificate and private key into the correct directory
    sudo cp iot-edge-device-ca-gateway-full-chain.cert.pem /var/aziot/certs
    sudo cp iot-edge-device-ca-gateway.key.pem /var/aziot/secrets
    
    ### Root certificate ###
    
    # Copy root certificate into the /certs directory
    sudo cp azure-iot-test-only.root.ca.cert.pem /var/aziot/certs
    
    # Copy root certificate into the CA certificate directory and add .crt extension.
    # The root certificate must be in the CA certificate directory to install it in the certificate store.
    # Use the appropriate copy command for your device OS or if using EFLOW.
    
    # For Ubuntu and Debian, use /usr/local/share/ca-certificates/
    sudo cp azure-iot-test-only.root.ca.cert.pem /usr/local/share/azure-iot-test-only.root.ca.cert.pem.crt
    # For EFLOW, use /etc/pki/ca-trust/source/anchors/
    sudo cp azure-iot-test-only.root.ca.cert.pem /etc/pki/ca-trust/source/anchors/azure-iot-test-only.root.ca.pem.crt
    
  4. Sertifikaların ve anahtarların sahipliğini ve izinlerini değiştirin.

    # Give aziotcs ownership to certificates
    # Read and write for aziotcs, read-only for others
    sudo chown -R aziotcs:aziotcs /var/aziot/certs
    sudo find /var/aziot/certs -type f -name "*.*" -exec chmod 644 {} \;
    
    # Give aziotks ownership to private keys
    # Read and write for aziotks, no permission for others
    sudo chown -R aziotks:aziotks /var/aziot/secrets
    sudo find /var/aziot/secrets -type f -name "*.*" -exec chmod 600 {} \;
    
    # Verify permissions of directories and files
    sudo ls -Rla /var/aziot
    

    Doğru sahiplik ve izin içeren listenin çıkışı aşağıdakine benzer:

    azureUser@vm:/var/aziot$ sudo ls -Rla /var/aziot
    /var/aziot:
    total 16
    drwxr-xr-x  4 root    root    4096 Dec 14 00:16 .
    drwxr-xr-x 15 root    root    4096 Dec 14 00:15 ..
    drwxr-xr-x  2 aziotcs aziotcs 4096 Jan 14 00:31 certs
    drwx------  2 aziotks aziotks 4096 Jan 23 17:23 secrets
    
    /var/aziot/certs:
    total 20
    drwxr-xr-x 2 aziotcs aziotcs 4096 Jan 14 00:31 .
    drwxr-xr-x 4 root    root    4096 Dec 14 00:16 ..
    -rw-r--r-- 1 aziotcs aziotcs 1984 Jan 14 00:24 azure-iot-test-only.root.ca.cert.pem
    -rw-r--r-- 1 aziotcs aziotcs 5887 Jan 14 00:27 iot-edge-device-ca-gateway-full-chain.cert.pem
    
    /var/aziot/secrets:
    total 16
    drwx------ 2 aziotks aziotks 4096 Jan 23 17:23 .
    drwxr-xr-x 4 root    root    4096 Dec 14 00:16 ..
    -rw------- 1 aziotks aziotks 3243 Jan 14 00:28 iot-edge-device-ca-gateway.key.pem
    
  5. Platforma özgü komutunu kullanarak cihazdaki sertifika deposunu güncelleştirerek kök CA sertifikasını üst IoT Edge cihazına yükleyin.

    # Update the certificate store
    
    # For Ubuntu or Debian - use update-ca-certificates
    sudo update-ca-certificates
    # For EFLOW or RHEL - use update-ca-trust
    sudo update-ca-trust
    

    EFLOW'da kullanma update-ca-trust hakkında daha fazla bilgi için bkz . CBL-Mariner SSL CA sertifika yönetimi.

Komutu, öğesine /etc/ssl/certsbir sertifika eklendiğini bildirir.

Updating certificates in /etc/ssl/certs...
1 added, 0 removed; done.

Üst yapılandırma dosyasını güncelleştirme

Cihazınızda IoT Edge zaten yüklü olmalıdır. Aksi takdirde, tek bir Linux IoT Edge cihazını el ile sağlama adımlarını izleyin.

  1. Yapılandırma dosyasının /etc/aziot/config.toml üst cihazda mevcut olduğunu doğrulayın.

    Yapılandırma dosyası cihazınızda yoksa, şablon dosyasını temel alarak oluşturmak için aşağıdaki komutu kullanın:

    sudo cp /etc/aziot/config.toml.edge.template /etc/aziot/config.toml
    

    Bu bölümde yapılandırma parametreleri eklemek için şablon dosyasını başvuru olarak da kullanabilirsiniz.

  2. Düzenleyici kullanarak IoT Edge yapılandırma dosyasını açın. Örneğin, dosyayı açmak için düzenleyiciyi /etc/aziot/config.toml kullanınnano.

    sudo nano /etc/aziot/config.toml
    
  3. hostname parametresini bulun veya yapılandırma dosyasının başına ekleyin. Değeri, IoT Edge üst cihazının tam etki alanı adı (FQDN) veya IP adresi olacak şekilde güncelleştirin. Örneğin:

    hostname = "10.0.0.4"
    

    Ağ geçidi bulmayı etkinleştirmek için her IoT Edge ağ geçidi (üst) cihazının alt cihazlarının yerel ağda bulmak için kullanacağı bir konak adı parametresi belirtmesi gerekir. Her aşağı akış IoT Edge cihazının üst öğesini tanımlamak için bir parent_hostname parametresi belirtmesi gerekir. Tek bir IoT Edge cihazının hem üst hem de alt cihaz olduğu hiyerarşik bir senaryoda her iki parametreye de ihtiyacı vardır.

    Konak adı ve trust_bundle_cert parametreleri, herhangi bir bölümden önce yapılandırma dosyasının başında olmalıdır. Parametreyi tanımlı bölümlerden önce eklemek, doğru uygulandığından emin olur.

    Sunucu sertifikası ortak adı için karakter sınırı olan 64 karakterden kısa bir konak adı kullanın.

    Ağ geçidi hiyerarşisi genelinde konak adı deseniyle tutarlı olun. FQDN'leri veya IP adreslerini kullanın, ancak ikisini birden kullanmayın. Aşağı akış cihazlarını bağlamak için FQDN veya IP adresi gereklidir.

    edgeHub kapsayıcısı oluşturulmadan önce konak adını ayarlayın. edgeHub çalışıyorsa, yapılandırma dosyasındaki ana bilgisayar adı değiştirildiğinde kapsayıcı yeniden başlatılana kadar geçerli olmaz. Konak adının uygulandığını doğrulama hakkında daha fazla bilgi için üst yapılandırmayı doğrulama bölümüne bakın.

  4. Trust bundle cert parametresini bulun veya yapılandırma dosyasının başına ekleyin.

    parametresini trust_bundle_cert dosya URI'siyle cihazınızdaki kök CA sertifikasına güncelleştirin. Örneğin:

    trust_bundle_cert = "file:///var/aziot/certs/azure-iot-test-only.root.ca.cert.pem"
    
  5. Yapılandırma dosyasında Edge CA sertifikası bölümünü bulun veya ekleyin. Sertifikayı cert ve özel anahtar pk parametrelerini, üst IoT Edge cihazındaki tam zincir sertifikası ve anahtar dosyaları için dosya URI yolları ile güncelleştirin. IoT Edge, sertifikanın ve özel anahtarın metin tabanlı gizlilik açısından geliştirilmiş posta (PEM) biçiminde olmasını gerektirir. Örneğin:

    [edge_ca]
    cert = "file:///var/aziot/certs/iot-edge-device-ca-gateway-full-chain.cert.pem"
    pk = "file:///var/aziot/secrets/iot-edge-device-ca-gateway.key.pem"
    
  6. IoT Edge cihazınızın başlatıldığında IoT Edge aracısının doğru sürümünü kullandığını doğrulayın. Varsayılan Edge Aracısı bölümünü bulun ve IoT Edge için görüntü değerini 1.5 sürümüne ayarlayın. Örneğin:

    [agent]
    name = "edgeAgent"
    type = "docker"
    
    [agent.config]
    image = "mcr.microsoft.com/azureiotedge-agent:1.5"
    
  7. Üst yapılandırma dosyanızın başlangıcı aşağıdaki örneğe benzer olmalıdır.

    hostname = "10.0.0.4"
    trust_bundle_cert = "file:///var/aziot/certs/azure-iot-test-only.root.ca.cert.pem"
    
    [edge_ca]
    cert = "file:///var/aziot/certs/iot-edge-device-ca-gateway-full-chain.cert.pem"
    pk = "file:///var/aziot/secrets/iot-edge-device-ca-gateway.key.pem"
    
  8. Yapılandırma dosyasını kaydedin ve kapatın config.toml . Örneğin nano düzenleyiciyi kullanıyorsanız Ctrl+O - Yazma, Enter ve Ctrl+X - Çıkış'ı seçin.

  9. Daha önce IoT Edge için başka sertifikalar kullandıysanız, yeni sertifikalarınızın uygulandığından emin olmak için aşağıdaki iki dizindeki dosyaları silin:

    • /var/lib/aziot/certd/certs
    • /var/lib/aziot/keyd/keys
  10. Değişikliklerinizi uygulayın.

    sudo iotedge config apply
    
  11. Yapılandırmadaki hataları denetleyin.

    sudo iotedge check --verbose
    

    Not

    Yeni sağlanan bir cihazda IoT Edge Hub ile ilgili bir hata görebilirsiniz:

    üretime hazır olma ×: Edge Hub'ın depolama dizini konak dosya sisteminde kalıcı hale geldi - Hata

    EdgeHub kapsayıcısının geçerli durumu denetlenemedi

    IoT Edge Hub modülü çalışmadığından yeni sağlanan bir cihazda bu hata beklenir. Hatayı çözmek için IoT Hub'da cihazın modüllerini ayarlayın ve bir dağıtım oluşturun. Cihaz için dağıtım oluşturma, IoT Edge Hub modülü dahil olmak üzere cihazdaki modülleri başlatır.

Üst yapılandırmayı doğrulama

Aşağı akış cihazları bağlandığında IoT Edge sunucu sertifikasında bu değeri kullandığından, ana bilgisayar adı nitelenmiş bir etki alanı adı (FQDN) veya IoT Edge cihazının IP adresi olmalıdır. Değerler eşleşmelidir, aksi zaman IP adresi uyuşmazlığı hatası alırsınız.

Konak adını doğrulamak için edgeHub kapsayıcısının ortam değişkenlerini incelemeniz gerekir.

  1. Çalışan IoT Edge kapsayıcılarını listeleyin.

    iotedge list
    

    edgeAgent ve edgeHub kapsayıcılarının çalıştığını doğrulayın. Komut çıktısı aşağıdaki örneğe benzer olmalıdır.

    NAME                        STATUS           DESCRIPTION      CONFIG
    SimulatedTemperatureSensor  running          Up 5 seconds     mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:1.0
    edgeAgent                   running          Up 17 seconds    mcr.microsoft.com/azureiotedge-agent:1.5
    edgeHub                     running          Up 6 seconds     mcr.microsoft.com/azureiotedge-hub:1.5
    
  2. edgeHub kapsayıcısını inceleyin.

    sudo docker inspect edgeHub
    
  3. Çıktıda Env bölümünde EdgeDeviceHostName parametresini bulun.

    "EdgeDeviceHostName=10.0.0.4"
    
  4. EdgeDeviceHostName parametre değerinin konak adı ayarıyla eşleştiklerini config.toml doğrulayın. Eşleşmiyorsa, yapılandırmayı değiştirip uyguladığınızda edgeHub kapsayıcısı çalışıyordu. EdgeDeviceHostName'i güncelleştirmek için edgeAgent kapsayıcısını kaldırın.

    sudo docker rm -f edgeAgent
    

    edgeAgent ve edgeHub kapsayıcıları birkaç dakika içinde yeniden oluşturulur ve başlatılır. EdgeHub kapsayıcısı çalıştırıldıktan sonra kapsayıcıyı inceleyin ve EdgeDeviceHostName parametresinin yapılandırma dosyasıyla eşleşip eşleşmediğini doğrulayın.

Aşağı akış cihazını yapılandırma

Aşağı akış cihazınızı yapılandırmak için bir yerel veya uzak komut kabuğu açın.

Güvenli bağlantıları etkinleştirmek için, bir ağ geçidi senaryosundaki her IoT Edge aşağı akış cihazının benzersiz bir Edge CA sertifikası ve ağ geçidi hiyerarşisindeki tüm cihazlar tarafından paylaşılan kök CA sertifikasının bir kopyasıyla yapılandırılması gerekir.

  1. Sertifikalarınızın biçim gereksinimlerini karşıladığından denetleyin.

  2. Kök CA sertifikasını, alt Edge CA sertifikasını ve alt özel anahtarı aşağı akış cihazına aktarın.

  3. Sertifikaları ve anahtarları doğru dizinlere kopyalayın. Cihaz sertifikaları için tercih edilen dizinler sertifikalar /var/aziot/certs ve /var/aziot/secrets anahtarlar içindir.

    ### Copy device certificate ###
    
    # If the device certificate and keys directories don't exist, create, set ownership, and set permissions
    sudo mkdir -p /var/aziot/certs
    sudo chown aziotcs:aziotcs /var/aziot/certs
    sudo chmod 755 /var/aziot/certs
    
    sudo mkdir -p /var/aziot/secrets
    sudo chown aziotks:aziotks /var/aziot/secrets
    sudo chmod 700 /var/aziot/secrets
    
    # Copy device full-chain certificate and private key into the correct directory
    sudo cp iot-device-downstream-full-chain.cert.pem /var/aziot/certs
    sudo cp iot-device-downstream.key.pem /var/aziot/secrets
    
    ### Root certificate ###
    
    # Copy root certificate into the /certs directory
    sudo cp azure-iot-test-only.root.ca.cert.pem /var/aziot/certs
    
    # Copy root certificate into the CA certificate directory and add .crt extension.
    # The root certificate must be in the CA certificate directory to install it in the certificate store.
    # Use the appropriate copy command for your device OS or if using EFLOW.
    
    # For Ubuntu and Debian, use /usr/local/share/ca-certificates/
    sudo cp azure-iot-test-only.root.ca.cert.pem /usr/local/share/azure-iot-test-only.root.ca.cert.pem.crt
    # For EFLOW, use /etc/pki/ca-trust/source/anchors/
    sudo cp azure-iot-test-only.root.ca.cert.pem /etc/pki/ca-trust/source/anchors/azure-iot-test-only.root.ca.pem.crt
    
  4. Sertifikaların ve anahtarların sahipliğini ve izinlerini değiştirin.

    # Give aziotcs ownership to certificates
    # Read and write for aziotcs, read-only for others
    sudo chown -R aziotcs:aziotcs /var/aziot/certs
    sudo find /var/aziot/certs -type f -name "*.*" -exec chmod 644 {} \;
    
    # Give aziotks ownership to private keys
    # Read and write for aziotks, no permission for others
    sudo chown -R aziotks:aziotks /var/aziot/secrets
    sudo find /var/aziot/secrets -type f -name "*.*" -exec chmod 600 {} \;
    
  5. Platforma özgü komutu kullanarak cihazdaki sertifika deposunu güncelleştirerek aşağı akış IoT Edge cihazına kök CA sertifikasını yükleyin.

    # Update the certificate store
    
    # For Ubuntu or Debian - use update-ca-certificates
    sudo update-ca-certificates
    # For EFLOW or RHEL - use update-ca-trust
    sudo update-ca-trust
    

    EFLOW'da kullanma update-ca-trust hakkında daha fazla bilgi için bkz . CBL-Mariner SSL CA sertifika yönetimi.

Komutu, öğesine /etc/ssl/certsbir sertifika eklendiğini bildirir.

Updating certificates in /etc/ssl/certs...
1 added, 0 removed; done.

Aşağı akış yapılandırma dosyasını güncelleştirme

Cihazınızda IoT Edge zaten yüklü olmalıdır. Aksi takdirde, tek bir Linux IoT Edge cihazını el ile sağlama adımlarını izleyin.

  1. /etc/aziot/config.toml Aşağı akış cihazında yapılandırma dosyasının mevcut olduğunu doğrulayın.

    Yapılandırma dosyası cihazınızda yoksa, şablon dosyasını temel alarak oluşturmak için aşağıdaki komutu kullanın:

    sudo cp /etc/aziot/config.toml.edge.template /etc/aziot/config.toml
    

    Bu bölümde yapılandırma parametreleri eklemek için şablon dosyasını başvuru olarak da kullanabilirsiniz.

  2. Düzenleyici kullanarak IoT Edge yapılandırma dosyasını açın. Örneğin, dosyayı açmak için düzenleyiciyi /etc/aziot/config.toml kullanınnano.

    sudo nano /etc/aziot/config.toml
    
  3. parent_hostname parametresini bulun veya yapılandırma dosyasının başına ekleyin Her aşağı akış IoT Edge cihazının üst öğesini tanımlamak için bir parent_hostname parametresi belirtmesi gerekir. Parametresini parent_hostname üst cihazın FQDN veya IP adresi olacak şekilde güncelleştirin ve üst cihazın yapılandırma dosyasında ana bilgisayar adı olarak sağlanan adla eşleşin. Örneğin:

    parent_hostname = "10.0.0.4"
    
  4. Trust bundle cert parametresini bulun veya yapılandırma dosyasının başına ekleyin.

    parametresini trust_bundle_cert dosya URI'siyle cihazınızdaki kök CA sertifikasına güncelleştirin. Örneğin:

    trust_bundle_cert = "file:///var/aziot/certs/azure-iot-test-only.root.ca.cert.pem"
    
  5. Yapılandırma dosyasında Edge CA sertifikası bölümünü bulun veya ekleyin. Sertifikayı cert ve özel anahtar pk parametrelerini IoT Edge aşağı akış cihazındaki tam zincir sertifikası ve anahtar dosyaları için dosya URI yolları ile güncelleştirin. IoT Edge, sertifikanın ve özel anahtarın metin tabanlı gizlilik açısından geliştirilmiş posta (PEM) biçiminde olmasını gerektirir. Örneğin:

    [edge_ca]
    cert = "file:///var/aziot/certs/iot-device-downstream-full-chain.cert.pem"
    pk = "file:///var/aziot/secrets/iot-device-downstream.key.pem"
    
  6. IoT Edge cihazınızın başlatıldığında IoT Edge aracısının doğru sürümünü kullandığını doğrulayın. Varsayılan Edge Aracısı bölümünü bulun ve IoT Edge için görüntü değerini 1.5 sürümüne ayarlayın. Örneğin:

    [agent]
    name = "edgeAgent"
    type = "docker"
    
    [agent.config]
    image: "mcr.microsoft.com/azureiotedge-agent:1.5"
    
  7. Aşağı akış yapılandırma dosyanızın başlangıcı aşağıdaki örneğe benzer olmalıdır.

    parent_hostname = "10.0.0.4"
    trust_bundle_cert = "file:///var/aziot/certs/azure-iot-test-only.root.ca.cert.pem"
    
    [edge_ca]
    cert = "file:///var/aziot/certs/iot-device-downstream-full-chain.cert.pem"
    pk = "file:///var/aziot/secrets/iot-device-downstream.key.pem"
    
  8. Yapılandırma dosyasını kaydedin ve kapatın config.toml . Örneğin nano düzenleyiciyi kullanıyorsanız Ctrl+O - Yazma, Enter ve Ctrl+X - Çıkış'ı seçin.

  9. Daha önce IoT Edge için başka sertifikalar kullandıysanız, yeni sertifikalarınızın uygulandığından emin olmak için aşağıdaki iki dizindeki dosyaları silin:

    • /var/lib/aziot/certd/certs
    • /var/lib/aziot/keyd/keys
  10. Değişikliklerinizi uygulayın.

    sudo iotedge config apply
    
  11. Yapılandırmadaki hataları denetleyin.

    sudo iotedge check --verbose
    

    İpucu

    IoT Edge denetim aracı, tanılama denetiminin bir bölümünü gerçekleştirmek için bir kapsayıcı kullanır. Bu aracı aşağı akış IoT Edge cihazlarında kullanmak istiyorsanız, öğesine erişebildiklerinden mcr.microsoft.com/azureiotedge-diagnostics:latestveya kapsayıcı görüntüsünün özel kapsayıcı kayıt defterinizde olduğundan emin olun.

    Not

    Yeni sağlanan bir cihazda IoT Edge Hub ile ilgili bir hata görebilirsiniz:

    üretime hazır olma ×: Edge Hub'ın depolama dizini konak dosya sisteminde kalıcı hale geldi - Hata

    EdgeHub kapsayıcısının geçerli durumu denetlenemedi

    IoT Edge Hub modülü çalışmadığından yeni sağlanan bir cihazda bu hata beklenir. Hatayı çözmek için IoT Hub'da cihazın modüllerini ayarlayın ve bir dağıtım oluşturun. Cihaz için dağıtım oluşturma, IoT Edge Hub modülü dahil olmak üzere cihazdaki modülleri başlatır.

Aşağı akış cihazlarını ağdan yalıtma

Bu makaledeki şu ana kadarki adımlar IoT Edge cihazlarını ağ geçidi veya aşağı akış cihazı olarak ayarlar ve aralarında güvenilir bir bağlantı oluşturur. Ağ geçidi cihazı, kimlik doğrulaması ve ileti yönlendirme dahil olmak üzere aşağı akış cihazı ile IoT Hub arasındaki etkileşimleri işler. Aşağı akış IoT Edge cihazlarına dağıtılan modüller, bulut hizmetlerine kendi bağlantılarını oluşturmaya devam edebilir.

ISA-95 standardına uyanlar gibi bazı ağ mimarileri, İnternet bağlantısı sayısını en aza indirmeye çalışır. Bu senaryolarda, aşağı akış IoT Edge cihazlarını doğrudan İnternet bağlantısı olmadan yapılandırabilirsiniz. IoT Hub iletişimlerini ağ geçidi cihazları aracılığıyla yönlendirmenin ötesinde, aşağı akış IoT Edge cihazları tüm bulut bağlantıları için ağ geçidi cihazına güvenebilir.

Bu ağ yapılandırması, yalnızca ağ geçidi hiyerarşisinin en üst katmanındaki IoT Edge cihazının buluta doğrudan bağlantıları olmasını gerektirir. Alt katmanlardaki IoT Edge cihazları yalnızca üst cihazlarıyla veya alt cihazlarla iletişim kurabilir. Ağ geçidi cihazlarında özel modüller aşağıdakiler dahil olmak üzere bu senaryoyu etkinleştirir:

  • API proxy modülü, altında başka bir IoT Edge cihazı bulunan tüm IoT Edge ağ geçitlerinde gereklidir. Bu, alt katman dışında bir ağ geçidi hiyerarşisinin her katmanında olması gerektiği anlamına gelir. Bu modül, HTTP verilerini tek bir bağlantı noktası üzerinden ağ katmanları üzerinden yönlendirmek için bir nginx ters proxy kullanır. Modül ikizi ve ortam değişkenleri aracılığıyla yüksek oranda yapılandırılabilir, bu nedenle ağ geçidi senaryo gereksinimlerinize uyacak şekilde ayarlanabilir.

  • Docker kayıt defteri modülü, bir ağ geçidi hiyerarşisinin en üst katmanındaki IoT Edge ağ geçidinde dağıtılabilir. Bu modül, kapsayıcı görüntülerini alt katmanlardaki tüm IoT Edge cihazları adına almak ve önbelleğe almakla sorumludur. Bu modülü en üst katmanda dağıtmanın alternatifi yerel bir kayıt defteri kullanmak veya kapsayıcı görüntülerini cihazlara el ile yüklemek ve modül çekme ilkesini hiçbir zaman olarak ayarlamaktır.

  • IoT Edge'deki Azure Blob Depolama, bir ağ geçidi hiyerarşisinin en üst katmanındaki IoT Edge ağ geçidinde dağıtılabilir. Bu modül, alt katmanlardaki tüm IoT Edge cihazları adına blobları karşıya yüklemekten sorumludur. Blobları karşıya yükleyebilme özelliği, modül günlüğü yükleme ve paket karşıya yükleme desteği gibi alt katmanlardaki IoT Edge cihazları için yararlı sorun giderme işlevlerine de olanak tanır.

Ağ yapılandırması

Üst katmandaki her ağ geçidi cihazı için ağ işleçlerinin şunları yapmanız gerekir:

  • Statik bir IP adresi veya tam etki alanı adı (FQDN) sağlayın.

  • 443 (HTTPS) ve 5671 (AMQP) bağlantı noktaları üzerinden bu IP adresinden Azure IoT Hub ana bilgisayar adınız ile giden iletişimleri yetkilendirilin.

  • Bu IP adresinden 443 numaralı bağlantı noktası (HTTPS) üzerinden Azure Container Registry ana bilgisayar adınız ile giden iletişimleri yetkileyin.

    API proxy modülü aynı anda yalnızca bir kapsayıcı kayıt defterine bağlantıları işleyebilir. Microsoft Container Registry (mcr.microsoft.com) tarafından sağlanan genel görüntüler de dahil olmak üzere tüm kapsayıcı görüntülerinin özel kapsayıcı kayıt defterinizde depolanmasını öneririz.

Alt katmandaki her ağ geçidi cihazı için ağ işleçlerinin şunları yapmanız gerekir:

  • Statik bir IP adresi sağlayın.
  • Bu IP adresinden 443 (HTTPS) ve 5671 (AMQP) bağlantı noktaları üzerinden üst ağ geçidinin IP adresine giden iletişimleri yetkilendirilin.

Modülleri en üst katman cihazlara dağıtma

Ağ geçidi hiyerarşisinin en üst katmanındaki IoT Edge cihazının, cihazda çalıştırabileceğiniz tüm iş yükü modüllerine ek olarak, buna dağıtılması gereken bir dizi gerekli modül vardır.

API proxy modülü, en yaygın ağ geçidi senaryolarını işlemek üzere özelleştirilecek şekilde tasarlanmıştır. Bu makalede, modülleri temel bir yapılandırmada ayarlamaya yönelik bir örnek sağlanır. Daha ayrıntılı bilgi ve örnekler için bkz. Ağ geçidi hiyerarşi senaryonuz için API proxy modülünü yapılandırma.

  1. Azure portalında IoT hub'ınıza gidin.

  2. Cihaz yönetimi menüsünün altında Cihazlar'ı seçin.

  3. Listeden yapılandırdığınız en üst katman IoT Edge cihazını seçin.

  4. Modül ayarla’yı seçin.

  5. IoT Edge modülleri bölümünde Ekle'yi ve ardından IoT Edge Modülü'ne tıklayın.

  6. Aşağıdaki modül ayarlarını güncelleştirin:

    Ayar Value
    IoT Modülü adı IoTEdgeAPIProxy
    Görüntü URI'si mcr.microsoft.com/azureiotedge-api-proxy:latest
    Yeniden başlatma ilkesi her zaman
    İstenen durum çalışıyor

    API proxy modülünün farklı bir sürümünü veya mimarisini kullanmak istiyorsanız, Microsoft Yapıt Kayıt Defteri kullanılabilir görüntüleri bulun.

    1. Ortam değişkenleri sekmesinde, değeri 443olan Metin türünde adlı NGINX_DEFAULT_PORT bir değişken ekleyin.

    2. Kapsayıcı oluşturma seçenekleri sekmesinde bağlantı noktası bağlamalarını 443 numaralı bağlantı noktasına başvuracak şekilde güncelleştirin.

      {
        "HostConfig": {
          "PortBindings": {
            "443/tcp": [
              {
                "HostPort": "443"
              }
            ]
          }
        }
      }
      

    Bu değişiklikler API proxy modülünü 443 numaralı bağlantı noktasını dinleyecek şekilde yapılandıracaktır. Bağlantı noktası bağlama çakışmalarını önlemek için edgeHub modülünü bağlantı noktası 443'te dinlemeyecek şekilde yapılandırmanız gerekir. Bunun yerine, API proxy modülü 443 numaralı bağlantı noktasındaki tüm EdgeHub trafiğini yönlendirir.

  7. Modülü dağıtıma eklemek için Ekle'yi seçin.

  8. Çalışma Zamanı Ayarları'nı seçin ve edgeHub modülünü Kapsayıcı Oluşturma Seçenekleri'ni bulun. Bağlantı noktası 443 için bağlantı noktası bağlamasını silip 5671 ve 8883 numaralı bağlantı noktalarının bağlamalarını bırakın.

    {
      "HostConfig": {
        "PortBindings": {
          "5671/tcp": [
            {
              "HostPort": "5671"
            }
          ],
          "8883/tcp": [
            {
              "HostPort": "8883"
            }
          ]
        }
      }
    }
    
  9. Değişikliklerinizi çalışma zamanı ayarlarına kaydetmek için Uygula'yı seçin.

  10. Dağıtımınıza Docker kayıt defteri modülünü eklemek için aşağıdaki değerleri sağlayın.

    1. IoT Edge modülleri bölümünde Ekle'yi ve ardından IoT Edge Modülü'ne tıklayın.

      Ayar Value
      IoT Modülü adı registry
      Görüntü URI'si registry:latest
      Yeniden başlatma ilkesi always
      İstenen durum running
    2. Ortam değişkenleri sekmesinde aşağıdaki değişkenleri ekleyin:

      Adı Tür Değer
      REGISTRY_PROXY_REMOTEURL Metin Bu kayıt defteri modülünün eşlemesini istediğiniz kapsayıcı kayıt defteri URL'si. Örneğin, https://myregistry.azurecr. Kayıt defteri modülü yalnızca bir kapsayıcı kayıt defteriyle eşlenebilir, bu nedenle tüm kapsayıcı görüntülerinin tek bir özel kapsayıcı kayıt defterinde olmasını öneririz.
      REGISTRY_PROXY_USERNAME Metin Kapsayıcı kayıt defterinde kimlik doğrulaması için kullanıcı adı.
      REGISTRY_PROXY_PASSWORD Metin Kapsayıcı kayıt defterinde kimlik doğrulaması için parola.
    3. Kapsayıcı oluşturma seçenekleri sekmesinde bağlantı noktası bağlamalarını 5000 numaralı bağlantı noktasına başvuracak şekilde güncelleştirin.

    {
      "HostConfig": {
        "PortBindings": {
          "5000/tcp": [
            {
              "HostPort": "5000"
            }
          ]
        }
      }
    }
    
  11. Modülü dağıtıma eklemek için Ekle'yi seçin.

  12. Sonraki adıma gitmek için İleri: Yollar'ı seçin.

  13. Aşağı akış cihazlarından ioT Hub'a ulaşmak üzere cihazdan buluta iletileri etkinleştirmek için tüm iletileri IoT Hub'a geçiren bir yol ekleyin. Örneğin:

    1. Ad: Route
    2. Değer: FROM /messages/* INTO $upstream
  14. Son adıma gitmek için Gözden geçir + oluştur'u seçin.

  15. Cihazınıza dağıtmak için Oluştur'u seçin.

Modülleri alt katman cihazlara dağıtma

Ağ geçidi hiyerarşisinin alt katmanlarında yer alan IoT Edge cihazları, cihazda çalıştırabileceğiniz iş yükü modüllerine ek olarak bunlara dağıtılması gereken bir modüle sahiptir.

Kapsayıcı görüntüsü çekmelerini yönlendirme

Ağ geçidi hiyerarşilerinde IoT Edge cihazları için gerekli ara sunucu modülünü tartışmadan önce, alt katmanlardaki IoT Edge cihazlarının modül görüntülerini nasıl aldıklarını anlamak önemlidir.

Alt katman cihazlarınız buluta bağlanamıyorsa ancak modül görüntülerini her zamanki gibi çekmelerini istiyorsanız, ağ geçidi hiyerarşisinin en üst katman cihazı bu istekleri işleyecek şekilde yapılandırılmalıdır. Üst katman cihazının kapsayıcı kayıt defterinize eşlenmiş bir Docker kayıt defteri modülü çalıştırması gerekir. Ardından, kapsayıcı isteklerini buna yönlendirmek için API proxy modülünü yapılandırın. Bu ayrıntılar bu makalenin önceki bölümlerinde ele alınıyor. Bu yapılandırmada, alt katman cihazlar bulut kapsayıcısı kayıt defterlerine değil, üst katmanda çalışan kayıt defterine işaret etmemelidir.

Örneğin, alt katman cihazları yerine mcr.microsoft.com/azureiotedge-api-proxy:1.1çağrısı $upstream:443/azureiotedge-api-proxy:1.1yapmalıdır.

$upstream parametresi alt katmandaki bir cihazın üst öğesini işaret eder, bu nedenle istek, bir ara sunucu ortamı yönlendirme kapsayıcısı isteklerini kayıt defteri modülüne yönlendiren üst katmana ulaşana kadar tüm katmanlara yönlendirilir. :443 Bu örnekteki bağlantı noktası, üst cihazdaki API proxy modülünün dinlediği bağlantı noktasıyla değiştirilmelidir.

API proxy modülü yalnızca bir kayıt defteri modülüne yönlendirebilir ve her kayıt defteri modülü yalnızca bir kapsayıcı kayıt defterine eşlenebilir. Bu nedenle, alt katman cihazlarının çekmesi gereken tüm görüntüler tek bir kapsayıcı kayıt defterinde depolanmalıdır.

Alt katman cihazların bir ağ geçidi hiyerarşisi üzerinden modül çekme istekleri yapmasını istemiyorsanız, bir diğer seçenek de yerel kayıt defteri çözümünü yönetmektir. Ya da dağıtımları oluşturmadan önce modül görüntülerini cihazlara gönderin ve ardından imagePullPolicy değerini hiçbir zaman olarak ayarlayın.

IoT Edge aracısını önyükleme

IoT Edge aracısı, herhangi bir IoT Edge cihazında başlayan ilk çalışma zamanı bileşenidir. Tüm aşağı akış IoT Edge cihazlarının başladığında edgeAgent modül görüntüsüne erişebildiğinden ve ardından dağıtımlara erişip modül görüntülerinin geri kalanını başlatabildiğinden emin olmanız gerekir.

Kimlik doğrulama bilgilerini, sertifikalarını ve üst konak adını sağlamak için ioT Edge cihazında yapılandırma dosyasına gittiğiniz zaman edgeAgent kapsayıcı görüntüsünü de güncelleştirin.

En üst düzey ağ geçidi cihazı kapsayıcı görüntüsü isteklerini işleyecek şekilde yapılandırılmışsa öğesini üst konak adı ve API proxy dinleme bağlantı noktası ile değiştirin mcr.microsoft.com . Dağıtım bildiriminde kısayol olarak kullanabilirsiniz $upstream , ancak bu, yönlendirmeyi işlemek için edgeHub modülünü gerektirir ve bu modül bu noktada başlatılmadı. Örneğin:

[agent]
name = "edgeAgent"
type = "docker"

[agent.config]
image: "{Parent FQDN or IP}:443/azureiotedge-agent:1.5"

Yerel bir kapsayıcı kayıt defteri kullanıyorsanız veya kapsayıcı görüntülerini cihazda el ile sağlıyorsanız, yapılandırma dosyasını uygun şekilde güncelleştirin.

Çalışma zamanını yapılandırma ve ara sunucu modülünü dağıtma

Bulut ile aşağı akış IoT Edge cihazları arasındaki tüm iletişimleri yönlendirmek için API proxy modülü gereklidir. Hiyerarşinin alt katmanında, aşağı akış IoT Edge cihazları olmayan bir IoT Edge cihazı bu modüle ihtiyaç duymaz.

API proxy modülü, en yaygın ağ geçidi senaryolarını işlemek üzere özelleştirilecek şekilde tasarlanmıştır. Bu makalede, modülleri temel bir yapılandırmada ayarlama adımlarına kısaca değinilmiştir. Daha ayrıntılı bilgi ve örnekler için bkz. Ağ geçidi hiyerarşi senaryonuz için API proxy modülünü yapılandırma.

  1. Azure portalında IoT hub'ınıza gidin.

  2. Cihaz yönetimi menüsünün altında Cihazlar'ı seçin.

  3. Listeden yapılandırdığınız alt katman IoT Edge cihazını seçin.

  4. Modül ayarla’yı seçin.

  5. IoT Edge modülleri bölümünde Ekle'yi ve ardından IoT Edge Modülü'ne tıklayın.

  6. Aşağıdaki modül ayarlarını güncelleştirin:

    Ayar Value
    IoT Modülü adı IoTEdgeAPIProxy
    Görüntü URI'si mcr.microsoft.com/azureiotedge-api-proxy:latest
    Yeniden başlatma ilkesi always
    İstenen durum running

    API proxy modülünün farklı bir sürümünü veya mimarisini kullanmak istiyorsanız, Microsoft Yapıt Kayıt Defteri kullanılabilir görüntüleri bulun.

    1. Ortam değişkenleri sekmesinde, değeri 443olan Metin türünde adlı NGINX_DEFAULT_PORT bir değişken ekleyin.

    2. Kapsayıcı oluşturma seçenekleri sekmesinde bağlantı noktası bağlamalarını 443 numaralı bağlantı noktasına başvuracak şekilde güncelleştirin.

      {
        "HostConfig": {
          "PortBindings": {
            "443/tcp": [
              {
                "HostPort": "443"
              }
            ]
          }
        }
      }
      

    Bu değişiklikler API proxy modülünü 443 numaralı bağlantı noktasını dinleyecek şekilde yapılandıracaktır. Bağlantı noktası bağlama çakışmalarını önlemek için edgeHub modülünü bağlantı noktası 443'te dinlemeyecek şekilde yapılandırmanız gerekir. Bunun yerine, API proxy modülü 443 numaralı bağlantı noktasındaki tüm EdgeHub trafiğini yönlendirir.

  7. Çalışma Zamanı Ayarları'nı seçin.

  8. edgeHub modülü ayarlarını güncelleştirin:

    1. Görüntü alanında değerini ile $upstream:443değiştirinmcr.microsoft.com.
    2. Seçenekler oluştur alanında 443 numaralı bağlantı noktası için bağlantı noktası bağlamasını silin ve 5671 ve 8883 numaralı bağlantı noktaları için bağlamaları bırakın.
    {
      "HostConfig": {
        "PortBindings": {
          "5671/tcp": [
            {
              "HostPort": "5671"
            }
          ],
          "8883/tcp": [
            {
              "HostPort": "8883"
            }
          ]
        }
      }
    }
    
  9. edgeAgent modülü ayarlarını güncelleştirin:

    1. Görüntü alanında değerini ile $upstream:443değiştirinmcr.microsoft.com.
  10. Değişikliklerinizi çalışma zamanı ayarlarına kaydetmek için Uygula'yı seçin.

  11. Sonraki adıma gitmek için İleri: Yollar'ı seçin.

  12. Aşağı akış cihazlarından cihazdan buluta iletilerin IoT Hub'a ulaşmasını sağlamak için, tüm iletileri öğesine $upstreamgeçiren bir yol ekleyin. Yukarı akış parametresi, alt katman cihazlar söz konusu olduğunda üst cihazı gösterir. Örneğin:

    1. Ad: Route
    2. Değer: FROM /messages/* INTO $upstream
  13. Son adıma gitmek için Gözden geçir + oluştur'u seçin.

  14. Cihazınıza dağıtmak için Oluştur'u seçin.

Alt öğeden üst öğeye bağlantıyı doğrulama

  1. Aşağı akış cihazında aşağıdaki openssl komutu çalıştırarak alt öğeden üst öğeye TLS/SSL bağlantısını doğrulayın. değerini üst öğesinin FQDN veya IP adresiyle değiştirin <parent hostname> .

    openssl s_client -connect <parent hostname>:8883 </dev/null 2>&1 >/dev/null
    

    komutu, aşağıdaki örneğe benzer şekilde üst sertifika zincirinin başarılı bir şekilde doğrulanması gerektiğini onaylamalıdır:

    azureUser@child-vm:~$ openssl s_client -connect <parent hostname>:8883 </dev/null 2>&1 >/dev/null
    Can't use SSL_get_servername
    depth=3 CN = Azure_IoT_Hub_CA_Cert_Test_Only
    verify return:1
    depth=2 CN = Azure_IoT_Hub_Intermediate_Cert_Test_Only
    verify return:1
    depth=1 CN = gateway.ca
    verify return:1
    depth=0 CN = <parent hostname>
    verify return:1
    DONE
    

    "SSL_get_servername kullanamıyorum" iletisi yoksayılabilir.

    Değerin üst depth=0 CN = öğesinin yapılandırma dosyasında belirtilen konak adı parametresiyle eşleşmesi config.toml gerekir.

    Komut zaman aşımına uğradıysa, alt ve üst cihazlar arasında engellenmiş bağlantı noktaları olabilir. Cihazların ağ yapılandırmasını ve ayarlarını gözden geçirin.

    Uyarı

    Ağ geçidinin [edge_ca] bölümünde tam zincir sertifikası kullanmama, aşağı akış cihazından sertifika doğrulama hatalarıyla sonuçlanmıştır. Örneğin, openssl s_client ... yukarıdaki komut şunları üretir:

    Can't use SSL_get_servername
    depth=1 CN = gateway.ca
    verify error:num=20:unable to get local issuer certificate
    verify return:1
    depth=0 CN = <parent hostname>
    verify return:1
    DONE
    

    Aşağı akış cihazında tam zincir cihaz sertifikası kullanılmamış ve yapılandırılmamışsa aşağı akış IoT Edge cihazına bağlanan TLS özellikli cihazlarda da aynı sorun oluşur.

IoT için Microsoft Defender'ın IoT Edge ağ geçidiyle tümleştirilmesi

Aşağı akış cihazları, aşağı akış cihaz proxy'si kullanarak IoT'nin mikro aracısı için Microsoft Defender'ı IoT Edge ağ geçidiyle tümleştirmek için kullanılabilir.

IoT için Defender mikro aracısı hakkında daha fazla bilgi edinin.

Aşağı akış cihaz ara sunucusu kullanarak IoT için Microsoft Defender'ı IoT Edge ile tümleştirmek için:

  1. Azure Portal’ında oturum açın.

  2. IoT HubYour Hub>>Cihaz yönetimi>Cihazları'na gidin

  3. Cihazınızı seçin.

    Cihazınızın seçim için bulunduğu yeri gösteren ekran görüntüsü.

  4. Bu yönergelerden DefenderIotMicroAgent oluşturduğunuz modül ikizini seçin.

    DefenderIotMicroAgent konumunu gösteren ekran görüntüsü.

  5. Bağlantı dizenizi (birincil anahtar) kopyalamak için düğmeyi seçin.

  6. bağlantı dizesi bir metin düzenleme uygulamasına yapıştırın ve dizeye GatewayHostName ekleyin. GatewayHostName, üst cihazın tam etki alanı adı veya IP adresidir. Örneğin, HostName=nested11.azure-devices.net;DeviceId=downstream1;ModuleId=module1;SharedAccessKey=xxx;GatewayHostName=10.16.7.4.

  7. Aşağı akış cihazında bir terminal açın.

  8. utf-8 içinde kodlanmış bağlantı dizesi Bulut için Defender aracı dizinine aşağıdaki yoldaki dosyaya connection_string.txt yerleştirmek için aşağıdaki komutu kullanın: /etc/defender_iot_micro_agent/connection_string.txt

    sudo bash -c 'echo "<connection string>" > /etc/defender_iot_micro_agent/connection_string.txt'
    

    artık connection_string.txt aşağıdaki yol konumunda /etc/defender_iot_micro_agent/connection_string.txtbulunmalıdır.

  9. Şu komutu kullanarak hizmeti yeniden başlatın:

    sudo systemctl restart defender-iot-micro-agent.service 
    
  10. Cihaza geri dönün.

    Cihazınıza geri dönme işlemini gösteren ekran görüntüsü.

  11. IoT Hub bağlantısını etkinleştirin ve dişli simgesini seçin.

    Üst cihaz ayarlamak için nelerin seçiliyor olduğunu gösteren ekran görüntüsü.

  12. Görüntülenen listeden üst cihazı seçin.

  13. Aşağı akış cihazı ile IoT Edge cihazı arasındaki 8883 numaralı bağlantı noktasının (MQTT) açık olduğundan emin olun.

Sonraki adımlar

IoT Edge cihazını ağ geçidi olarak kullanma

Ağ geçidi hiyerarşi senaryonuz için API proxy modülünü yapılandırma