部署通过托管身份从ACR拉取镜像的ACI时遇类型不支持报错求助
排查ACI使用托管身份拉取ACR镜像时的InvalidImageRegistryCredentialType错误
错误场景
按照官方步骤部署Azure容器实例(ACI),通过YAML配置托管身份拉取指定Azure容器注册表(ACR)镜像时,触发以下错误:
(InvalidImageRegistryCredentialType) Identity in 'imageRegistryCredentials' of container group '
' is not supported.
Code: InvalidImageRegistryCredentialType
Message: Identity in 'imageRegistryCredentials' of container group '' is not supported.
已确认imageRegistryCredentials格式正确、托管身份配置了AcrPull权限,且使用无效身份ID会返回404错误;ACR启用公网访问、切换VPN环境均未解决问题,CLI调试日志无有效信息。
排查思路
- 确认托管身份类型:ACI仅支持用户分配的托管身份用于ACR镜像拉取,系统分配的托管身份无法在此场景生效。检查YAML中
identity.type是否为UserAssigned,且关联的是用户分配身份的资源ID。 - 核对YAML配置细节:确保
imageRegistryCredentials下的identity字段填写的是用户分配身份的完整资源ID,而非客户端ID或名称。正确格式示例:imageRegistryCredentials: - server: your-acr-name.azurecr.io identity: /subscriptions/<订阅ID>/resourceGroups/<资源组名>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<身份名称> - 检查ACR SKU层级:基础版ACR不支持托管身份拉取镜像功能,必须使用标准版或高级版。确认ACR的SKU配置,若为基础版需升级后重试。
- 验证RBAC权限作用域:确保用户分配身份的
AcrPull角色是直接授予目标ACR资源,而非父资源组或订阅。避免因权限作用域不匹配导致身份无法被ACR识别。 - 排查区域兼容性:确认ACI和ACR所在Azure区域支持“托管身份拉取ACR镜像”功能(该功能已覆盖大部分通用区域,但需排除预览或未正式支持的区域)。
- 用CLI命令直接测试:跳过YAML,使用CLI命令直接创建ACI并指定托管身份和ACR,验证是否能成功部署。示例命令:
如果CLI部署成功,说明问题出在YAML配置的细节上,需重新比对官方示例修正YAML内容。az container create --resource-group <资源组名> --name <容器组名> --image <ACR名称>.azurecr.io/<镜像名>:<标签> --registry-login-server <ACR名称>.azurecr.io --assign-identity <用户分配身份资源ID>
内容的提问来源于stack exchange,提问作者Andy
相关产品推荐
相关产品推荐

