관리 ID 인증을 사용하여 Azure Container Registry에서 이미지를 끌어오지 못함
이 문서에서는 관리 ID를 사용하여 ACR(Azure Container Registry)에서 ACI(Azure Container Instances)에 배포할 때 이미지 끌어오기 오류를 해결하는 방법을 설명합니다.
증상
관리 ID를 사용하여 프라이빗 엔드포인트 뒤에서 실행되는 Azure 컨테이너 레지스트리에서 컨테이너 그룹을 배포하고 이미지를 끌어오려고 하면 이미지 끌어오기 실패가 발생합니다.
원인
이미지 끌어오기 실패의 몇 가지 원인은 다음과 같습니다.
ACI 쪽에서:
- 컨테이너 그룹을 배포할 때 사용되는 ACI API 버전에 따라 컨테이너 그룹 ARM 템플릿에 제공된 자격 증명 형식이 잘못되었을 수 있습니다.
- 컨테이너 그룹에서 관리 ID를 사용하면 ACI 제한 사항을 위반할 수 있습니다.
- ARM 템플릿의 컨테이너 그룹 정의 형식이 잘못되었을 수 있습니다.
ACR 쪽에서:
- 이전 API 버전을 사용하고 있을 수 있습니다.
- 컨테이너 레지스트리에 대한 프라이빗 DNS 영역을 사용할 수 있습니다.
ACI 쪽에서 문제 해결
2021-07-01 이전의 ACI API 버전을 사용하고 있는지 확인합니다.
그렇다면 "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." } }
이 문제를 해결하려면 ACI API 버전 2021-07-01 이상을 사용합니다.
ACI 제한 사항을 위반하고 있는지 확인합니다.
제한에는 다음 내용이 포함됩니다.
- 가상 네트워크 삽입 컨테이너 그룹입니다.
- Windows Server 2016 컨테이너 그룹.
- ACR의 프라이빗 DNS 영역을 확인하려고 합니다.
이 문제를 해결하려면 해당 제한 사항을 위반하지 않도록 합니다.
컨테이너 그룹 정의가 올바르게 구성되었는지 확인합니다.
그렇지 않은 경우 다음과 같은 오류가 표시될 수 있습니다.
오류 코드 "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 템플릿에서 다음 속성을 제공해야 합니다.
server
ImageRegistryCredential의 속성 및identity
속성입니다.type
ContainerGroupIdentity의 속성 및userAssignedIdentity
속성입니다.
ACR 쪽에서 문제 해결
관리 ID에 할당된 역할이 있는지 확인합니다
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." } }
이 문제를 해결하려면 관리 ID에
AcrPull
역할을 부여합니다. 자세한 내용은 다른 Azure 리소스에 액세스할 수 있는 ID 권한 부여를 참조 하세요.ACR에 신뢰할 수 있는 서비스가 활성화되어 있는지 확인합니다 . 그렇지 않은 경우 신뢰할 수 있는 서비스를 사용하도록 설정합니다.
도움을 요청하십시오.
질문이 있거나 도움이 필요한 경우 지원 요청을 생성하거나Azure 커뮤니티 지원에 문의하세요. Azure 피드백 커뮤니티에 제품 피드백을 제출할 수도 있습니다.