GitHub Actions 与 Azure 虚拟网络集成
内容提要
本文介绍了使用GitHub私有网络配置Azure PaaS服务和GitHub托管的运行器之间的私有连接。通过使用私有终结点、私有DNS区域和虚拟网络,实现与Azure中部署的应用程序的私有连接。文章提供了配置步骤和代码示例,提高安全性并确保CI/CD流水线正常工作。
延伸解读
适用计划与区域限制
该功能仅支持 GitHub Enterprise 和 Team 计划,且 Azure 区域有限制。截至2024年7月,仅支持 EastUs、WestUs2、NorthEurope 等18个区域。若私有终结点所在 VNET 不在支持区域,需新建 VNET 并使用区域对等连接或创建另一组私有终结点。规划时需提前确认区域兼容性,避免后续调整。
私有终结点与 DNS 解析变化
启用私有终结点后,PaaS 服务的 FQDN 会转为 CNAME 指向 privatelink 区域,例如存储账户从 blob.core.windows.net 变为 privatelink.blob.core.windows.net。私有 DNS 区域中需创建 A 记录解析到私有终结点网卡的私有 IP。若从其他 VNET 访问,必须将该 DNS 区域链接到所有相关 VNET,否则解析可能失败。
网络拓扑与对等连接注意事项
若私有终结点与 GitHub 运行器网卡位于不同 VNET,可使用 VNET 对等连接,支持同区域、跨区域、跨订阅甚至跨租户。但对等连接不可传递,跨多个网络时需配置网络虚拟设备(NVA)路由。在 HUB/Spoke 拓扑中,可为 GitHub 网卡创建专用 spoke,并根据需要选择对等、NVA 或 VPN 网关连接。
配置流程关键步骤
配置需依次完成:获取 GitHub 企业或组织 ID(通过 GraphQL API)、在 Azure 注册 GitHub.Network 资源提供程序、创建 GitHub.Network/networkSettings 资源并获取 tags.GitHubId、在 GitHub 创建网络配置和运行器组、最后创建运行器并更新工作流的 runs-on 标签。注意子网需委托给 GitHub.Network/networkSettings,且网络配置可在企业或组织级别创建。
Q&A
如何在GitHub Actions中与Azure PaaS服务建立私有连接?
可以通过配置虚拟网络、私有终结点和私有DNS区域来实现与Azure PaaS服务的私有连接。
为什么建议在Azure中禁用公共访问?
禁用公共访问可以提高安全性,防止未授权的外部访问。
GitHub私有网络功能的主要优势是什么?
GitHub私有网络功能允许托管的运行器使用用户控制的网络接口卡,从而无需管理自己的运行器,确保与PaaS服务的私有连接。
如何配置Azure中的虚拟网络以支持GitHub托管的运行器?
需要创建Azure VNET,并在其中配置GitHub网络设置,确保运行器可以连接到PaaS服务。
私有终结点在Azure中有什么作用?
私有终结点是PaaS服务的只读网络接口卡,提供更安全和快速的连接,确保流量不经过公共互联网。
如何在GitHub中创建网络配置以实现VNET连接?
在GitHub中,需创建网络配置并选择Azure私有网络,输入Terraform输出的ID以保存配置。