Не удается извлечь образы из Реестр контейнеров Azure с помощью проверки подлинности управляемого удостоверения

В этой статье описывается, как устранять сбои при извлечении образа при развертывании в Экземпляры контейнеров Azure (ACI) из Реестр контейнеров Azure (ACR) с помощью управляемого удостоверения.

Симптомы

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

Причина

Ниже приведены некоторые причины сбоев извлечения образа.

  • Со стороны ACI:

    • В зависимости от версии API ACI, используемой при развертывании группы контейнеров, формат учетных данных, указанный в шаблоне ARM группы контейнеров , может быть недопустимым.
    • Использование управляемого удостоверения в группе контейнеров может нарушить ограничения ACI.
    • Определение группы контейнеров в шаблоне ARM может быть неправильно сформировано.
  • Со стороны ACR:

    • Возможно, вы используете более раннюю версию API.
    • Для реестра контейнеров может использоваться частная зона DNS.

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

  1. Проверьте, используете ли вы версию API ACI, более раннюю, чем 2021-07-01.

    В этом случае может появиться ошибка InvalidImageRegistryCredentialType:

    $ az deployment group create -g <resourcegroupname> --template-file containergroup_trusted.json 
    Deployment failed. Correlation ID: <Correlation ID>. { 
      "error": { 
        "code": "InvalidImageRegistryCredentialType", 
        "message": "Identity in 'imageRegistryCredentials' of container group 'acrtestcontainergroup' is not supported." 
      } 
    } 
    

    Чтобы устранить эту проблему, используйте API ACI версии 2021-07-01 или более поздней.

  2. Проверьте, нарушаете ли вы какие-либо ограничения ACI.

    К ограничениям относятся:

    • Группы контейнеров, внедренные в виртуальную сеть.
    • Windows Server 2016 группы контейнеров.
    • Попытка разрешения частной зоны DNS ACR.

    Чтобы устранить эту проблему, убедитесь, что вы не нарушаете эти ограничения.

  3. Проверьте, правильно ли сформировано определение группы контейнеров.

    В противном случае могут возникнуть следующие ошибки:

    • Код ошибки AmbiguousImageResitryCredentialType:

      Deployment failed. Correlation ID: <Correlation ID>. { 
      "error": { 
          "code": "AmbiguousImageResitryCredentialType", 
          "message": "The registry credential type in the 'imageRegistryCredentials' of container group 'acrtestcontainergroup' cannot be detected. Please set exactly one of username or identity" 
      } 
      } 
      
    • Код ошибки InvalidImageRegistryIdentity:

      Deployment failed. Correlation ID: <Correlation ID>. { 
      "error": { 
          "code": "InvalidImageRegistryIdentity", 
          "message": "The identity in the 'imageRegistryCredentials' of container group 'acrtestcontainergroup' not found in container group identity list." 
      } 
      } 
      
    • Код ошибки InvalidRequestContent:

      Deployment failed. Correlation ID: <Correlation ID>. { 
      "error": { 
          "code": "InvalidRequestContent", 
          "message": "The request content was invalid and could not be deserialized: 'Required property 'server' not found in JSON. Path 'properties.imageRegistryCredentials[0]', line 1, position 586.'." 
      } 
      }
      

    Чтобы устранить эту проблему, необходимо указать следующие свойства в шаблоне ARM:

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

  1. Проверьте, назначена ли управляемому AcrPull удостоверению роль.

    В противном случае может появиться сообщение об ошибке InaccessibleImage:

    Deployment failed. Correlation ID: <Correlation ID>. { 
      "error": { 
        "code": "InaccessibleImage", 
        "message": "The image 'myacr.azurecr.io/pythonworker:v1' in container group 'acrtestcontainergroup' is not accessible. Please check the image and registry credential." 
      } 
    } 
    

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

  2. Проверьте, включены ли доверенные службы ACR. Если нет, включите доверенные службы.

Свяжитесь с нами для получения помощи

Если у вас есть вопросы или вам нужна помощь, создайте запрос в службу поддержки или обратитесь за поддержкой сообщества Azure. Вы также можете отправить отзыв о продукте в сообщество отзывов Azure.