Не удается получить изображение из частного реестра контейнеров Azure при использовании интерфейса командной строки Az для создания нового экземпляра контейнера Azure

Я создал субъект-службу с доступом по запросу и извлечением к моему частному реестру контейнеров Azure и из него. Отправка в ACR отлично работает с помощью следующей команды:

az login --service-principal -u "someSpID" -p "someSpSecret"  --tenant "someTenantID"
az acr login --name "someRegistry"
docker push "someRegistry.azurecr.io/my-image:0.0.1"

И я также могу вытащить изображение напрямую с помощью следующей команды:

docker pull "someRegistry.azurecr.io/my-image:0.0.1"

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

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

az container create \
  --name myContainerGroup \
  --resource-group myResourceGroup \
  --image "someRegistry.azurecr.io/my-image:0.0.1" \
  --os-type Linux \
  --protocol TCP \
  --registry-login-server someRegistry.azurecr.io \
  --registry-password someSpSecret \
  --registry-username someSpID \
  --vnet someVNET \
  --subnet someSubnet \
  --location someLocation \
  --ip-address Private

Ошибка:

urllib3.connectionpool : Starting new HTTPS connection (1): management.azure.com:443
urllib3.connectionpool : https://management.azure.com:443 "PUT /subscriptions/mySubscription/resourceGroups/myResourceGroup/providers/Microsoft.ContainerInstance/containerGroups/myContainerGroup?api-version=2018-10-01 HTTP/1.1" 400
msrest.http_logger : Response status: 400

The image 'someRegistry.azurecr.io/my-image:0.0.1' in container group 'myContainerGroup' is not accessible. Please check the image and registry credential.

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

Когда я попытался развернуть общедоступный образ в той же подсети, все прошло успешно, поэтому это не проблема с разрешением на развертывание и не похоже на неправильные учетные данные участника службы, поскольку docker pull "someRegistry.azurecr.io/my-image:0.0.1" работает нормально. Я не могу осмыслить это непоследовательное поведение. Есть идеи?


person theknees    schedule 30.01.2020    source источник
comment
это выглядит нормально, возможно, опечатка с учетными данными или неправильным sp, или у вас нет доступа для извлечения   -  person 4c74356b41    schedule 30.01.2020
comment
Вы проверяете, есть ли у субъекта-службы правильное разрешение и правильный тег изображения?   -  person Charles Xu    schedule 31.01.2020
comment
@CharlesXu, да, есть. SP имеет право извлекать / толкать и развертывать. Я проверил это, вручную войдя в реестр докеров и потянув / нажав. Итак, новое обновление состоит в том, что когда я изменил Allow access from Selected networks на All networks и добавил az acr login --name "someRegistry" --username "someSpID" --password "someSpSecret, он работает. Однако мы хотим развернуть это в частной виртуальной сети. До этого изменения конфигурации виртуальные сети уже были добавлены в выбранный список сетей. Поэтому мне интересно, связано ли это с сетевыми профилями экземпляров контейнеров.   -  person theknees    schedule 31.01.2020
comment
А как насчет изображения и тега? Это все то же самое, что вы используете?   -  person Charles Xu    schedule 31.01.2020
comment
Да, изображение и теги одинаковы.   -  person theknees    schedule 31.01.2020
comment
Вы пытаетесь использовать админку?   -  person Charles Xu    schedule 31.01.2020
comment
да. Появляется такое же сообщение об ошибке. li.azure.cli.core.util : The image 'someRegistry.azurecr.io/my-image:0.0.1' in container group 'myContainerGroup' is not accessible. Please check the image and registry credential.   -  person theknees    schedule 31.01.2020
comment
Создаете ли вы экземпляр контейнера в одной подписке с ACR?   -  person Charles Xu    schedule 31.01.2020
comment
Да, он находится в той же подписке и группе ресурсов. На стороне подсети мы временно отключили ассоциированный элемент NSG, но ошибка все еще сохраняется. Конечная точка службы также была настроена на конце подсети.   -  person theknees    schedule 31.01.2020
comment
Тогда это странная вещь. Вы проверяете свою локальную сеть? Может быть, вы можете использовать другую машину, чтобы попробовать это.   -  person Charles Xu    schedule 31.01.2020
comment
Наша локальная сеть включена в список IP-адресов, разрешенных нашим брандмауэром. И ошибка, отброшенная брандмауэром, тоже будет другой ошибкой. Что касается использования другой машины, мы тоже пробовали это, а также задействовали фактический агент развертывания. Я не думаю, что это проблема с внутренним устройством z CLI az container create, поскольку создание через портал вызывает ту же ошибку. Из подобных вещей кажется, что открытия конечной точки службы для ACR в подсети и нашего белого списка подсети на конце ACR недостаточно.   -  person theknees    schedule 31.01.2020
comment
У меня такая же проблема, я могу использовать реестр со своего компьютера, но не могу запустить az container create, даже если учетные данные указаны в команде z, а также в YAML. Вы нашли решение?   -  person Fede E.    schedule 26.05.2021


Ответы (1)


Что касается вашей проблемы, вот возможная причина для объяснения возникшей ошибки. Давайте посмотрим на ограничение, описанное здесь < / а>:

В качестве узла для доступа к реестру контейнеров в виртуальной сети можно использовать только кластер службы Azure Kubernetes или виртуальную машину Azure. Другие службы Azure, включая экземпляры контейнеров Azure, в настоящее время не поддерживаются.

Это ограничение показывает, что брандмауэр реестра контейнеров Azure в настоящее время не поддерживает экземпляр контейнера Azure. Он поддерживает только извлечение / отправку образа в виртуальной машине Azure или в кластере AKS.

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

person Charles Xu    schedule 31.01.2020
comment
Как ни странно, я действительно заставил его работать в игровой среде (с аналогичной настройкой), поэтому я проигнорировал это ограничение, указанное в их документации. Эта проблема возникла только тогда, когда я пытался имитировать ту же настройку в новой среде. Думаю, я свяжусь с Microsoft, чтобы разобраться в нюансах этого несоответствия. Спасибо, хотя ты был отличным резиновым утенком :) Обновлюсь, как только я получу новости от Microsoft. - person theknees; 31.01.2020
comment
@theknees Ну, я тоже хочу узнать разницу. И если это будет полезно, вы можете принять его, когда подтвердите. - person Charles Xu; 03.02.2020