在现有且正在运行的 Azure DevOps 代理池中更改目标 VM ScaleSet?

Posted

技术标签:

【中文标题】在现有且正在运行的 Azure DevOps 代理池中更改目标 VM ScaleSet?【英文标题】:Change the target VM ScaleSet in an existing and running Azure DevOps Agent Pool? 【发布时间】:2022-01-22 17:03:04 【问题描述】:

干杯!

也许你们中的一些人已经做过类似的事情。

我们使用 terraform 在其中一个订阅中创建了一个专用的自托管 AZ DevOps 代理池。

因此,terraform 是 terraform,DevOps 对代理池发挥了神奇作用,目前规模集上的任何重大更新都会导致规模集的重建,并具有相应的停机时间。我们知道必要的ignore_changes 生命周期更改可能会阻止这种情况发生,但它们尚未实施。

所以我的问题是:当您更改正在运行的代理池的目标规模集时,有没有人体验过 AZ DevOps 的反应? 这意味着只需通过 Azure DevOps 门户更改目标 ScaleSet。

我们可以稍微停机,但我们真的很希望能够部署与旧代理集并行运行的新基础设施,然后通过门户进行切换。类似于标准的蓝/绿部署方案。

还可以回退到旧代理池。

只要代理池不支持超过 1 个规模集,这似乎是最可行的解决方案。

这里有人试过这样的吗?

谢谢!

【问题讨论】:

【参考方案1】:

回答我自己的问题: 我们只是拔掉插头并切换到一个新的规模集。 停机时间是立即的,因为 DevOps 会立即将“旧”规模设置为 0。 大约 10-15 分钟后,Azure DevOps 开始向上扩展新实例并将它们添加到代理池中。 简而言之:Scale Set 的蓝/绿部署基本有效。您可以在代理关闭时安排新作业,但在切换时正在运行的代理会被终止,因为实例会立即被删除

【讨论】:

以上是关于在现有且正在运行的 Azure DevOps 代理池中更改目标 VM ScaleSet?的主要内容,如果未能解决你的问题,请参考以下文章

Azure DevOps 在发布期间获取部署代理状态

Azure devops - 从单个版本定义运行多个版本

Azure DevOps Server 2020.1.1 API - 如何获取包含运行它的代理的构建

在 Docker 中运行的自定义 Azure DevOps 构建代理上具有卷装载的测试容器

Azure DevOps 构建管道自托管代理“设备上没有剩余空间”

在 Service Fabric 中运行 Azure DevOps 自托管生成代理时出现“无法解析远程名称”