Partilhar via


Trabalhos em Aplicativos de Contêiner do Azure

Os trabalhos das Aplicações de Contentor do Azure permitem-lhe executar tarefas em contentores que são executadas durante uma duração e saída finitas. Você pode usar trabalhos para executar tarefas como processamento de dados, aprendizado de máquina ou qualquer cenário em que o processamento sob demanda seja necessário.

Os aplicativos e trabalhos de contêiner são executados no mesmo ambiente, permitindo que eles compartilhem recursos como rede e registro.

Comparar aplicativos e trabalhos de contêiner

Há dois tipos de recursos de computação nos Aplicativos de Contêiner do Azure: aplicativos e trabalhos.

As aplicações são serviços que são executados continuamente. Se um contêiner em um aplicativo falhar, ele será reiniciado automaticamente. Exemplos de aplicativos incluem APIs HTTP, aplicativos Web e serviços em segundo plano que processam continuamente a entrada.

Os trabalhos são tarefas que começam, são executadas por uma duração finita e saem quando terminadas. Cada execução de um trabalho normalmente executa uma única unidade de trabalho. As execuções de trabalho são iniciadas manualmente, em um cronograma ou em resposta a eventos. Exemplos de trabalhos incluem processos em lote que são executados sob demanda e tarefas agendadas.

Cenários de exemplo

A tabela a seguir compara cenários comuns para aplicativos e trabalhos:

Contentor Recurso de computação Notas
Um servidor HTTP que serve conteúdo da Web e solicitações de API Aplicação Configure uma regra de escala HTTP.
Um processo que gera relatórios financeiros todas as noites Tarefa Use o tipo de trabalho Schedule e configure uma expressão cron.
Um serviço em execução contínua que processa mensagens de uma fila do Barramento de Serviço do Azure Aplicação Configure uma regra de escala personalizada.
Um trabalho que processa uma única mensagem ou um pequeno lote de mensagens de uma fila do Azure e sai Tarefa Use o tipo de trabalho Evento e configure uma regra de escala personalizada para disparar execuções de trabalho quando houver mensagens na fila.
Uma tarefa em segundo plano que é acionada sob demanda e é encerrada quando concluída Tarefa Use o tipo de trabalho Manual e inicie as execuções manualmente ou programaticamente usando uma API.
Um executor de Ações do GitHub auto-hospedado ou um agente do Azure Pipelines Tarefa Use o tipo de trabalho Evento e configure uma regra de escala de Ações do GitHub ou Pipelines do Azure.
Um aplicativo do Azure Functions Aplicação Implante o Azure Functions em aplicativos de contêiner.
Um aplicativo controlado por eventos usando o SDK do Azure WebJobs Aplicação Configure uma regra de escala para cada fonte de evento.

Conceitos

Um ambiente de Aplicativos de Contêiner é um limite seguro em torno de um ou mais aplicativos e trabalhos de contêiner. Os empregos envolvem alguns conceitos-chave:

  • Trabalho: um trabalho define a configuração padrão que é usada para cada execução de trabalho. A configuração inclui a imagem de contêiner a ser usada, os recursos a serem alocados e o comando a ser executado.
  • Execução de trabalho: uma execução de trabalho é uma única execução de um trabalho que é acionada manualmente, em uma agenda ou em resposta a um evento.
  • Réplica de trabalho: uma execução de trabalho típica executa uma réplica definida pela configuração do trabalho. Em cenários avançados, a execução de um trabalho pode executar várias réplicas.

Visão geral dos trabalhos do Azure Container Apps.

Permissões

Para iniciar um trabalho de aplicativo de contêiner, as permissões apropriadas são necessárias. Certifique-se de que sua conta de usuário ou entidade de serviço tenha as seguintes funções atribuídas:

  • Colaborador de Aplicativos de Contêiner do Azure: Permite permissões para criar e gerenciar aplicativos e trabalhos de contêiner.
  • Azure Monitor Reader (opcional): Permite exibir dados de monitoramento para trabalhos.
  • Função personalizada: para permissões mais granulares, você pode criar uma função personalizada com as seguintes ações:
  • Microsoft.App/containerApps/jobs/start/action
  • Microsoft.App/containerApps/jobs/read
  • Microsoft.App/containerApps/jobs/executions/read

Para obter mais informações sobre como atribuir funções e permissões, consulte Controle de acesso baseado em função do Azure.

Tipos de gatilho de trabalho

O tipo de gatilho de um trabalho determina como ele é iniciado. Os seguintes tipos de gatilho estão disponíveis:

  • Manual: Os trabalhos manuais são acionados sob demanda.
  • Agenda: Os trabalhos agendados são acionados em horários específicos e podem ser executados repetidamente.
  • Evento: eventos, como uma mensagem que chega em uma fila, acionam trabalhos controlados por eventos.

Trabalhos manuais

Os trabalhos manuais são acionados sob demanda usando a CLI do Azure, o portal do Azure ou uma solicitação para a API do Azure Resource Manager.

Exemplos de trabalhos manuais incluem:

  • Tarefas de processamento únicas, como a migração de dados de um sistema para outro.
  • Um site de comércio eletrônico em execução como aplicativo de contêiner inicia uma execução de trabalho para processar o inventário quando um pedido é feito.

Para criar um trabalho manual, use o tipo Manualde trabalho .

Para criar um trabalho manual usando a CLI do Azure, use o az containerapp job create comando. O exemplo a seguir cria um trabalho manual nomeado my-job em um grupo de recursos chamado my-resource-group e um ambiente Container Apps chamado my-environment:

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

A mcr.microsoft.com/k8se/quickstart-jobs:latest imagem é uma imagem de contêiner de amostra pública que executa um trabalho que aguarda alguns segundos, imprime uma mensagem no console e sai. Para autenticar e usar uma imagem de contêiner particular, consulte Contêineres.

O comando acima apenas cria o trabalho. Para iniciar uma execução de trabalho, consulte Iniciar uma execução de trabalho sob demanda.

Tarefas agendadas

Para criar um trabalho agendado, use o tipo Schedulede trabalho .

Os trabalhos de aplicativos de contêiner usam expressões cron para definir agendas. Ele suporta o formato de expressão cron padrão com cinco campos para minuto, hora, dia do mês, mês e dia da semana. Seguem-se exemplos de expressões cron:

Expression Description
*/5 * * * * Funciona a cada 5 minutos.
0 */2 * * * Funciona a cada duas horas.
0 0 * * * Funciona todos os dias à meia-noite.
0 0 * * 0 Funciona todos os domingos à meia-noite.
0 0 1 * * Funciona no primeiro dia de cada mês, à meia-noite.

As expressões Cron em trabalhos agendados são avaliadas em Tempo Universal Coordenado (UTC).

Para criar um trabalho agendado usando a CLI do Azure, use o az containerapp job create comando. O exemplo a seguir cria um trabalho agendado nomeado my-job em um grupo de recursos chamado my-resource-group e um ambiente Container Apps chamado my-environment:

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

A mcr.microsoft.com/k8se/quickstart-jobs:latest imagem é uma imagem de contêiner de amostra pública que executa um trabalho que aguarda alguns segundos, imprime uma mensagem no console e sai. Para autenticar e usar uma imagem de contêiner particular, consulte Contêineres.

A expressão */1 * * * * cron executa o trabalho a cada minuto.

Trabalhos orientados para eventos

Os trabalhos orientados a eventos são acionados por eventos de escaladores personalizados suportados. Exemplos de trabalhos orientados para eventos incluem:

  • Um trabalho que é executado quando uma nova mensagem é adicionada a uma fila, como o Azure Service Bus, Kafka ou RabbitMQ.
  • Um executor de Ações do GitHub auto-hospedado ou um agente de DevOps do Azure que é executado quando um novo trabalho é enfileirado em um fluxo de trabalho ou pipeline.

Aplicativos de contêiner e trabalhos orientados a eventos usam escaladores KEDA . Ambos avaliam regras de dimensionamento em um intervalo de sondagem para medir o volume de eventos de uma fonte de eventos, mas a maneira como usam os resultados é diferente.

Em um aplicativo, cada réplica processa eventos continuamente e uma regra de dimensionamento determina o número de réplicas a serem executadas para atender à demanda. Em trabalhos controlados por eventos, cada execução de trabalho normalmente processa um único evento, e uma regra de dimensionamento determina o número de execuções de trabalho a serem executadas.

Use trabalhos quando cada evento exigir uma nova instância do contêiner com recursos dedicados ou precisar ser executado por um longo tempo. Os trabalhos orientados a eventos são conceitualmente semelhantes aos trabalhos de dimensionamento KEDA.

Para criar um trabalho controlado por eventos, use o tipo Eventde trabalho .

Para criar um trabalho controlado por eventos usando a CLI do Azure, use o az containerapp job create comando. O exemplo a seguir cria um trabalho controlado por eventos nomeado my-job em um grupo de recursos chamado my-resource-group e um ambiente Container Apps chamado my-environment:

az containerapp job create \
    --name "my-job" --resource-group "my-resource-group"  --environment "my-environment" \
    --trigger-type "Event" \
    --replica-timeout 1800 \
    --image "docker.io/myuser/my-event-driven-job:latest" \
    --cpu "0.25" --memory "0.5Gi" \
    --min-executions "0" \
    --max-executions "10" \
    --scale-rule-name "queue" \
    --scale-rule-type "azure-queue" \
    --scale-rule-metadata "accountName=mystorage" "queueName=myqueue" "queueLength=1" \
    --scale-rule-auth "connection=connection-string-secret" \
    --secrets "connection-string-secret=<QUEUE_CONNECTION_STRING>"

O exemplo configura uma regra de escala de fila do Armazenamento do Azure.

Para obter um tutorial completo, consulte Implantar um trabalho controlado por eventos.

Iniciar uma execução de trabalho sob demanda

Para qualquer tipo de trabalho, você pode iniciar uma execução de trabalho sob demanda.

Para iniciar uma execução de trabalho usando a CLI do Azure, use o az containerapp job start comando. O exemplo a seguir inicia uma execução de um trabalho nomeado my-job em um grupo de recursos chamado my-resource-group:

az containerapp job start --name "my-job" --resource-group "my-resource-group"

Ao iniciar a execução de um trabalho, você pode optar por substituir a configuração do trabalho. Por exemplo, você pode substituir uma variável de ambiente ou o comando de inicialização para executar o mesmo trabalho com entradas diferentes. A configuração substituída é usada apenas para a execução atual e não altera a configuração do trabalho.

Importante

Ao substituir a configuração, toda a configuração do modelo do trabalho é substituída pela nova configuração. Certifique-se de que a nova configuração inclui todas as configurações necessárias.

Para substituir a configuração do trabalho ao iniciar uma execução, use o az containerapp job start comando e passe um arquivo YAML contendo o modelo a ser usado para a execução. O exemplo a seguir inicia uma execução de um trabalho nomeado my-job em um grupo de recursos chamado my-resource-group.

Recupere a configuração atual do trabalho com o az containerapp job show comando e salve o modelo em um arquivo chamado my-job-template.yaml:

az containerapp job show --name "my-job" --resource-group "my-resource-group" --query "properties.template" --output yaml > my-job-template.yaml

A --query "properties.template" opção retorna apenas a configuração do modelo do trabalho.

Edite o my-job-template.yaml arquivo para substituir a configuração do trabalho. Por exemplo, para substituir as variáveis de ambiente, modifique a env seção:

containers:
- name: print-hello
  image: ubuntu
  resources:
    cpu: 1
    memory: 2Gi
  env:
  - name: MY_NAME
    value: Azure Container Apps jobs
  args:
  - /bin/bash
  - -c
  - echo "Hello, $MY_NAME!"

Inicie o trabalho usando o modelo:

az containerapp job start --name "my-job" --resource-group "my-resource-group" \
    --yaml my-job-template.yaml

Obter histórico de execução de trabalhos

Cada trabalho de Aplicativos de Contêiner mantém um histórico de execuções de trabalho recentes.

Para obter os status das execuções de trabalho usando a CLI do Azure, use o az containerapp job execution list comando. O exemplo a seguir retorna o status da execução mais recente de um trabalho nomeado my-job em um grupo de recursos chamado my-resource-group:

az containerapp job execution list --name "my-job" --resource-group "my-resource-group"

O histórico de execução de trabalhos agendados e baseados em eventos é limitado às 100 execuções de trabalho bem-sucedidas e com falha mais recentes.

Para listar todas as execuções de um trabalho ou obter uma saída detalhada de um trabalho, consulte o provedor de logs configurado para seu ambiente de Aplicativos de Contêiner.

Configuração avançada de tarefas

Os trabalhos de Aplicativos de Contêiner oferecem suporte a opções de configuração avançadas, como configurações de contêiner, tentativas, tempos limite e paralelismo.

Definições de contentor

As configurações de contêiner definem os contêineres a serem executados em cada réplica de uma execução de trabalho. Eles incluem variáveis de ambiente, segredos e limites de recursos. Para obter mais informações, consulte Contêineres. A execução de vários contêineres em um único trabalho é um cenário avançado. A maioria dos trabalhos executa um único contêiner.

Definições da tarefa

A tabela a seguir inclui as configurações de trabalho que você pode definir:

Definição Propriedade do Azure Resource Manager Parâmetro CLI Description
Tipo de trabalho triggerType --trigger-type O tipo de trabalho. (Manual, Schedule, ou Event)
Tempo limite da réplica replicaTimeout --replica-timeout O tempo máximo, em segundos, para aguardar a conclusão de uma réplica.
Intervalo de consulta pollingInterval --polling-interval O tempo em segundos para esperar entre as sondagens para os eventos. O padrão é 30 segundos.
Limite de tentativas de réplica replicaRetryLimit --replica-retry-limit O número máximo de vezes para tentar novamente uma réplica com falha. Para falhar uma réplica sem tentar novamente, defina o valor como 0.
Paralelismo parallelism --parallelism O número de réplicas a serem executadas por execução. Para a maioria dos trabalhos, defina o valor como 1.
Contagem de conclusão de réplicas replicaCompletionCount --replica-completion-count O número de réplicas a serem concluídas com êxito para que a execução seja bem-sucedida. A maioria é igual ou menor que o paralelismo. Para a maioria dos trabalhos, defina o valor como 1.

Exemplo

O exemplo a seguir cria um trabalho com opções de configuração avançadas:

az containerapp job create \
    --name "my-job" --resource-group "my-resource-group"  --environment "my-environment" \
    --trigger-type "Schedule" \
    --replica-timeout 1800 --replica-retry-limit 3 --replica-completion-count 5 --parallelism 5 \
    --image "myregistry.azurecr.io/quickstart-jobs:latest" \
    --cpu "0.25" --memory "0.5Gi" \
    --command "/startup.sh" \
    --env-vars "MY_ENV_VAR=my-value" \
    --cron-expression "0 0 * * *"  \
    --registry-server "myregistry.azurecr.io" \
    --registry-username "myregistry" \
    --registry-password "myregistrypassword"

Restrições de emprego

As seguintes caraterísticas não são suportadas:

  • Dapr
  • Ingresso e recursos relacionados, como domínios personalizados e certificados SSL

Próximos passos