Поделиться через


Выполнение задачи ACR в выделенном пуле агентов

Настройте пул виртуальных машин под управлением Azure (пул агентов), чтобы обеспечить выполнение задач Реестра контейнеров Azure в выделенной вычислительной среде. Настроив один или нескольких пулов в реестре, можно будет выбрать пул для выполнения задачи вместо вычислительной среды по умолчанию для службы.

Пул агентов обеспечивает следующие возможности.

  • Поддержка виртуальных сетей. Назначьте пул агентов виртуальной сети Azure, предоставив доступ к ресурсам в этой виртуальной сети, таким как реестр контейнеров, хранилище ключей или хранилище.
  • Масштабирование по мере необходимости. Увеличивайте число экземпляров в пуле агентов для выполнения ресурсоемких задач или уменьшайте масштаб до нуля. Счета выставляются на основе выделения емкости пула. Подробные сведения см. в разделе Цены.
  • Гибкие возможности. Выбирайте различные уровни пула и параметры масштабирования в соответствии с потребностями рабочей нагрузки каждой задачи.
  • Управление Azure. Установку исправлений для пулов задач и их обслуживание осуществляет платформа Azure. Это обеспечивает зарезервированное выделение без необходимости обслуживать отдельные виртуальные машины.

Эта возможность доступна на уровне Премиум службы реестра контейнеров. Сведения об уровнях служб реестра и ограничениях см. в статье Номера SKU реестра контейнеров Azure.

Внимание

Сейчас эта функция доступна в предварительной версии, и применяются некоторые ограничения. Предварительные версии предоставляются только в том случае, если вы принимаете дополнительные условия использования. Некоторые аспекты этой функции могут быть изменены до выхода общедоступной версии.

Ограничения предварительной версии

  • В настоящее время пулы агентов задач поддерживают узлы Linux. Узлы Windows сейчас не поддерживаются.
  • Пулы агентов задач доступны в предварительной версии в следующих регионах: западная часть США 2, южная часть США, восточная часть США 2, восточная часть США, центральная часть США, Западная Европа, Центральная Европа, Центральная Канада, Восточная Азия, Северная Азия, USGov Аризона, USGov Техас и USGov Вирджиния.
  • Для каждого реестра по умолчанию применяется квота на общее число виртуальных ЦП (ядер): 16 для всех стандартных пулов агентов и 0 для изолированных пулов агентов. Отправьте запрос в службу поддержки для выделения дополнительных ресурсов.

Необходимые компоненты

  • Для выполнения действий с Azure CLI, описанных в этой статье, потребуется Azure CLI 2.3.1 или более поздней версии. Если вам необходимо выполнить установку или обновление, см. статью Установка Azure CLI 2.0. Кроме того, можно воспользоваться запуском в Azure Cloud Shell.
  • Если у вас еще нет реестра контейнеров, создайте его (обязательно в ценовой категории "Премиум") в региона предварительной версии.

Уровни пула

Уровни пула агентов предоставляют приведенные ниже ресурсы для каждого экземпляра в пуле.

Уровень Тип ЦП Память (ГБ)
S1 standard 2 3
S2 standard 4 8
S3 standard 8 16
I6 Изолированный 64 216

Создание пула агентов задач и управление им

Задание реестра по умолчанию (необязательно)

Чтобы упростить выполнение приведенных ниже команд Azure CLI, задайте реестр по умолчанию, выполнив команду az config.

az config set defaults.acr=<registryName>

В следующих примерах предполагается, что вы задали реестр по умолчанию. В противном случае передавайте параметр --registry <registryName> в каждой команде az acr.

Создание пула агентов

Создайте пул агентов с помощью команды az acr agentpool create. В следующем примере создается пул уровня S2 (4 ЦП на экземпляр). По умолчанию пул содержит 1 экземпляр.

az acr agentpool create \
    --registry MyRegistry \
    --name myagentpool \
    --tier S2

Примечание.

Создание пула агентов и другие операции управления пулом занимают несколько минут.

Масштабирование пула

Масштабировать размер пула можно с помощью команды az acr agentpool update. В следующем примере пул масштабируется до 2 экземпляров. Можно масштабировать его до 0 экземпляров.

az acr agentpool update \
    --registry MyRegistry \
    --name myagentpool \
    --count 2

Создание пула в виртуальной сети

Добавление правил брандмауэра

Для пулов агентов задач требуется доступ к приведенным ниже службам Azure. Указанные ниже правила брандмауэра нужно добавить в имеющиеся группы безопасности сети или определяемые пользователем маршруты.

Направление Протокол Источник Исходный порт Назначение Порт назначения Использовано Замечания
Исходящие TCP Виртуальная сеть Любое AzureKeyVault 443 По умолчанию.
Исходящие TCP Виртуальная сеть Любое Хранилище 443 По умолчанию.
Исходящие TCP Виртуальная сеть Любое Концентратор событий 443 По умолчанию.
Исходящие TCP Виртуальная сеть Любое AzureActiveDirectory 443 По умолчанию.
Исходящие TCP Виртуальная сеть Любое AzureMonitor 443,12000 По умолчанию. Порт 12000 — это уникальный порт, используемый для диагностика

Примечание.

Если задачам требуются дополнительные ресурсы из общедоступного Интернета, добавьте соответствующие правила. Например, дополнительные правила необходимы для выполнения задачи сборки Docker, которая извлекает базовые образы из Docker Hub или восстанавливает пакет NuGet.

Клиенты, базируя свои развертывания с помощью MCR, могут ссылаться на правила брандмауэра MCR/MAR.

Расширенная конфигурация сети

Если стандартные правила брандмауэра или группы безопасности сети (группа безопасности сети) считаются слишком разрешительными, а для исходящих подключений требуется более подробный контроль, рассмотрите следующий подход:

  • Включите конечные точки службы в подсети пула агентов. Это предоставляет пулу агентов доступ к его зависимостям службы при сохранении безопасной сетевой состояния.
  • Важно отметить, что правила исходящего брандмауэра или группы безопасности сети по-прежнему необходимы. Эти правила упрощают возможность виртуальная сеть переключить исходный IP-адрес с общедоступного на частный, что является дополнительным шагом, помимо включения конечных точек службы.

Дополнительные сведения о конечных точках служб описаны здесь.

Как минимум, потребуются следующие конечные точки службы.

  • Microsoft.AzureActiveDirectory
  • Microsoft.ContainerRegistry
  • Microsoft.EventHub
  • Microsoft.KeyVault
  • Microsoft.Storage (или соответствующие регионы хранения, принимающие георепликацию в учетную запись)

Примечание.

В настоящее время конечная точка службы для Azure Monitor не существует. Если исходящий трафик для Azure Monitor не настроен, пул агентов не сможет выдавать журналы диагностики, но может работать нормально. В этом случае ACR не сможет полностью устранить возникшие проблемы, поэтому важно, чтобы администратор сети учитывал это при планировании конфигурации сети.

Кроме того, важно отметить, что все задачи ACR имеют предварительно кэшированные образы для некоторых наиболее распространенных вариантов использования. Задачи будут кэшировать только одну версию одновременно, то есть если используется полная ссылка на изображение с тегами, агент сборки попытается извлечь изображение. Например, распространенный вариант использования.cmd: mcr.microsoft.com/acr/acr-cli:<tag> Однако предварительно кэшированная версия часто обновляется, что означает, что фактическая версия на компьютере, скорее всего, будет выше. В этом случае конфигурация сети должна настроить маршрут для исходящего трафика в целевой узел реестра, который в приведенном выше примере будет mcr.microsoft.com. Те же правила применяются к любому другому внешнему общедоступному реестру (docker.io, quay.io, ghcr.io и т. д.).

Создание пула в виртуальной сети

В следующем примере создается пул агентов в подсети mysubnet сети myvnet.

# Get the subnet ID
subnetId=$(az network vnet subnet show \
        --resource-group myresourcegroup \
        --vnet-name myvnet \
        --name mysubnetname \
        --query id --output tsv)

az acr agentpool create \
    --registry MyRegistry \
    --name myagentpool \
    --tier S2 \
    --subnet-id $subnetId

Выполнение задачи в пуле агентов

В следующих примерах показано, как указать пул агентов при постановке задачи в очередь.

Примечание.

Чтобы использовать пул агентов в задаче ACR, убедитесь, что в этом пуле есть по крайней мере 1 экземпляр.

Быстрая задача

Поставьте в очередь быструю задачу в пуле агентов с помощью команды az acr build, передав параметр --agent-pool.

az acr build \
    --registry MyRegistry \
    --agent-pool myagentpool \
    --image myimage:mytag \
    --file Dockerfile \
    https://github.com/Azure-Samples/acr-build-helloworld-node.git#main

Автоматически активируемая задача

Например, создайте запланированную задачу в пуле агентов с помощью команды az acr task create, передав параметр --agent-pool.

az acr task create \
    --registry MyRegistry \
    --name mytask \
    --agent-pool myagentpool \
    --image myimage:mytag \
    --schedule "0 21 * * *" \
    --file Dockerfile \
    --context https://github.com/Azure-Samples/acr-build-helloworld-node.git#main \
    --commit-trigger-enabled false

Чтобы проверить конфигурацию задачи, выполните команду az acr task run.

az acr task run \
    --registry MyRegistry \
    --name mytask

Запрос состояния пула

Чтобы узнать текущее число выполнений, запланированных в пуле агентов, выполните команду az acr agentpool show.

az acr agentpool show \
    --registry MyRegistry \
    --name myagentpool \
    --queue-count

Следующие шаги

Дополнительные примеры сборок образов контейнеров и описание их обслуживания в облаке приведены в цикле учебников по Задачам ACR.