Azure DevOps Ubuntu自托管代理容器实例的最小网络规则配置咨询
Azure DevOps自托管代理容器(ACI环境)网络规则及故障排查
一、最小入站/出站网络规则
入站规则
- Azure DevOps自托管代理不需要开放任何入站端口。代理是主动向Azure DevOps服务发起连接并维持会话的,不存在外部主动向内发起的请求需求,所以入站规则可以设置为拒绝所有流量。
出站规则
代理正常运行仅需确保TCP 443端口的出站访问,覆盖以下核心域名:
- Azure DevOps组织端点:
dev.azure.com或你的自定义域名(如xxx.visualstudio.com) - 微软身份验证服务:
login.microsoftonline.com(用于代理身份验证) - Azure存储服务:
*.blob.core.windows.net、*.azureedge.net(用于下载流水线任务、工具依赖)
如果你的流水线需要访问外部包源(如NuGet、npm)或其他Azure服务,再额外添加对应域名的443端口出站规则即可。
二、"Determining matching Azure Pipelines agent..." 报错排查
你遇到的这个错误,本质是代理容器无法连接到Azure DevOps服务并获取代理池信息,常见解决方向:
- 补全出站域名访问权限
只开放80/443端口不够,必须确保容器能访问前面提到的3类核心域名,尤其是login.microsoftonline.com——很多人会漏掉这个身份验证域名,导致代理无法完成注册。 - 核对启动参数正确性
检查启动容器时传入的环境变量:AZP_URL:必须是你的Azure DevOps组织完整URL(比如https://dev.azure.com/your-org-name)AZP_TOKEN:个人访问令牌(PAT)必须拥有**Agent Pools (Read & manage)和Project Collection (Read)**权限AZP_POOL:代理池名称必须和Azure DevOps里创建的完全一致(大小写敏感)
示例正确启动命令片段:
docker run -e AZP_URL=https://dev.azure.com/your-org -e AZP_TOKEN=your-valid-pat -e AZP_POOL=your-pool-name mcr.microsoft.com/azure-pipelines-agent:ubuntu-latest - 排查ACI网络配置
- 如果ACI部署在虚拟网络中,检查子网关联的NSG是否阻止了443端口的出站流量到上述域名
- 在容器内执行
nslookup dev.azure.com和nslookup login.microsoftonline.com,验证DNS解析是否正常
- 确认令牌有效性
检查你的PAT是否过期,或者权限是否被修改——如果令牌权限不足,代理会无法读取代理池信息,导致卡在这个步骤。
内容的提问来源于stack exchange,提问作者romanzdk
相关产品推荐
相关产品推荐

