Ошибка при извлечении edgeAgent из ACR с контейнером Windows в IoT Edge v1.1

Я работаю с клиентом, использующим v1.1 IoT Edge с контейнерами Windows. Они находятся в заблокированной среде и не хотят подключаться к общедоступному реестру контейнеров. Они предпочитают получать данные из собственного реестра контейнеров Azure (ACR). Мы скопировали edgeAgent и edgeHub из нашего общедоступного реестра в ACR, используя az acr import для извлечения контейнеров из:

  • mcr.microsoft.com/azureiotedge-agent:1.1
  • mcr.microsoft.com/azureiotedge-hub:1.1

Я обнаружил, что Azure IoT Edge не может загрузить образ edgeAgent. Если я загружу контейнер edgeAgent вручную из ACR, edgeAgent запустится и запустится правильно. edgeAgent также сможет загрузить и установить edgeHub через ACR. например.:

docker -H "npipe:////./pipe/iotedge_moby_engine" pull <private ACR>.azurecr.io/azureiotedge-agent:1.1

Есть мысли о том, почему IoT Edge не может вытащить само изображение? Что-то не так с моей конфигурацией config.yaml для edgeAgent?

agent:
  name: "edgeAgent"
  type: "docker"
  env: {}
  config:
    image: "<private ACR>.azurecr.io/azureiotedge-agent:1.1"
    auth:
      username: "<username>"
      password: "<key>"
      serveraddress: "<address>.azurecr.io"

person Terry Mandin    schedule 26.04.2021    source источник


Ответы (1)


allow-nondistributable-artifacts может потребоваться. Пожалуйста, посмотри

Обратите внимание, что этот параметр требуется для демона докеров, проталкивания общедоступных образов в частный реестр, а не для самого устройства IoT Edge.

Если это не поможет, я предлагаю открыть проблему на странице https://github.com/azure/iotedge/issues и обязательно включите журналы из службы iotedged.

person Venkat Yalla    schedule 26.04.2021
comment
Спасибо, Венкат, я попробую. Обратите внимание, что IoT Edge может загрузить edgeHub после загрузки edgeAgent вручную. Разве допустимые-нераспространяемые-артефакты не вызовут проблемы и для edgeHub? - person Terry Mandin; 26.04.2021
comment
Спасибо Венкату, это сработало. - person Terry Mandin; 16.07.2021
comment
Есть ли способ лучше защитить учетные данные ACR? Мой клиент не хочет помещать их в открытый текст в config.yaml. Например, есть ли способ установить их с помощью переменных среды? - person Terry Mandin; 16.07.2021
comment
Единственный способ в настоящее время - использовать учетные данные с ограниченной областью действия (например, только для чтения) для реестра контейнеров с использованием принципалов службы или токенов. Вы также можете попробовать предварительно загрузить образ bootstrap edgeAgent с помощью docker import. - person Venkat Yalla; 19.07.2021