【DevOps】通过 Azure DevOps 部署启用私有端点的应用服务
推荐超级课程:
@TOC
有一种常见的场景是,客户希望他们的应用服务部署在私有网络内部,并且不能被公共网络访问。因此,他们通常会启用私有端点并配置访问限制,以拒绝所有公共流量。 当启用私有端点并拒绝公共流量到 Web 应用程序时,所有到这个应用的公共流量都会被切断。由于部署代理的范围有一系列的 IP 地址,它们有一个公共 IP。显然,这些代理无法访问 Web 应用程序。
作为解决方案,我们可以在防火墙中允许 IP 范围列表,或者使用自托管代理进行部署。
你可以查看以下文档获取更多信息 Microsoft 托管代理用于 Azure 管道
在下面的实验室中,我们将演示两个测试。 一个是如果我们使用 Microsoft 代理将代码部署到具有私有端点的 Web 应用程序会发生什么, 另一个是如何使用自托管代理进行部署。
实验
测试 1:使用 Microsoft 托管代理部署
结果:由于 Web 应用程序无法通过互联网访问,我们将看到错误:无法将 Web 包部署到应用服务。IP 禁止 (代码:403)。
创建一个新的管道
在这里,我在这个演示中选择了 GitHub
部署一个 Django 应用程序。所以我选择了第二个。
选择订阅和 Web 应用程序名称
保存并运行
Web 应用程序启用了私有端点,这意味着入站流量需要来自与 Web 应用程序相同子网中的私有 IP 或具有访问此应用服务权限的 IP。 然而,Microsoft 代理在公共网络上运行。部署失败,出现错误 - 无法将 Web 包部署到应用服务。IP 禁止 (代码:403)
测试 2:在 Linux VM (Ubuntu 20.04) 上使用自托管代理部署
结果:它工作得很好。部署成功。
在 Web 应用程序的同一 VNET 中创建 Linux VM (Ubuntu 20.04)。
在 Azure Devops 门户中,添加代理池
然后是新的代理,并选择你的构建机器的操作系统。(在这里,我选择 Linux)
获取个人访问令牌
新的令牌并授予对代理池的权限
记住记录这个令牌,因为它不会再显示。
SSH 到 Linux VM 并配置代理以连接 Azure 管道 下载并创建代理
配置代理设置 服务器 URL:
运行代理
从门户检查代理是否在线
为了避免混淆,我们在这里创建了一个独立的管道。
创建步骤与之前的步骤相同: 新管道 -> GitHub -> Python 到 Azure 上的 Linux Web 应用程序 -> 选择订阅 -> 选择 Web 应用程序名称 -> 保存并运行
修改 yml 文件。将池更改为刚刚创建的池。
然后,再次运行管道。我们可以看到这次它部署成功了。