我正在尝试使用 ADO 管道中的
专用端点连接到
ACR registry
,但出现以下错误:-
ERROR: Get "https://containerreg.acr.io/v2/": net/http: TLS failed to verify certificate: X509: certificate is valid for _.search.windows.net,_.management.search.windows.net not containerreg.acr.io
但是当将其更改为
public access network
时,我们能够 访问 acr 并推送和拉取图像。
private endpoint in vnetA
。Private DNS Zone
中创建了虚拟网络链接作为我们的Devops agent is in VNETB
,但我们仍然收到tls/ssl证书问题。请参阅此 Ms 文档,了解如何使用专用终结点实施 ACR 并使用自托管代理通过 Azure Devops 管道访问它。
- 一旦禁用公共网络访问,包括 Azure DevOps Services 在内的某些 Azure 服务的实例当前无法访问容器注册表。
- Azure DevOps 托管代理当前不支持私有终结点。您将需要使用具有到专用端点的网络视线的自托管代理。
您需要将 DevOps 代理放置在与专用终结点相同的 VNET 中,由于 DevOps 代理位于 VNETB 中,在 Azure 中,两个单独的 VNET 之间没有内部连接,您需要在 VnetA 和 VnetB 之间创建 VNET 对等互连,以实现此连接工作,或者将 DevOps 代理放置在同一个 VNETA 中,因为同一个 VNET 内的资源可以相互通信。
或者您需要将 VNETB 添加为 ACR 中的私有端点。
我创建了一个启用 ACR 的专用端点。
然后我参考了这个MS文档这里,创建一个VM>并使用私有ACR启用对此VM的访问。
在与我的 ACR 相同的 VNET 中创建一台虚拟机。
在虚拟机子网上启用 ACR 服务端点。
按照 ACR 中的方式添加此子网。
在 ACR 中添加了 VM 的子网作为专用端点。
启用此虚拟机作为 Azure DevOps 的自托管代理。
尝试从虚拟机访问ACR,成功了。
我在虚拟机子网上启用了
Microsoft.ContainerRegistry
服务端点:-
az network vnet subnet update --name default --vnet-name silicon-vnet --resource-group siliconacr-rg --service-endpoints Microsoft.ContainerRegistry
输出:-
在ACR中添加网络规则以允许该虚拟机的子网访问ACR:-
az acr network-rule add --name valleyacr --subnet /subscriptions/0151c365-f598-44d6-b4fd-e2b6e97cb2a7/resourceGroups/siliconacr-rg/providers/Microsoft.Network/virtualNetworks/silicon-vnet/subnets/default
输出:-
将此虚拟机作为
self hosted agent
添加到您的 Azure DevOps 管道:-