首页 > 解决方案 > Microsoft 托管代理和自托管代理之间的区别及其适用性

问题描述

我是 Azure 管道的新手,很想知道 Microsoft 托管代理和自托管代理之间的确切区别。还需要知道我们应该在什么情况下使用任何一个代理。这些代理是否与本地和云部署有关?

标签: azureazure-devopsazure-pipelines

解决方案


Microsoft 托管代理:

使用 Microsoft 托管的代理,您可以进行维护和升级。每次运行管道时,您都会获得一个全新的虚拟机。虚拟机在使用一次后被丢弃。Microsoft 托管的代理可以直接在 VM 或容器中运行作业。

预定义的Azure Pipelines代理池提供多个虚拟机映像可供选择,每个映像都包含广泛的工具和软件。通过选择表Included Software中的链接,您可以查看每个托管代理的已安装软件。

Microsoft 托管的代理在安全的 Azure 平台上运行。但是,您必须注意以下安全注意事项。

  • 尽管 Microsoft 托管的代理在 Azure 公共网络上运行,但并未为其分配公共 IP 地址。因此,外部实体不能以 Microsoft 托管的代理为目标。
  • Microsoft 托管的代理在单独的 VM 中运行,每次运行后都会重新映像。每个代理都专用于一个组织,每个虚拟机只托管一个代理。
  • 从安全角度来看,在 Microsoft 托管的代理上运行管道有几个好处。如果您在管道中运行不受信任的代码,例如来自分叉的贡献,则在 Microsoft 托管的代理上运行管道比在企业网络中的自托管代理上运行更安全。
  • 当管道需要访问防火墙后的公司资源时,您必须将 Azure 地理的 IP 地址范围列入白名单。这可能会增加您的曝光率,因为 IP 地址范围相当大,而且此范围内的机器也可能属于其他客户。防止这种情况的最好方法是避免访问内部资源的需要。
  • 托管映像不符合CIS 强化基准。要使用 CIS 强化的映像,您必须创建自托管代理或规模集代理。

有关托管代理的功能限制和其他详细信息,请参阅此文档

对于许多团队来说,这是运行工作的最简单方法。您可以先尝试一下,看看它是否适用于您的构建或部署。如果没有,您可以使用自托管代理。

自托管代理:

自托管代理让您可以更好地控制安装构建和部署所需的依赖软件。此外,机器级缓存和配置在运行之间保持不变,这可以提高速度

您可以在 Linux、macOS、Windows 机器或 Docker 容器上安装代理。

私人代理的性能优势:

  • 如果您使用自托管代理,则可以运行增量构建。例如,如果您定义了一个不清理 repo 并且不执行清理构建的管道,那么您的构建通常会运行得更快。当您使用 Microsoft 托管的代理时,您不会获得这些好处,因为该代理在构建或发布管道完成后被销毁。
  • Microsoft 托管的代理可能需要更长的时间才能开始构建。虽然通常只需几秒钟即可将您的作业分配给 Microsoft 托管的代理,但有时可能需要几分钟才能分配代理,具体取决于我们系统上的负载。

总结:托管代理和自托管代理有很多区别,大家可以根据自己的需要选择合适的代理。有关详细信息,请参阅文档


推荐阅读