Поделиться через


Руководство. Настройка устройства Azure IoT Edge

Применимо к:значок IoT Edge 1.1

Это важно

Дата окончания поддержки IoT Edge 1.1 была 13 декабря 2022 г.. Чтобы получить сведения о поддержке определенного продукта, службы, технологии или API, перейдите на страницу Политика жизненного цикла поддержки Майкрософт. Дополнительные сведения об обновлении до последней версии IoT Edge см. в статье Update IoT Edge.

В этой статье мы настроим виртуальную машину Azure под управлением Linux как устройство Azure IoT Edge, которое выступает в качестве прозрачного шлюза. Конфигурация прозрачного шлюза позволяет устройствам подключаться к Центру Интернета вещей Azure через шлюз, не зная, что шлюз существует. В то же время пользователь, взаимодействующий с устройствами в Центре Интернета вещей, не знает о промежуточном устройстве шлюза. В конечном счете мы добавим граничную аналитику в нашу систему, добавив модули IoT Edge в прозрачный шлюз.

Замечание

Основные понятия, описанные в этом руководстве, применяются ко всем версиям IoT Edge, но пример устройства, создаваемого для пробного использования сценария, запускает IoT Edge версии 1.1.

Действия, описанные в этой статье, обычно выполняются разработчиком облака.

В этом разделе руководства вы узнаете, как:

  • Создайте сертификаты, чтобы разрешить устройству шлюза безопасно подключаться к подчиненным устройствам.
  • Создайте устройство IoT Edge.
  • Создайте виртуальную машину Azure для имитации устройства IoT Edge.

Предпосылки

Эта статья является частью серии руководств по использованию Машинного обучения Azure в IoT Edge. Каждая статья в серии основана на работе, приведенной в предыдущей статье. Если вы перешли непосредственно к этой статье, ознакомьтесь с первой статьей этой серии.

Создание сертификатов

Для работы устройства в качестве шлюза необходимо безопасно подключиться к подчиненным устройствам. С помощью IoT Edge можно использовать инфраструктуру открытых ключей (PKI) для настройки безопасных подключений между устройствами. В этом случае мы разрешаем нижестоящему устройству Интернета вещей подключаться к устройству IoT Edge, действующему в качестве прозрачного шлюза. Для обеспечения разумной безопасности нижнее устройство должно подтвердить удостоверение устройства IoT Edge. Дополнительные сведения об использовании сертификатов устройств IoT Edge см. в статье об использовании сертификатов Azure IoT Edge.

В этом разделе мы создадим самозаверяющие сертификаты с помощью образа Docker, который мы создадим и запускаем. Мы решили использовать образ Docker для выполнения этого шага, так как это сокращает количество шагов, необходимых для создания сертификатов на компьютере разработки Windows. Чтобы понять, что мы автоматизировали с помощью образа Docker, см. Создание демонстрационных сертификатов для тестирования функций устройств IoT Edge.

  1. Войдите на виртуальную машину разработки.

  2. Создайте новую папку с путем и именем c:\edgeCertificates.

  3. Если оно еще не запущено, запустите Docker для Windows из меню "Пуск" Windows.

  4. Откройте Visual Studio Code.

  5. Выберите Файл>Открыть папку, а затем выберите C:\source\IoTEdgeAndMlSample\CreateCertificates.

  6. В области обозревателя щелкните файл dockerfile правой кнопкой мыши и выберите "Создать изображение".

  7. В диалоговом окне примите значение по умолчанию для имени изображения и тега: createcertificates: latest.

    Снимок экрана: создание сертификатов в Visual Studio Code.

  8. Дождитесь завершения сборки.

    Замечание

    Может появиться предупреждение об отсутствии открытого ключа. Это предупреждение безопасно игнорировать. Аналогичным образом, вы увидите предупреждение безопасности, которое рекомендует вам проверить или сбросить разрешения на изображение, однако для этого изображения его можно безопасно проигнорировать.

  9. В окне терминала Visual Studio Code запустите контейнер createcertificates.

    docker run --name createcertificates --rm -v c:\edgeCertificates:/edgeCertificates createcertificates /edgeCertificates
    
  10. Docker запрашивает доступ к диску c:\ . Выберите "Поделиться".

  11. При появлении запроса укажите свои учетные данные.

  12. После завершения работы контейнера проверьте наличие следующих файлов в c:\edgeCertificates:

    • c:\edgeCertificates\certs\azure-iot-test-only.root.ca.cert.pem
    • c:\edgeCertificates\certs\new-edge-device-full-chain.cert.pem
    • c:\edgeCertificates\certs\new-edge-device.cert.pem
    • c:\edgeCertificates\certs\new-edge-device.cert.pfx
    • c:\edgeCertificates\private\new-edge-device.key.pem

Отправка сертификатов в Azure Key Vault

Чтобы безопасно хранить сертификаты и сделать их доступными на нескольких устройствах, мы отправим сертификаты в Azure Key Vault. Как видно из предыдущего списка, у нас есть два типа файлов сертификатов: PFX и PEM. Мы будем рассматривать PFX-файл как сертификаты Key Vault для отправки в Key Vault. Файлы PEM являются обычным текстом, и мы будем рассматривать их как секреты Key Vault. Мы будем использовать экземпляр Key Vault, связанный с рабочей областью Azure Machine Learning, которую мы создали с помощью записных книжек Jupyter.

  1. На портале Azure перейдите в рабочую область Машинного обучения Azure.

  2. На странице обзора рабочей области машинного обучения найдите имя Key Vault.

    Снимок экрана: копирование имени хранилища ключей.

  3. На компьютере разработки отправьте сертификаты в Key Vault. Замените <subscriptionId> и <keyvaultname> сведениями о ресурсе.

    c:\source\IoTEdgeAndMlSample\CreateCertificates\upload-keyvaultcerts.ps1 -SubscriptionId <subscriptionId> -KeyVaultName <keyvaultname>
    
  4. Если появится запрос, войдите в Azure.

  5. Скрипт будет выполняться в течение нескольких минут и выводить список новых записей в Key Vault.

    Снимок экрана: выходные данные скрипта Key Vault.

Регистрация устройства IoT Edge

Чтобы подключить устройство Azure IoT Edge к центру Интернета вещей, сначала зарегистрируйте устройство в центре. Мы берем строку подключения из удостоверения устройства в облаке и используем ее для настройки среды выполнения на устройстве IoT Edge. После подключения настроенного устройства к центру мы можем развернуть модули и отправить сообщения. Мы также можем изменить конфигурацию физического устройства IoT Edge, изменив соответствующую идентификацию устройства в IoT Hub.

В настоящем руководстве мы регистрируем новое удостоверение устройства с помощью Visual Studio Code. Эти действия также можно выполнить с помощью портала Azure или Azure CLI. Независимо от выбранного метода убедитесь, что вы получите строку подключения устройства IoT Edge. Строку подключения устройства можно найти на странице сведений устройства на портале Azure.

  1. На компьютере разработки откройте Visual Studio Code.

  2. Разверните кадр Центра Интернета вещей Azure из представления обозревателя Visual Studio Code.

  3. Выберите многоточие и нажмите кнопку "Создать устройство IoT Edge".

  4. Присвойте устройству имя. Для удобства мы используем имя aaTurbofanEdgeDevice, чтобы оно отображалось в начале списка устройств.

  5. Новое устройство отображается в списке устройств.

    Снимок экрана: представление устройства в обозревателе Visual Studio Code.

Развертывание виртуальной машины Azure

Мы используем виртуальную машину Ubuntu 18.04 LTS с установленной и настроенной средой выполнения Azure IoT Edge. Развертывание использует шаблон Azure Resource Manager , поддерживаемый в репозитории проекта iotedge-vm-deploy . Он подготавливает ваше зарегистрированное на предыдущем шаге устройство IoT Edge, используя строку подключения, которую вы указали в шаблоне.

Вы можете развернуть виртуальную машину с помощью портала Azure или Azure CLI. Мы рассмотрим шаги портала Azure. Дополнительные сведения см. в статье "Запуск Azure IoT Edge на виртуальных машинах Ubuntu ".

Разверните, используя кнопку "Развернуть в Azure"

  1. Чтобы использовать шаблон ARM для развертывания виртуальной iotedge-vm-deploy машины Ubuntu 18.04 LTS, нажмите кнопку ниже:

    Кнопка «Развернуть в Azure» для iotedge-vm-deploy

  2. В только что запущенном окне заполните доступные поля формы.

    Поле Описание
    Подписка Активная подписка Azure для развертывания виртуальной машины.
    Группа ресурсов Существующая или только что созданная группа ресурсов, содержащая виртуальную машину и связанные с ней ресурсы.
    Префикс метки DNS Требуемое значение по вашему выбору, которое используется для добавления префикса имени узла виртуальной машины.
    Имя администратора Имя пользователя, которому будут предоставлены корневые привилегии при развертывании.
    Строка подключения устройства Строка подключения для устройства, созданного в вашем определённом IoT-центре.
    Размер виртуальной машины Размер развертываемой виртуальной машины
    Версия ОС Ubuntu Версия операционной системы Ubuntu, устанавливаемая на базовую виртуальную машину.
    Местонахождение Географический регион для развертывания виртуальной машины, это значение по умолчанию соответствует расположению выбранной группы ресурсов.
    Тип проверки подлинности Выберите sshPublicKey или пароль в зависимости от ваших предпочтений.
    Пароль или ключ администратора Значение открытого ключа SSH или значение пароля в зависимости от выбранного типа проверки подлинности.
  3. Когда все поля были заполнены, установите флажок в нижней части страницы, чтобы принять условия, и нажмите кнопку "Проверить и создать", чтобы начать развертывание.

  4. Перейдите к виртуальной машине на портале Azure. Его можно найти через группу ресурсов или выбрав виртуальные машины в службах Azure на целевой странице портала.

  5. Запишите DNS-имя виртуальной машины. Вам потребуется войти в систему на вашей виртуальной машине.

Подключение к устройству IoT Edge

  1. Откройте командную строку и выполните следующую команду, чтобы войти в виртуальную машину. Введите собственные сведения для имени пользователя и DNS-имени на основе предыдущего раздела.

    ssh <adminUsername>@<DNS_name>
    
  2. Когда появится запрос на проверку подлинности узла, введите да и нажмите клавишу ВВОД.

  3. При появлении запроса укажите пароль.

  4. Ubuntu отображает приветственное сообщение, а затем появится приглашение, например <username>@<machinename>:~$.

Скачивание сертификатов Key Vault

Ранее в этой статье мы отправили сертификаты в Key Vault, чтобы сделать их доступными для устройства IoT Edge и нижестоящего устройства. Нижнее устройство использует устройство IoT Edge в качестве шлюза для взаимодействия с Центром Интернета вещей.

Далее мы будем работать с нижестоящим устройством. В этом разделе скачайте сертификаты на устройство IoT Edge.

  1. В сеансе SSH на виртуальной машине Linux войдите в Azure с помощью Azure CLI.

    az login
    
  2. Вам будет предложено открыть браузер на странице входа на устройство Майкрософт и указать уникальный код. Эти действия можно выполнить на локальном компьютере. Закройте окно браузера после завершения проверки подлинности.

  3. При успешной проверке подлинности виртуальная машина Linux войдет в систему и выводит список подписок Azure.

  4. Задайте подписку Azure, которую вы хотите использовать для команд Azure CLI.

    az account set --subscription <subscriptionId>
    
  5. Создайте каталог на виртуальной машине для сертификатов.

    sudo mkdir /edgeMlCertificates
    
  6. Скачайте сертификаты, хранящиеся в хранилище ключей: new-edge-device-full-chain.cert.pem, new-edge-device.key.pem и azure-iot-test-only.root.ca.cert.pem.

    key_vault_name="<key vault name>"
    sudo az keyvault secret download --vault-name $key_vault_name --name new-edge-device-full-chain-cert-pem -f /edgeMlCertificates/new-edge-device-full-chain.cert.pem
    sudo az keyvault secret download --vault-name $key_vault_name --name new-edge-device-key-pem -f /edgeMlCertificates/new-edge-device.key.pem
    sudo az keyvault secret download --vault-name $key_vault_name --name azure-iot-test-only-root-ca-cert-pem -f /edgeMlCertificates/azure-iot-test-only.root.ca.cert.pem
    

Обновление конфигурации устройства IoT Edge

Среда выполнения IoT Edge использует файл /etc/iotedge/config.yaml для сохранения конфигурации. Нам нужно обновить два фрагмента информации в этом файле:

  • Сертификаты: сертификаты, используемые для подключений, сделанных с подчиненными устройствами
  • Имя узла: полное доменное имя устройства IoT Edge на виртуальной машине

Обновите сертификаты и имя узла, непосредственно изменив файл config.yaml.

  1. Откройте файл config.yaml.

    sudo nano /etc/iotedge/config.yaml
    
  2. Обновите раздел сертификатов файла config.yaml, удалив ведущий # и задав путь, чтобы файл выглядел следующим образом:

    certificates:
      device_ca_cert: "/edgeMlCertificates/new-edge-device-full-chain.cert.pem"
      device_ca_pk: "/edgeMlCertificates/new-edge-device.key.pem"
      trusted_ca_certs: "/edgeMlCertificates/azure-iot-test-only.root.ca.cert.pem"
    

    Убедитесь , что сертификаты: строка не имеет предыдущего пробела и что каждый из вложенных сертификатов отступен двумя пробелами.

    При щелчке правой кнопкой мыши в nano содержимое буфера обмена вставляется в текущее положение курсора. Чтобы заменить строку, используйте стрелки клавиатуры, чтобы перейти к строке, которую вы хотите заменить, удалить строку, а затем щелкните правой кнопкой мыши, чтобы вставить из буфера.

  3. На портале Azure перейдите на виртуальную машину. Скопируйте DNS-имя (полное доменное имя компьютера) из раздела "Обзор ".

  4. Вставьте полное доменное имя в раздел имени узла файла config.yml. Убедитесь, что имя написано строчными буквами.

    hostname: '<machinename>.<region>.cloudapp.azure.com'
    
  5. Сохраните и закройте файл, нажав клавиши CTRL+X, Y и ВВОД.

  6. Перезапустите демон IoT Edge.

    sudo systemctl restart iotedge
    
  7. Проверьте состояние управляющей программы IoT Edge. После выполнения команды введите :q для выхода.

    systemctl status iotedge
    

Устранение неполадок

Если в состоянии отображаются ошибки (цветной текст с префиксом "[ERROR]") проверьте журналы управляющей программы для получения подробных сведений об ошибке.

journalctl -u iotedge --no-pager --no-full

Дополнительные сведения об устранении ошибок см. на странице устранения неполадок .

Очистите ресурсы

Это руководство является частью набора, в котором каждая статья основывается на работе, выполняемой в предыдущих. Подождите с очисткой любых ресурсов, пока не завершите последний урок.

Дальнейшие шаги

Мы только что завершили настройку виртуальной машины Azure в качестве прозрачного шлюза IoT Edge. Мы начали создавать тестовые сертификаты, которые мы отправили в Key Vault. Затем мы использовали сценарий и шаблон Resource Manager для развертывания виртуальной машины с помощью образа среды выполнения Ubuntu Server 16.04 LTS + Azure IoT Edge из Azure Marketplace. Когда виртуальная машина была запущена, мы подключились через SSH. Затем мы вошли в Azure и скачали сертификаты из Key Vault. Мы внесли несколько обновлений в конфигурацию среды выполнения IoT Edge, обновив файл config.yaml.

Перейдите к следующей статье, чтобы создать модули IoT Edge.