You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Web App容器私有端点部署无法拉取私有ACR镜像问题咨询

可行解决方案

方案1:修复现有部署配置(优先级最高)

  • 第一步:在Azure Web App的应用配置中新增参数WEBSITE_VNET_ROUTE_ALL,值设置为1。该参数默认仅将RFC1918私有地址段的流量路由到VNet,开启后所有出站流量都会走VNet链路,包含ACR访问请求。
  • 第二步:确认你的VNet已关联privatelink.azurecr.io私有DNS区域,且该区域内已正确添加ACR私有端点的A记录。确保Web App解析ACR域名时返回的是私有IP,而非公网IP。
  • 第三步:为Web App开启系统分配的托管标识,在ACR的访问控制(IAM)中为该标识授予AcrPull权限,同时在ACR的网络配置中开启「允许受信任的Microsoft服务访问」规则。
    配置完成后重启Web App,重新触发部署即可验证。

方案2:规避控制平面拉取镜像的已知bug

如果上述配置后仍存在公网拉取的问题,可以调整部署流程绕开Web App主动拉取镜像的逻辑:

  • 在位于VNet内的自托管DevOps代理上执行镜像拉取操作,从ACR拉取目标镜像后导出为tar包:docker save <镜像名称:标签> > app-image.tar
  • 通过Azure CLI直接将镜像包部署到Web App,不需要Web App主动访问ACR:az webapp deploy --name <WebApp名称> --resource-group <资源组名称> --src-path app-image.tar --type static
    该流程所有流量都在VNet内部传输,完全不涉及公网访问。
全程虚拟网络内的私有部署替代方案

如果需要彻底规避该类问题,可采用以下两种部署架构:

  • 方案A:改用Azure容器应用(Azure Container Apps)环境部署容器服务,容器应用环境默认部署在指定VNet内,所有内部组件通信默认走私有链路,天然支持同VNet内私有端点ACR的镜像拉取。
  • 方案B:在VNet内部署自建的K8s集群(如AKS私有集群)承载容器服务,通过Ingress Controller对外提供访问入口,整个构建、拉取、部署流程全部在私有网络内完成。

内容的提问来源于stack exchange,提问作者Abhishek Rastogi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 03:09:02