Nie można ściągnąć obrazów z usługi Azure Container Registry przy użyciu uwierzytelniania tożsamości zarządzanej
W tym artykule omówiono sposób rozwiązywania problemów z błędami ściągania obrazu podczas wdrażania w usłudze Azure Container Instances (ACI) z usługi Azure Container Registry (ACR) przy użyciu tożsamości zarządzanej.
Symptomy
Podczas próby wdrożenia grupy kontenerów i ściągania obrazów z rejestru kontenerów platformy Azure działającego za prywatnym punktem końcowym przy użyciu tożsamości zarządzanej ściąganie obrazu kończy się niepowodzeniem.
Przyczyna
Oto niektóre przyczyny błędów ściągnięcia obrazu:
Po stronie usługi ACI:
- Na podstawie wersji interfejsu API ACI używanej podczas wdrażania grupy kontenerów format poświadczeń podany w szablonie usługi ARM grupy kontenerów może być nieprawidłowy.
- Użycie tożsamości zarządzanej w grupie kontenerów może naruszać ograniczenia usługi ACI.
- Definicja grupy kontenerów w szablonie usługi ARM może być źle sformułowana.
Po stronie usługi ACR:
- Być może używasz starszej wersji interfejsu API.
- Może być używana prywatna strefa DNS dla rejestru kontenerów.
Rozwiązywanie problemów po stronie usługi ACI
Sprawdź, czy używasz interfejsu API ACI w wersji starszej niż 2021-07-01.
Jeśli tak, może zostać wyświetlony błąd "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." } }
Aby rozwiązać ten problem, użyj interfejsu API ACI w wersji 2021-07-01 lub nowszej.
Sprawdź, czy naruszasz ograniczenia usługi ACI.
Ograniczenia obejmują:
- Grupy kontenerów wprowadzone przez sieć wirtualną.
- Grupy kontenerów systemu Windows Server 2016.
- Próba rozpoznania prywatnej strefy DNS usługi ACR.
Aby rozwiązać ten problem, upewnij się, że nie naruszasz tych ograniczeń.
Sprawdź, czy definicja grupy kontenerów jest poprawnie sformułowana.
Jeśli nie, mogą zostać wyświetlone następujące błędy:
Kod błędu "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" } }
Kod błędu "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." } }
Kod błędu "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.'." } }
Aby rozwiązać ten problem, należy podać następujące właściwości w szablonie usługi ARM:
- Właściwości
server
iidentity
elementu ImageRegistryCredential. - Właściwości
type
iuserAssignedIdentity
elementu ContainerGroupIdentity.
Rozwiązywanie problemów po stronie usługi ACR
Sprawdź, czy tożsamość zarządzana ma przypisaną
AcrPull
rolę.Jeśli nie, może zostać wyświetlony błąd "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." } }
Aby rozwiązać ten problem, przyznaj
AcrPull
rolę tożsamości zarządzanej. Aby uzyskać więcej informacji, zobacz Udzielanie uprawnień tożsamości w celu uzyskania dostępu do innych zasobów platformy Azure.Sprawdź, czy usługa ACR ma włączone zaufane usługi . Jeśli nie, włącz zaufane usługi.
Skontaktuj się z nami, aby uzyskać pomoc
Jeśli masz pytania lub potrzebujesz pomocy, utwórz wniosek o pomoc techniczną lub zadaj pytanie w społeczności wsparcia dla platformy Azure. Możesz również przesłać opinię o produkcie do społeczności opinii na temat platformy Azure.