Управляемые пулы DevOps в настоящее время находятся в предварительной версии.
Юридические условия, применимые к функциям Azure, которые находятся в состоянии бета-версии, предварительной версии или иным образом еще не выпущены в общедоступной версии, см. на странице Дополнительные условия использования предварительных версий в Microsoft Azure.
Настройте параметры масштабирования для управления производительностью и затратами управляемого пула DevOps. Сведения о ценах и производительности см. в статье "Управление затратами и производительностью".
Состояние агента
Управляемые пулы DevOps можно настроить как без отслеживания состояния или состояние.
Пулы без отслеживания состояния— предоставьте новый агент для каждого задания.
Пулы с отслеживанием состояния — разрешить совместное использование агентов между несколькими заданиями.
Параметр по умолчанию для управляемого пула DevOps является бессерверным (свежий агент каждый раз), но в некоторых случаях командам может потребоваться повторно использовать агенты для повторного использования пакетов или файлов, созданных во время предыдущего запуска конвейера. Рабочая нагрузка сборки — это распространенный сценарий, в котором команды хотят сохранить состояние и повторно использовать агенты. Пулы с отслеживанием состояния можно достичь с помощью управляемых пулов DevOps при его балансировке с помощью рекомендаций по обеспечению безопасности. По умолчанию агент можно повторно использовать в течение не более 7 дней, но его можно настроить раньше.
Примечание.
Пулы без отслеживания состояния агента или их использование каждый раз рекомендуется экспертами по безопасности в качестве защиты от атак цепочки поставок.
Пулы без отслеживания состояния
При настройке агента без отслеживания состояния новый агент приобретается для каждого задания и удаляется после завершения задания.
Агенты настраиваются с помощью agentProfile свойства в ресурсе Управляемых пулов DevOps. В следующем примере указывается агент без отслеживания состояния.
Агенты настраиваются с помощью agent-profile параметра при создании или обновлении пула.
В следующем примере агент с отслеживанием состояния указывается с семидневным максимальным временем существования и тридцатиминутным льготным периодом.
az mdp pool create \
--agent-profile agent-profile.json
# other parameters omitted for space
В следующем примере показано содержимое файла agent-profile.json .
Если один и тот же агент может использоваться несколькими сборками ("kind": "stateful"в шаблонах ресурсов или { "stateful": {...} } в Azure CLI), агенты в пуле считаются отслеживанием состояния. Пулы с отслеживанием состояния настраиваются с помощью следующих параметров.
Максимальное время жизни для резервных агентов (maxAgetLifetime) настраивает максимальную продолжительность выполнения агента в пуле с отслеживанием состояния до завершения работы и отмены. Формат максимальной продолжительности жизни для резервных агентовdd.hh:mm:ss. Значение по умолчанию максимального времени для жизни для резервных агентов имеет максимальный допустимый срок в семь дней (7.00:00:00).
Льготный период (gracePeriodTimeSpan) настраивает время, когда агент в пуле с отслеживанием состояния ожидает новых заданий, прежде чем завершить работу после завершения всех текущих и очередных заданий. Формат льготных периодов, dd.hh:mm:ss а по умолчанию — не льготный период.
Хотя агенты в пулах без отслеживания состояния завершаются и удаляются после каждого задания, агенты в пулах с отслеживанием состояния продолжают работать, если выполняются какие-либо из следующих условий.
Если при завершении первого задания есть другое задание, управляемые пулы DevOps отправляют это задание агенту, который выполнял первое задание, а не завершает работу.
Если для пула настроен льготный период, агенты ожидают новых заданий в течение длительности, указанной льготным периодом, прежде чем завершить работу.
Если резервные агенты включены, а образ агента соответствует критериям активного периода подготовки, агент продолжает выполнять и ждать заданий.
Выполнение агентов в пулах с отслеживанием состояния завершается и удаляется, если они выполняются непрерывно в течение длительного времени, указанного максимальным временем жизни для резервных агентов, даже если предыдущие условия верны. Например, если для резервных агентов настроено максимальное время жизни в течение трех дней, а режим резервного агента — вручную, all Week Scheme (компьютеры доступны 24/7), агенты перезапускаются после трех непрерывных дней простоя.
Внимание
Агенты в пулах с отслеживанием состояния по-прежнему могут быть завершены и удалены после завершения задания, если не существует льготного периода, нет активного периода подготовки резервных агентов и без очередных заданий, соответствующих агенту. После отмены агента все состояние теряется.
Льготный период позволяет использовать наиболее экономичный способ запуска пулов с отслеживанием состояния для конвейеров с согласованной нагрузкой и не требует использования режима резервного агента для сохранения агентов в сети и готовности к приему заданий.
Режим резервного агента
При создании пула режим резервного агента по умолчанию отключен и не существует резервных агентов для немедленного назначения конвейерам, которые могут ждать несколько минут до 15 минут, чтобы агент был подготовлен по запросу. Для повышения производительности включите режим резервного агента и настройте расписание резервного агента, которое обеспечивает емкость рабочей нагрузки.
Отключен — режим резервного агента отключен, а агенты подготавливаются по запросу при очередях заданий.
Автоматически . Используйте автоматическое расписание ожидания на основе журнала использования агента и настраиваемого для затрат и производительности.
Резервные агенты настраиваются с помощью resourcePredictionsProfile раздела agentProfile свойства. Задайте "kind": "Manual" для настройки начала с нуля, схемы дня недели или всей схемы недели и укажите сведения о схеме resourcePredictions в разделе. Установите для "kind": "Automatic" настройки автоматических резервных агентов. Опустить раздел, чтобы отключить резервные ResourcePredictionsProfile агенты. Дополнительные сведения о настройке каждого типа масштабирования см. в следующих разделах.
Агенты настраиваются с помощью agent-profile параметра при создании или обновлении пула.
Резервные агенты настраиваются с помощью resourcePredictionsProfile раздела agent-profile параметра. Задайте "kind": "Manual" для настройки начала с нуля, схемы дня недели или всей схемы недели и укажите сведения о схеме resourcePredictions в разделе. Установите для "kind": "Automatic" настройки автоматических резервных агентов. Дополнительные сведения о настройке каждого типа масштабирования см. в следующих разделах.
az mdp pool create \
--agent-profile agent-profile.json
# other parameters omitted for space
В следующем примере показано содержимое файла agent-profile.json .
Режим вручную лучше подходит для команд, имеющих знания о шаблонах использования конвейеров CI/CD. Если выбрать вариант вручную, необходимо определить схему предварительной подготовки на основе понимания того, когда агенты в пуле, скорее всего, будут использоваться и сколько агентов, скорее всего, будут использоваться, и укажите количество агентов подготовки, удовлетворяющих прогнозируемым требованиям.
Вы можете создать собственное расписание подготовки или выбрать один из предопределенных расписаний, и вы можете настроить часовой пояс для указания расписаний. Значением по умолчанию для часового пояса предварительной подготовки является (UTC) универсальное время.
Совет
Количество подготовки в схеме не может быть больше, чем агенты Maximim, настроенные в параметрах пула.
Каждые несколько минут Управляемые пулы DevOps проверяют количество активных агентов, выполняющих задания и резервные агенты, ожидающие заданий, чтобы обеспечить доступность количества агентов подготовки, указанных текущей схемой подготовки. Если текущее число подготовки равно 10, и есть пять агентов, выполняющих задания и два агента в режиме ожидания, Управляемые пулы DevOps будут запускать три дополнительных резервных агента, чтобы привести общее число агентов до 10.
Конфигурацию резервного агента вручную можно настроить одним из следующих трех способов.
Начало с нуля . Настройка набора периодов подготовки для резервных агентов
Каждый из быстрых запусков предварительной подготовки содержит следующие распространенные параметры в дополнение к определенным параметрам для этого быстрого запуска.
Предварительная подготовка Часовой пояс позволяет настроить часовой пояс для времени в схеме предварительной подготовки. Значением по умолчанию для часового пояса предварительной подготовки является (UTC) универсальное время.
Процент резервного агента настраивает процент резервных агентов, которые требуется для каждого образа. * Чтобы убедиться, что все изображения подготовлены одинаково, можно указать целое число от 0 до 100, чтобы представить процент. Если указать процент, общее значение для всех изображений должно быть равно 100. Если у вас есть один образ, укажите * или 100. Процент резервного images агента настраивается в разделе при использовании шаблонов ARM. Дополнительные сведения см. в разделе "Настройка образов".
Подготовка резервных agentProfileагентов вручную указывается в resourcePredictionsProfile разделе , а сведения настраиваются в resourcePredictions разделе.
Укажите нужный часовой пояс для схемы с помощью timeZone свойства. Значение по умолчанию — UTC. Чтобы получить список имен часовых поясов для этого свойства, см . метод TimeZoneInfo.GetSystemTimeZones.
Расписание резервных агентов определяется списком daysData . Список daysData может содержать один элемент или семь элементов.
daysData Список с семью элементами сопоставляется с днями недели, начиная с воскресенья. Каждый из этих семи элементов может содержать ноль или больше "time": count записей, указывая время в формате 24 часа и число резервных агентов. Указанное количество резервных агентов сохраняется до следующей записи, которая может быть в тот "time": count же день или в следующий день.
Список daysData с одним элементом определяет схему All Week, где одна "time": count запись соответствует счетчику резервных агентов на всю неделю.
В следующем примере показана схема резервного агента вручную, используя Eastern Standard Timeодин агент, подготовленный в понедельник по пятницу, с 9:00 (число 1резервных агентов) до 5:00 (число 0резервных агентов).
daysData Один элемент содержит словарь времени и количества резервных агентов. Каждая "time" : count запись указывает количество резервных агентов, которые нужно запланировать, начиная с указанного времени, в формате 24 часа. Последовательные "time" : count записи указывают последовательность запланированных счетчиков агентов в течение этого дня.
"daysData": [
{}, # Schedule of standby agent count adjustments for Sunday
{ # Schedule of standby agent count adjustments for Monday
"09:00:00": 1, # Adjust standy agent count to 1
"17:00:00": 0 # Adjust standby agent count to 0
},
{ # Schedule of standby agent count adjustments for Tuesday
"09:00:00": 1,
"17:00:00": 0
},
{ # Schedule of standby agent count adjustments for Wednesday
"09:00:00": 1,
"17:00:00": 0
},
{ # Schedule of standby agent count adjustments for Thursday
"09:00:00": 1,
"17:00:00": 0
},
{ # Schedule of standby agent count adjustments for Friday
"09:00:00": 1,
"17:00:00": 0
},
{} # Schedule of standby agent count adjustments for Saturday
]
Счетчики резервных агентов не сбрасываются автоматически до нуля в конце дня или в конце недели, и указание пустого daysData элемента не отключает резервные агенты в течение этого дня. Пустой daysData элемент означает, что в этот день нет изменений в расписании количества резервных агентов. Чтобы задать резервный агент равным нулю, начиная с определенного периода времени, необходимо явно указать "time" : count запись со значением count0.
Примеры
Чтобы не внести корректировку в число резервных агентов, указанных в выводе предыдущего дня (или недели, если вы настраиваете первый период недели), укажите daysData элемент с нулевыми записями.
{
}
Чтобы запланировать запуск и остановку 09:00:0017:00:00 одного резервного агента (с помощью часового пояса, указанного resourcePredictions свойством), укажите следующую конфигурацию.
{
"09:00:00": 1,
"17:00:00": 0
}
Чтобы запланировать один резервный агент, начиная с полуночи до 09:00:00полуночи, а затем 10 резервных агентов, пока 17:00:00не укажите следующую конфигурацию.
{
"00:00:00": 1,
"09:00:00": 10,
"17:00:00": 0
}
Чтобы запланировать доступность резервного агента, начиная с 09:00:00 указанного дня, и остановиться на 17:00:00 следующий день, используйте два последовательных daysData элемента.
{
"09:00:00": `1`
},
{
"17:00:00": 0
}
Агенты настраиваются с помощью agent-profile параметра при создании или обновлении пула.
az mdp pool create \
--agent-profile agent-profile.json
# other parameters omitted for space
В следующем примере показано содержимое файла agent-profile.json .
Подготовка резервных agent-profile агентов вручную указывается в resourcePredictionsProfile разделе параметра, а сведения настраиваются в resourcePredictions разделе.
Укажите нужный часовой пояс для схемы с помощью timeZone свойства. Значение по умолчанию — UTC. Чтобы получить список имен часовых поясов для этого свойства, см . метод TimeZoneInfo.GetSystemTimeZones.
Расписание резервных агентов определяется списком daysData . Список daysData может содержать один элемент или семь элементов.
daysData Список с семью элементами сопоставляется с днями недели, начиная с воскресенья. Каждый из этих семи элементов может содержать ноль или больше "time": count записей, указывая время в формате 24 часа и число резервных агентов. Указанное количество резервных агентов сохраняется до следующей записи, которая может быть в тот "time": count же день или в следующий день.
Список daysData с одним элементом определяет схему All Week, где одна "time": count запись соответствует счетчику резервных агентов на всю неделю.
В следующем примере показана схема резервного агента вручную, используя Eastern Standard Timeодин агент, подготовленный в понедельник по пятницу, с 9:00 (число 1резервных агентов) до 5:00 (число 0резервных агентов).
daysData Один элемент содержит словарь времени и количества резервных агентов. Каждая "time" : count запись указывает количество резервных агентов, которые нужно запланировать, начиная с указанного времени, в формате 24 часа. Последовательные "time" : count записи указывают последовательность запланированных счетчиков агентов в течение этого дня.
"daysData": [
{}, # Schedule of standby agent count adjustments for Sunday
{ # Schedule of standby agent count adjustments for Monday
"09:00:00": 1, # Adjust standy agent count to 1
"17:00:00": 0 # Adjust standby agent count to 0
},
{ # Schedule of standby agent count adjustments for Tuesday
"09:00:00": 1,
"17:00:00": 0
},
{ # Schedule of standby agent count adjustments for Wednesday
"09:00:00": 1,
"17:00:00": 0
},
{ # Schedule of standby agent count adjustments for Thursday
"09:00:00": 1,
"17:00:00": 0
},
{ # Schedule of standby agent count adjustments for Friday
"09:00:00": 1,
"17:00:00": 0
},
{} # Schedule of standby agent count adjustments for Saturday
]
Счетчики резервных агентов не сбрасываются автоматически до нуля в конце дня или в конце недели, и указание пустого daysData элемента не отключает резервные агенты в течение этого дня. Пустой daysData элемент означает, что в этот день нет изменений в расписании количества резервных агентов. Чтобы задать резервный агент равным нулю, начиная с определенного периода времени, необходимо явно указать "time" : count запись со значением count0.
Примеры
Чтобы не внести корректировку в число резервных агентов, указанных в выводе предыдущего дня (или недели, если вы настраиваете первый период недели), укажите daysData элемент с нулевыми записями.
{
}
Чтобы запланировать запуск и остановку 09:00:0017:00:00 одного резервного агента (с помощью часового пояса, указанного resourcePredictions свойством), укажите следующую конфигурацию.
{
"09:00:00": 1,
"17:00:00": 0
}
Чтобы запланировать один резервный агент, начиная с полуночи до 09:00:00полуночи, а затем 10 резервных агентов, пока 17:00:00не укажите следующую конфигурацию.
{
"00:00:00": 1,
"09:00:00": 10,
"17:00:00": 0
}
Чтобы запланировать доступность резервного агента, начиная с 09:00:00 указанного дня, и остановиться на 17:00:00 следующий день, используйте два последовательных daysData элемента.
{
"09:00:00": `1`
},
{
"17:00:00": 0
}
Начало с нуля
Если вы решили начать с нуля, вы можете добавить список периодов подготовки для использования в качестве схемы подготовки. Каждый период подготовки состоит из начального дня, дня окончания, часового пояса, времени начала, времени окончания и количества. Периоды подготовки не могут перекрываться друг с другом.
Свойство
Description
Планирование на несколько дней
При проверке можно настроить как день начала, так и день окончания для схемы подготовки.
До следующего периода
При проверке период подготовки выполняется с момента начала до начала следующего периода подготовки.
День начала
День начала периода подготовки.
Конечный день
День окончания периода подготовки. Требуется, если проверяется многодневное время.
Время начала
Время начала периода подготовки.
Время завершения
Время окончания периода подготовки. Требуется, если не будет проверен следующий период .
Count
Количество резервных агентов для подготовки. Это число должно быть больше нуля и не должно быть больше значения максимальных агентов , настроенных в параметрах пула.
После создания периода подготовки можно удалить или изменить период из списка схем предварительной подготовки.
В следующем примере настраивается схема вручную с 1 агентом, подготовленным в понедельник утром с 12:00 до 5:00 AM EST.
Если выбрать схему дня недели, можно указать время начала и окончания, в котором указанное число резервных агентов будет находиться в режиме ожидания каждый рабочий день.
Свойство
Description
Время начала
Время начала периода подготовки.
Время завершения
Время окончания периода подготовки.
Число подготовки
Количество резервных агентов для подготовки. Это число должно быть больше нуля и не должно быть больше значения максимальных агентов , настроенных в параметрах пула.
В следующем примере четыре агента будут использоваться в рабочее время с 0 агентами в нерабочие и выходные дни с использованием восточного стандартного времени.
Если вы не знаете шаблоны использования и хотите полагаться на автоматическое прогнозирование на основе прошлых данных, выберите "Автоматически". Вы можете сбалансировать производительность затрат и агентов с помощью ползунка со следующими пятью вариантами. Управляемые пулы DevOps выполняют запрос за последние три недели исторических данных (если это доступно), упорядочивая сеансы пула в очереди в пять минут и назначает указанный процентиль (чтобы избежать пиков) каждому часу.
Большинство экономически эффективных (MostCostEffective) - 10-й процентиль
Более экономичное (MoreCostEffective) - 25-й процентиль
Balanced (по умолчанию) (Balanced) — 50-й процентиль
Больше производительности (MorePerformance) — 75-й процентиль
Вы можете просмотреть прогнозируемые и фактические показатели использования для любого определенного дня в течение последней недели или семидневного среднего.