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


Создание задания с помощью приложений контейнеров Azure

Задания приложений контейнеров Azure позволяют выполнять контейнерные задачи, которые выполняются в течение ограниченной длительности и выхода. Можно активировать задание вручную, запланировать их выполнение или запустить их на основе событий.

Задания лучше всего подходят для таких задач, как обработка данных, машинное обучение или любой сценарий, требующий обработки по запросу.

В этом кратком руководстве вы создадите вручную или запланированное задание. Сведения о создании задания на основе событий см. в статье "Развертывание задания на основе событий с помощью приложений контейнеров Azure".

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

Настройка

  1. Чтобы войти в Azure из ИНТЕРФЕЙСА командной строки, выполните следующую команду и следуйте инструкциям, чтобы завершить процесс проверки подлинности.

    az login
    
  2. Обеспечьте использование последней версии интерфейса командной строки, выполнив команду обновления.

    az upgrade
    
  3. Установите последнюю версию расширения CLI для приложений контейнеров Azure.

    az extension add --name containerapp --upgrade
    
  4. Microsoft.App Зарегистрируйте пространства имен и Microsoft.OperationalInsights пространства имен, если вы еще не зарегистрировали их в подписке Azure.

    az provider register --namespace Microsoft.App
    az provider register --namespace Microsoft.OperationalInsights
    
  5. После завершения настройки Azure CLI вы можете определить переменные среды, которые используются в этой статье.

    RESOURCE_GROUP="jobs-quickstart"
    LOCATION="northcentralus"
    ENVIRONMENT="env-jobs-quickstart"
    JOB_NAME="my-job"
    

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

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

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

    az group create \
        --name "$RESOURCE_GROUP" \
        --location "$LOCATION"
    
  2. Создайте среду приложений контейнеров с помощью следующей команды.

    az containerapp env create \
        --name "$ENVIRONMENT" \
        --resource-group "$RESOURCE_GROUP" \
        --location "$LOCATION"
    

Создание и запуск задания вручную

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

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

    az containerapp job create \
        --name "$JOB_NAME" --resource-group "$RESOURCE_GROUP"  --environment "$ENVIRONMENT" \
        --trigger-type "Manual" \
        --replica-timeout 1800 \
        --image "mcr.microsoft.com/k8se/quickstart-jobs:latest" \
        --cpu "0.25" --memory "0.5Gi"
    

    Задания вручную не выполняются автоматически. Необходимо запустить выполнение задания.

  2. Запустите выполнение задания с помощью следующей команды.

    az containerapp job start \
        --name "$JOB_NAME" \
        --resource-group "$RESOURCE_GROUP"
    

    Команда возвращает сведения о выполнении задания, включая его имя.

Создание и запуск запланированного задания

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

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

az containerapp job create \
    --name "$JOB_NAME" --resource-group "$RESOURCE_GROUP"  --environment "$ENVIRONMENT" \
    --trigger-type "Schedule" \
    --replica-timeout 1800 \
    --image "mcr.microsoft.com/k8se/quickstart-jobs:latest" \
    --cpu "0.25" --memory "0.5Gi" \
    --cron-expression "*/1 * * * *"

Выполнение заданий запускается автоматически на основе расписания.

Задания контейнерных приложений используют выражения cron для определения расписаний. Он поддерживает стандартный формат выражения cron с пятью полями для минуты, часа, дня месяца, месяца и дня недели.

Вывод списка последних журналов выполнения заданий

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

az containerapp job execution list \
    --name "$JOB_NAME" \
    --resource-group "$RESOURCE_GROUP" \
    --output table \
    --query '[].{Status: properties.status, Name: name, StartTime: properties.startTime}'

Выполнение запланированных заданий отображается в списке при выполнении.

Status     Name            StartTime
---------  --------------  -------------------------
Succeeded  my-job-jvsgub6  2023-05-08T21:21:45+00:00

Запрос журналов выполнения задания

Выполнение задания выводит журналы выходных данных поставщику ведения журнала, настроенному для среды "Приложения контейнеров". По умолчанию журналы хранятся в Azure Log Analytics.

  1. Сохраните идентификатор рабочей области Log Analytics для среды "Приложения контейнеров" в переменную.

    LOG_ANALYTICS_WORKSPACE_ID=`az containerapp env show \
        --name "$ENVIRONMENT" \
        --resource-group "$RESOURCE_GROUP" \
        --query "properties.appLogsConfiguration.logAnalyticsConfiguration.customerId" \
        --output tsv`
    
  2. Сохраните имя последнего выполнения задания в переменную.

    JOB_EXECUTION_NAME=`az containerapp job execution list \
        --name "$JOB_NAME" \
        --resource-group "$RESOURCE_GROUP" \
        --query "[0].name" \
        --output tsv`
    
  3. Выполните запрос к Log Analytics для выполнения задания с помощью следующей команды.

    az monitor log-analytics query \
        --workspace "$LOG_ANALYTICS_WORKSPACE_ID" \
        --analytics-query "ContainerAppConsoleLogs_CL | where ContainerGroupName_s startswith '$JOB_EXECUTION_NAME' | order by _timestamp_d asc" \
        --query "[].Log_s"
    

    Примечание.

    ContainerAppConsoleLogs_CL Пока таблица не будет готова, команда не возвращает результаты или ошибку: BadArgumentError: The request had some invalid properties Подождите несколько минут и повторите команду.

    Ниже приведен пример журналов, напечатанных выполнением задания.

    [
        "2023/04/24 18:38:28 This is a sample application that demonstrates how to use Azure Container Apps jobs",
        "2023/04/24 18:38:28 Starting processing...",
        "2023/04/24 18:38:33 Finished processing. Shutting down!"
    ]
    

Очистка ресурсов

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

Внимание

Следующая команда удаляет указанную группу ресурсов и все ресурсы, содержащиеся в ней. Если в указанной группе ресурсов существуют другие ресурсы, кроме созданных для этого краткого руководства, они также будут удалены.

az group delete --name "$RESOURCE_GROUP"

Совет

Возникли проблемы? Сообщите о них в репозитории Azure Container Apps на GitHub.

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