Управление профилями рабочей нагрузки с помощью Azure CLI

Узнайте, как управлять профилями рабочей нагрузки в среде приложений контейнеров с помощью Azure CLI.

Создание приложения-контейнера в профиле

По умолчанию среда "Приложения контейнеров" создается с управляемой виртуальной сетью, которая автоматически создается для вас. Созданные виртуальные сети недоступны, так как они создаются в клиенте Microsoft.

Кроме того, можно создать среду с пользовательской виртуальной сетью. Используйте этот параметр, если вам нужна какая-либо из следующих функций:

  1. Создайте среду приложений-контейнеров.

    az containerapp env create \
      --resource-group "<RESOURCE_GROUP>" \
      --name "<NAME>" \
      --location "<LOCATION>"
    

    Выполнение этой команды может занять до 10 минут.

  2. Проверьте состояние среды. Следующая команда сообщает, успешно ли создана среда.

    az containerapp env show \
      --name "<ENVIRONMENT_NAME>" \
      --resource-group "<RESOURCE_GROUP>"
    

    provisioningState должен сообщить Succeeded, прежде чем вы перейдете к следующей команде.

  3. Создайте новое приложение контейнера.

    az containerapp create \
      --resource-group "<RESOURCE_GROUP>" \
      --name "<CONTAINER_APP_NAME>" \
      --target-port 80 \
      --ingress external \
      --image mcr.microsoft.com/k8se/quickstart:latest \
      --environment "<ENVIRONMENT_NAME>" \
      --workload-profile-name "Consumption"
    

Эта команда развертывает приложение в встроенном профиле рабочей нагрузки потребления. Если вы хотите создать приложение в выделенном профиле, сначала необходимо добавить профиль в среду.

Эта команда создает новое приложение в среде с помощью определенного профиля рабочей нагрузки.

При создании среды с пользовательской виртуальной сетью у вас есть полный контроль над конфигурацией виртуальной сети. Этот элемент управления позволяет реализовать следующие функции:

Чтобы создать среду приложений контейнеров, используйте следующие команды.

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

    az network vnet create \
      --address-prefixes 13.0.0.0/23 \
      --resource-group "<RESOURCE_GROUP>" \
      --location "<LOCATION>" \
      --name "<VNET_NAME>"
    
  2. Создайте подсеть, делегированную для Microsoft.App/environments.

    az network vnet subnet create \
      --address-prefixes 13.0.0.0/23 \
      --delegations Microsoft.App/environments \
      --name "<SUBNET_NAME>" \
      --resource-group "<RESOURCE_GROUP>" \
      --vnet-name "<VNET_NAME>" \
      --query "id"
    

    Скопируйте значение идентификатора и вставьте его в следующую команду.

    Делегирование Microsoft.App/environments требуется, чтобы предоставить среде выполнения Container Apps необходимые права управления виртуальной сетью для запуска профилей рабочей нагрузки в среде Container Apps.

    Для подсети можно указать размер вплоть до /27 CIDR (32 IP-адреса, 8 из которых зарезервированы). Если вы собираетесь указать /27 CIDR-префикс, обратите внимание на следующие пункты:

    • Для инфраструктуры приложений контейнеров зарезервировано 11 IP-адресов. Таким образом, /27 CIDR имеет не более 21 доступных IP-адресов.

    • IP-адреса распределяются по-разному в планах Consumption и Dedicated:

      Только потребление Выделенный
      Для каждой реплики требуется один IP-адрес. Пользователи не могут иметь приложения с более чем 21 репликами во всех приложениях. Для развертывания без простоев требуется вдвое больше IP-адресов, поскольку предыдущая версия продолжает работать, пока новая версия не будет успешно развернута. Для каждого экземпляра (узла виртуальной машины) требуется один IP-адрес. В этих профилях рабочей нагрузки может быть до 21 экземпляров, а также сотни или более реплик, работающих в этих профилях рабочей нагрузки.
  3. Создайте среду приложений-контейнеров.

    Примечание.

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

    az containerapp env create \
      --resource-group "<RESOURCE_GROUP>" \
      --name "<NAME>" \
      --location "<LOCATION>"
    

    Выполнение этой команды может занять до 10 минут.

  4. Проверьте состояние среды. Следующая команда сообщает, успешно ли создана среда.

    az containerapp env show \
      --name "<ENVIRONMENT_NAME>" \
      --resource-group "<RESOURCE_GROUP>"
    

    provisioningState должен сообщить о Succeeded перед переходом к следующей команде.

  5. Создайте новое приложение контейнера.

    az containerapp create \
      --resource-group "<RESOURCE_GROUP>" \
      --name "<CONTAINER_APP_NAME>" \
      --target-port 80 \
      --ingress external \
      --image mcr.microsoft.com/k8se/quickstart:latest \
      --environment "<ENVIRONMENT_NAME>" \
      --workload-profile-name "Consumption"
    

Эта команда развертывает приложение в встроенном профиле рабочей нагрузки потребления. Если вы хотите создать приложение в выделенном профиле, сначала необходимо добавить профиль в среду.

Эта команда создает новое приложение в среде с помощью определенного профиля рабочей нагрузки.

Добавление профилей

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

az containerapp env workload-profile add \
  --resource-group <RESOURCE_GROUP> \
  --name <ENVIRONMENT_NAME> \
  --workload-profile-type <WORKLOAD_PROFILE_TYPE> \
  --workload-profile-name <WORKLOAD_PROFILE_NAME> \
  --min-nodes <MIN_NODES> \
  --max-nodes <MAX_NODES>

При выборе профиля рабочей нагрузки для добавления убедитесь в региональной доступности. Значение, выбранное для заполнителя <WORKLOAD_PROFILE_NAME>, — это понятное имя профиля рабочей нагрузки.

Использование понятных имен позволяет добавлять несколько профилей одного типа в среду. Понятное пользователю имя используется при развертывании контейнерного приложения и управлении им в профиле рабочей нагрузки.

Тип рабочего профиля — это конкретный регион, а не один глобальный список жесткого кода. Предполагаемый путь обнаружения: az containerapp env workload-profile list-supported -l <REGION> Реализация получает поддерживаемые значения из конечной точки шаблона ARM для доступных типов профилей рабочей нагрузки в этом местоположении.

Используйте эту команду, чтобы просмотреть допустимые типы профилей рабочей нагрузки для региона:

az containerapp env workload-profile list-supported -l <REGION>

Используйте одно из возвращаемых значений для --workload-profile-type. Например, можно использовать D4 в регионах, где этот тип доступен.

Помните следующее поведение:

  • Команда преобразует значение type в верхний регистр перед отправкой.
  • Если не указано --workload-profile-name, команда по умолчанию использует имя профиля для значения типа.
  • Добавление или обновление профилей рабочей нагрузки работает только для сред, поддерживающих профили рабочей нагрузки.

Редактирование профилей

Минимальное и максимальное количество узлов, используемых профилем рабочей нагрузки, можно изменить с помощью update команды.

az containerapp env workload-profile update \
  --resource-group <RESOURCE_GROUP> \
  --name <ENV_NAME> \
  --workload-profile-type <WORKLOAD_PROFILE_TYPE> \
  --workload-profile-name <WORKLOAD_PROFILE_NAME> \
  --min-nodes <MIN_NODES> \
  --max-nodes <MAX_NODES>

Удаление профиля

Используйте следующую команду, чтобы удалить профиль рабочей нагрузки.

az containerapp env workload-profile delete \
  --resource-group "<RESOURCE_GROUP>" \
  --name <ENVIRONMENT_NAME> \
  --workload-profile-name <WORKLOAD_PROFILE_NAME> 

Примечание.

Профиль рабочей нагрузки Consumption нельзя удалить.

Проверка профилей

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

Список доступных профилей рабочей нагрузки

list-supported Используйте команду для перечисления поддерживаемых профилей рабочих нагрузок для региона.

Следующая команда Azure CLI отображает результаты в таблице.

az containerapp env workload-profile list-supported \
  --location <LOCATION>  \
  --query "[].{Name: name, Cores: properties.cores, MemoryGiB: properties.memoryGiB, Category: properties.category}" \
  -o table

Ответ похож на таблицу, похожую на этот пример:

Name                       Cores    MemoryGiB    Category
-------------------------  -------  -----------  --------------------
D4                         4        16           GeneralPurpose
D8                         8        32           GeneralPurpose
D16                        16       64           GeneralPurpose
D32                        32       128          GeneralPurpose
E4                         4        32           MemoryOptimized
E8                         8        64           MemoryOptimized
E16                        16       128          MemoryOptimized
E32                        32       256          MemoryOptimized
Consumption                4        8            Consumption
Consumption-GPU-NC24-A100  24       220          Consumption-GPU-A100
Consumption-GPU-NC8as-T4   8        56           Consumption-GPU-T4
Flex                       4        16           Consumption
NC24-A100                  24       220          GPU-NC-A100
NC48-A100                  48       440          GPU-NC-A100
NC96-A100                  96       880          GPU-NC-A100

Выберите профиль рабочей нагрузки и используйте поле Name при добавлении или обновлении профилей рабочей нагрузки с помощью команд az containerapp env workload-profile add или az containerapp env workload-profile update для параметра --workload-profile-type.

Отображение профиля рабочей нагрузки

Отображение сведений о профиле рабочей нагрузки.

az containerapp env workload-profile show \
  --resource-group <RESOURCE_GROUP> \
  --name <ENVIRONMENT_NAME> \
  --workload-profile-name <WORKLOAD_PROFILE_NAME> 

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