Azure Web App이 ACR에서 Managed Identity로 이미지를 가져오지 못하고 ImagePullFailure가 발생합니다.
안녕하세요. Korea Central에 있는 Linux App Service(wrap-mask-service)
에서 FastAPI 백엔드 컨테이너를 배포하려고 하는데, Azure Container
Registry(wrapmaskacr)에서 이미지를 끌어오지 못하고 있습니다. 몇 가지 상황을 정
리하면 아래와 같습니다.
- ACR: wrapmaskacr (Standard SKU, Korea Central, public network access Enabled)
- Web App: wrap-mask-service (Linux, Basic SKU, WEBSITES_PORT=8000 설정 완료)
- Docker 이미지: wrapmaskacr.azurecr.io/wrap-mask:latest 로컬에서 docker build 후 docker push까지 성공했습니다.
- Managed Identity:
- 시스템 할당 ID + 사용자 할당 ID(wrap-mask-identity)가 App Service에 연결 되어 있습니다.
- wrap-mask-identity는 ACR에 AcrPull 역할이 부여되어 있습니다.
CLI로 App Service에 Managed Identity를 이미지 pull 자격 증명으로 지정하려고 아
래 명령을 반복해서 실행했는데, siteConfig.acrUserManagedIdentityId가 계속 null
로 남습니다.
UA_ID="/subscriptions/f1953fcd-ff47-498c-9c73-5eb9e1a31d1e/resourceGroups/
wrap-mask-krc-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/
wrap-mask-identity"
az webapp update -g wrap-mask-krc-rg -n wrap-mask-service \
--set siteConfig.acrUseManagedIdentityCreds=true \
siteConfig.acrUserManagedIdentityId="$UA_ID"
포털에서도 Deployment Center → Containers → Authentication을 Managed Identity
로 맞추고 wrap-mask-identity를 선택했지만, az webapp show ... --query
"siteConfig.acrUserManagedIdentityId" 결과는 여전히 null입니다.
az webapp restart 후 az webapp log tail --provider docker를 보면 컨테이너가 시
작되자마자 다음 로그를 남기고 종료됩니다.
Pulling image: wrapmaskacr.azurecr.io/wrap-mask:latest.
Container pull image failed with reason: ImagePullFailure. Revert by
terminate.
Site container: wrap-mask-service_main terminated during site startup.
Failed to start site. Revert by stopping site.
az acr check-health는 DNS 오류 이후 다시 실행하면 통과했고, 로컬에서 docker
pull wrapmaskacr.azurecr.io/wrap-mask:latest도 정상입니다.
질문:
- App Service의 siteConfig.acrUserManagedIdentityId가 계속 null로 남는 이유가 무엇인지, 혹시 CLI/포털 외에 다른 설정이 필요한지 궁금합니다.
- Managed Identity를 사용해 ACR에서 이미지를 끌어오도록 강제하는 다른 방법이 있는지요? (예: ARM 템플릿, REST API 등)
- 혹시 Korea Central 리전에 아직 Known issue가 있는지 확인 부탁드립니다.
혹시 추가로 제공해야 할 로그가 있다면 알려 주세요. 감사합니다!