Как создать пограничный модуль IoT для существующего контейнера docker из Azure Cognitive Services? - PullRequest
0 голосов
/ 14 февраля 2020

В настоящее время у меня есть доступ к предварительному просмотру c для Azure Cognitive Services для преобразования речи в текст в виде контейнера docker. Это позволяет запускать контейнер на устройстве IoT Edge, а не обращаться к облаку для выполнения этой услуги. Этот предварительный c предварительный просмотр опубликован с инструкциями по установке , которые показывают, что я могу загрузить существующий docker образ одного из контейнеров и запустить его из CLI, используя "docker run".

Но я не хочу запускать контейнер docker вручную на моих устройствах IoT Edge. Я хочу, чтобы он автоматически развертывался на моих устройствах IoT Edge и автоматически запускался. Чтобы сделать это, я считаю, что он должен существовать как IoT Edge Module. Правильно ли мое понимание?

Так что мой вопрос - скорее вопрос обучения Нужно ли мне создавать свой собственный модуль IoT Edge, который использует этот контейнер ACS docker, или есть какой-то другой способ автоматического развертывания его на моем устройстве IoT Edge и запуск его автоматически?

Я не смог найти в Интернете любую документацию или примеры развертывания существующего контейнера docker на устройстве IoT Edge. Любое руководство будет с благодарностью!

1 Ответ

0 голосов
/ 14 февраля 2020

ОК, после долгих копаний я нашел решение. Что бы вы ни делали, не ищите в Интернете «создайте модуль iot из docker контейнера» или что-нибудь ПОЛНОСТЬЮ ЗНАЧИТЕЛЬНОЕ, как это. Вместо этого мне пришлось искать что-то очень специфичное c для принятия EULA Azure Cognitive Service при запуске docker (т.е. мне пришлось искать "iot edge module docker \" eula \ ""). Обратите внимание на кавычки вокруг eula, чтобы убедиться, что они есть в результатах поиска. Я наткнулся на эту статью .

. Используя руководство статьи, я подробно повторю то, что сделал здесь, если ссылка когда-либо устареет.

  1. В VS Code, создайте новое IoT Edge Solution
  2. В своем решении добавьте новый IoT Edge Module a. Когда вам будет предложено указать тип создаваемого модуля, выберите «Выбрать существующий модуль (введите полный URL-адрес)» *
  3. Если вы заглянете в ваш файл deploy.template. json, вы увидите новый элемент для " registryCredentials ", который был добавлен в ваши детали edgeAgent. Укажите соответствующий адрес, имя пользователя и пароль.
  4. Если вы еще этого не сделали, создайте ресурс Cognitive Services в Интернете, чтобы получить URL-адрес конечной точки и ApiKey. Запомните эти значения.
  5. В файле deploy.template. json в настройках конфигурации вашего нового модуля добавьте следующее.

    "settings": {
      "image": "containerpreview.azurecr.io/microsoft/cognitive-services-speech-to-text:latest",
      "createOptions": 
      {                       
        "Cmd": [
            "Eula=accept",
          "Billing={enter-your-EndpointURL}",
            "ApiKey={enter-your-ApiKey}"
        ],
        "HostConfig": {
          "PortBindings": {
          "5000/tcp": [
          {
            "HostPort": "5000"
          }
          ] 
          }
          }
        }
    

    Это будет эквивалентно запускать "docker run" из командной строки с такими параметрами:

docker run --rm -it -p 5000:5000 --memory 4g --cpus 1 \ containerpreview.azurecr.io/microsoft/cognitive-services-recognize-text \ Eula=accept \ Billing={BILLING_ENDPOINT_URI} \ ApiKey={BILLING_KEY}

Теперь «Создайте и примените sh ваше IoT Edge Solution», затем «Создать развертывание для одного устройства». На целевом устройстве IoT Edge теперь вы должны увидеть, что модуль установлен и работает через CLI "iotedge list".

Обновление: 2020/05/01

После отправки запроса на лучшую документацию от MSFT, они обновили свой сайт документации, чтобы включить информацию о том, как изменить файл deploy.template. json, чтобы он соответствовал аргументам командной строки docker: https://docs.microsoft.com/en-us/azure/iot-edge/how-to-use-create-options

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...