关于 GitHub 托管运行器的 Azure 私有网络
您可以在 Azure VNET 中使用 GitHub 托管的运行器。这使您能够在 CI/CD 中使用 GitHub 管理的基础设施,同时对运行器的网络策略拥有完整控制。有关 Azure VNET 的更多信息,请参阅 Azure 文档中的 什么是 Azure 虚拟网络?。
您可以将多个 VNET 子网连接到 GitHub,并通过运行程序组管理运行程序对私有资源的访问。有关运行程序组的更多信息,请参阅 控制对更大运行程序的访问。
在 Azure VNET 中使用 GitHub 托管的运行程序可让您执行以下操作。
- 在不打开互联网端口的情况下,将运行程序私密地连接到 Azure VNET 内部的资源,包括可从 Azure VNET 访问的本地资源。
- 通过对外向网络策略的完整控制,限制 GitHub 托管运行程序的访问或连接对象。
- 监控 GitHub 托管运行程序的网络日志,查看运行程序的所有进出连接。
关于在 Azure VNET 中使用更大的运行程序
2‑64 vCPU 的 Ubuntu 和 Windows 运行程序在 Azure VNET 中受支持。有关这些运行程序类型的更多信息,请参阅 更大的运行程序。
针对更大的运行程序,GitHub 托管运行程序的私有网络不支持静态 IP 地址。您必须使用动态 IP 地址,这也是更大运行程序的默认配置。有关更大运行程序的网络信息,请参阅 更大的运行程序。
关于网络通信
为了促进 GitHub 网络与您的 VNET 之间的通信,GitHub 托管运行程序的网络接口卡(NIC)会部署到您的 Azure VNET 中。
由于 NIC 位于您的 VNET 中,GitHub 无法阻止入站连接。默认情况下,Azure 虚拟机会接受来自同一 VNET 的入站连接。有关详细信息,请参阅 Microsoft Learn 上的 AllowVNetInBound。建议显式阻止对运行程序的所有入站连接。GitHub 永远不会要求这些机器接受入站连接。
NIC 使 Azure 虚拟机(VM)能够与互联网、Azure 以及本地资源进行通信。如此一来,所有通信都保持在网络边界内私密进行,针对 VNET 的网络策略同样适用于运行程序。有关如何管理网络接口的详细信息,请参阅 Microsoft Learn 上的 更改网络接口设置。
注意
很快,GitHub Actions 服务创建的 NIC 将不再出现在您的 Azure 订阅中。以后,NIC 将在服务订阅中进行供应,并从您的子网中分配 IP 地址。

- GitHub Actions 工作流已触发。
- GitHub Actions 服务创建运行程序。
- 运行程序服务将 GitHub 托管运行程序的网络接口卡(NIC)部署到您的 Azure VNET 中。
- 运行程序代理接收工作流作业。GitHub Actions 服务将作业排队。
- 运行程序将日志发送回 GitHub Actions 服务。
- 该 NIC 访问本地资源。
关于受支持的地区
GitHub Actions 服务仅支持 Azure 所提供地区的一个子集。为实现 GitHub Actions 服务与您的子网之间的通信,您的子网必须位于受支持的地区之一。
注意
如果您在 GHE.com 上使用数据驻留,受支持的地区会有所不同。请参阅 GHE.com 的网络详情。
以下地区在 GitHub.com 上受支持。
AustraliaEastBrazilSouthCanadaCentralCanadaEastCentralUsEastAsiaEastUsEastUs2FranceCentralGermanyWestCentralJapanWestKoreaCentralNorthCentralUsNorthEuropeNorwayEastSouthCentralUsSoutheastAsiaSouthIndiaSwedenCentralSwitzerlandNorthUkSouthUkWestWestUsWestUs2WestUs3
Azure 私有网络在以下地区支持 GPU 运行程序。
EastUsNorthCentralUsSouthCentralUsWestUs
Azure 私有网络在以下地区支持 arm64 运行程序。
CentralUsEastUsEastUs2NorthCentralUsSouthCentralUsWestUsWestUs2WestUs3
我们即将启动一个流程,以便尽快请求对新地区的支持。您也可以使用全局虚拟网络对等互连,将跨 Azure 区域的虚拟网络连接在一起。有关详细信息,请参阅 Azure 文档中的 虚拟网络对等互连。
关于 GitHub Actions 服务权限
为了成功部署 NIC 并将 NIC 加入子网,GitHub Actions 服务在您的 Azure 订阅中维护以下 Azure 基于角色的访问控制(RBAC)权限。有关 Azure 资源细粒度访问管理的更多信息,请参阅 Azure 文档中的 Azure RBAC。
GitHub.Network/operations/readGitHub.Network/networkSettings/readGitHub.Network/networkSettings/writeGitHub.Network/networkSettings/deleteGitHub.Network/RegisteredSubscriptions/readMicrosoft.Network/locations/operations/readMicrosoft.Network/locations/operationResults/readMicrosoft.Network/locations/usages/readMicrosoft.Network/networkInterfaces/readMicrosoft.Network/networkInterfaces/writeMicrosoft.Network/networkInterfaces/deleteMicrosoft.Network/networkInterfaces/join/actionMicrosoft.Network/networkSecurityGroups/join/actionMicrosoft.Network/networkSecurityGroups/readMicrosoft.Network/publicIpAddresses/readMicrosoft.Network/publicIpAddresses/writeMicrosoft.Network/publicIPAddresses/join/actionMicrosoft.Network/routeTables/join/actionMicrosoft.Network/virtualNetworks/readMicrosoft.Network/virtualNetworks/subnets/join/actionMicrosoft.Network/virtualNetworks/subnets/readMicrosoft.Network/virtualNetworks/subnets/writeMicrosoft.Network/virtualNetworks/subnets/serviceAssociationLinks/deleteMicrosoft.Network/virtualNetworks/subnets/serviceAssociationLinks/readMicrosoft.Network/virtualNetworks/subnets/serviceAssociationLinks/writeMicrosoft.Network/virtualNetworks/subnets/serviceAssociationLinks/details/readMicrosoft.Network/virtualNetworks/subnets/serviceAssociationLinks/validate/actionMicrosoft.Resources/subscriptions/resourceGroups/readMicrosoft.Resources/subscriptions/resourcegroups/deployments/readMicrosoft.Resources/subscriptions/resourcegroups/deployments/writeMicrosoft.Resources/subscriptions/resourcegroups/deployments/operations/readMicrosoft.Resources/deployments/readMicrosoft.Resources/deployments/writeMicrosoft.Resources/deployments/operationStatuses/read
以下权限将位于您 Azure 租户中的两个企业应用上。配置 Azure 私有网络后,您将在 Azure 租户中看到这些企业应用。
GitHub CPS Network Serviceid:85c49807-809d-4249-86e7-192762525474GitHub Actions APIid:4435c199-c3da-46b9-a61d-76de3f2c9f82
使用您 VNET 的网络策略
由于 GitHub 托管运行程序的 NIC 部署在您的 Azure VNET 中,针对 VNET 所应用的网络策略同样适用于运行程序。
例如,如果您的 VNET 已配置 Azure ExpressRoute 以提供对本地资源(如 Artifactory)的访问,或已连接到 VPN 隧道以访问其他云资源,则这些访问策略同样适用于您的运行程序。此外,针对 VNET 网络安全组(NSG)的任何出站规则也会生效,使您能够控制运行程序的出站访问。
如果您已为 VNET 启用了网络日志监控,也可以监控运行程序的网络流量。
GitHub 托管运行程序使用您网络所采用的任何出站控制方式。如果您的网络依赖 Azure 的默认出站访问,则 IP 地址不可预测,无法添加到 GitHub 的 IP 允许列表中。有关使用稳定出站 IP 的建议,请参阅 Azure 文档中的 默认出站访问。
关于 VNET 故障转移
注意
VNET 故障转移正处于公开预览阶段,可能会有更改。
您可以为网络配置设置故障转移网络。故障转移网络是一个次要的 Azure 虚拟网络子网,可能位于与主子网不同的 Azure 区域。如果主子网因区域性中断或其他故障而不可用,您可以启用故障转移网络,将运行程序流量通过次子网路由,从而保持 GitHub Actions 工作流的连续性。
关于 VNET 故障转移的关键要点
- 故障转移子网可以位于与主子网不同的 Azure 区域。
- 在主子网和故障转移子网之间切换是手动过程。您可以自行决定何时启用或禁用故障转移网络。
- 在使用故障转移之前,主子网和故障转移子网都必须配置好所需的 Azure 资源(VNET/子网、网络设置等)。
- 故障转移子网必须位于受支持的地区。
有关配置故障转移网络的更多信息,请参阅 在组织中为 GitHub 托管运行程序配置私有网络。
在 Azure VNET 中使用 GitHub 托管运行程序
要在 Azure VNET 中使用 GitHub 托管运行程序,您需要先配置 Azure 资源,然后在 GitHub 中创建网络配置。
有关在组织层面配置 Azure 私有网络的步骤,请参阅 在组织中为 GitHub 托管运行程序配置私有网络。