Falha ao efetuar pull de imagens do Registro de Contêiner do Azure usando a autenticação de Identidade Gerenciada
Este artigo discute como solucionar problemas de falhas de pull de imagem ao implantar em ACI (Instâncias de Contêiner do Azure) do ACR (Registro de Contêiner do Azure) usando uma identidade gerenciada.
Sintomas
Quando você tenta implantar um grupo de contêineres e efetuar pull de imagens de um registro de contêiner do Azure que é executado por trás de um ponto de extremidade privado usando uma identidade gerenciada, o pull da imagem falha.
Motivo
Aqui estão algumas causas de falhas de pull de imagem:
Do lado da ACI:
- Com base na versão da API da ACI usada ao implantar o grupo de contêineres, o formato de credencial fornecido no modelo do ARM do grupo de contêineres pode ser inválido.
- O uso de uma identidade gerenciada no grupo de contêineres pode violar as limitações da ACI.
- A definição do grupo de contêineres no modelo do ARM pode estar malformada.
Do lado do ACR:
- Você pode estar usando uma versão anterior da API.
- Você pode estar usando uma zona DNS privada para o registro de contêiner.
Solução de problemas do lado da ACI
Verifique se você está usando uma versão da API da ACI anterior a 2021-07-01.
Nesse caso, você poderá ver o erro "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." } }
Para resolver esse problema, use a API da ACI versão 2021-07-01 ou posterior.
Verifique se você está violando alguma limitação da ACI.
As limitações incluem:
- Grupos de contêineres injetados na rede virtual.
- Grupos de contêineres do Windows Server 2016.
- Tentando resolver a zona DNS privada do ACR.
Para resolver esse problema, certifique-se de não violar essas limitações.
Verifique se a definição do grupo de contêineres está formada corretamente.
Caso contrário, você poderá ver os seguintes erros:
Código de erro "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" } }
Código de erro "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." } }
Código de erro "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.'." } }
Para resolver esse problema, você deve fornecer as seguintes propriedades no modelo do ARM:
- As
server
propriedades eidentity
de ImageRegistryCredential. - As
type
propriedades euserAssignedIdentity
de ContainerGroupIdentity.
Solução de problemas do lado do ACR
Verifique se a identidade gerenciada tem a
AcrPull
função atribuída.Caso contrário, você poderá ver o erro "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." } }
Para resolver esse problema, conceda a
AcrPull
função à identidade gerenciada. Para obter mais informações, consulte Conceder permissões de identidade para acessar outros recursos do Azure.Verifique se o ACR tem serviços confiáveis habilitados. Caso contrário, habilite os serviços confiáveis.
Entre em contato conosco para obter ajuda
Se você tiver dúvidas ou precisar de ajuda, crie uma solicitação de suporte ou peça ajuda à comunidade de suporte do Azure. Você também pode enviar comentários sobre o produto para a comunidade de comentários do Azure.