Úlohy v Azure Container Apps
Úlohy Azure Container Apps umožňují spouštět kontejnerizované úlohy, které se spouštějí po omezenou dobu trvání a ukončení. Úlohy můžete použít k provádění úloh, jako je zpracování dat, strojové učení nebo jakýkoli scénář, ve kterém je vyžadováno zpracování na vyžádání.
Kontejnerové aplikace a úlohy běží ve stejném prostředí a umožňují jim sdílet možnosti, jako jsou sítě a protokolování.
Porovnání aplikací a úloh kontejnerů
V Azure Container Apps existují dva typy výpočetních prostředků: aplikace a úlohy.
Aplikace jsou služby, které běží nepřetržitě. Pokud se kontejner v aplikaci nezdaří, automaticky se restartuje. Mezi příklady aplikací patří rozhraní HTTP API, webové aplikace a služby na pozadí, které nepřetržitě zpracovávají vstupy.
Úlohy jsou úkoly, které se spustí, poběží po omezenou dobu trvání a po dokončení ukončí. Každé spuštění úlohy obvykle provádí jednu jednotku práce. Spouštění úloh se spouští ručně, podle plánu nebo v reakci na události. Mezi příklady úloh patří dávkové procesy, které běží na vyžádání a naplánované úlohy.
Ukázkové scénáře
Následující tabulka porovnává běžné scénáře pro aplikace a úlohy:
Kontejner | Výpočetní prostředek | Notes |
---|---|---|
Server HTTP, který obsluhuje webový obsah a požadavky rozhraní API | Aplikace | Nakonfigurujte pravidlo škálování HTTP. |
Proces, který generuje finanční sestavy každou noc | Úloha | Použijte typ úlohy Schedule a nakonfigurujte výraz cron. |
Nepřetržitě spuštěná služba, která zpracovává zprávy z fronty služby Azure Service Bus | Aplikace | Nakonfigurujte vlastní pravidlo škálování. |
Úloha, která zpracovává jednu zprávu nebo malou dávku zpráv z fronty Azure a ukončí se | Úloha | Použijte typ úlohy událostí a nakonfigurujte vlastní pravidlo škálování pro aktivaci provádění úloh, pokud jsou ve frontě zprávy. |
Úloha na pozadí, která se aktivuje na vyžádání a po dokončení se ukončí | Úloha | Použijte ruční typ úlohy a spusťte spouštění ručně nebo programově pomocí rozhraní API. |
Spouštěč GitHub Actions v místním prostředí nebo agent Azure Pipelines | Úloha | Použijte typ úlohy události a nakonfigurujte pravidlo škálování GitHub Actions nebo Azure Pipelines. |
Aplikace Azure Functions | Aplikace | Nasaďte Azure Functions do kontejnerových aplikací. |
Aplikace řízená událostmi pomocí sady Azure WebJobs SDK | Aplikace | Nakonfigurujte pravidlo škálování pro každý zdroj událostí. |
Koncepty
Prostředí Container Apps je zabezpečená hranice kolem jedné nebo více kontejnerových aplikací a úloh. Úlohy zahrnují několik klíčových konceptů:
- Úloha: Úloha definuje výchozí konfiguraci, která se používá pro každé spuštění úlohy. Konfigurace zahrnuje image kontejneru, která se má použít, prostředky k přidělení a příkaz ke spuštění.
- Provádění úlohy: Spuštění úlohy je jedno spuštění úlohy, která se aktivuje ručně, podle plánu nebo v reakci na událost.
- Replika úlohy: Typické spuštění úlohy spouští jednu repliku definovanou konfigurací úlohy. V pokročilých scénářích může spuštění úlohy spustit více replik.
Oprávnění
Ke spuštění úlohy aplikace kontejneru se vyžadují příslušná oprávnění. Ujistěte se, že má váš uživatelský účet nebo instanční objekt přiřazené následující role:
- Přispěvatel Azure Container Apps: Umožňuje oprávnění vytvářet a spravovat aplikace a úlohy kontejnerů.
- Čtenář služby Azure Monitor (volitelné): Umožňuje zobrazení dat monitorování pro úlohy.
- Vlastní role: Podrobnější oprávnění můžete vytvořit pomocí následujících akcí:
- Microsoft.App/containerApps/jobs/start/action
- Microsoft.App/containerApps/jobs/read
- Microsoft.App/containerApps/jobs/executions/read
Další informace o přiřazování rolí a oprávnění najdete v tématu Řízení přístupu na základě role v Azure.
Typy triggerů úloh
Typ triggeru úlohy určuje způsob spuštění úlohy. K dispozici jsou následující typy triggerů:
- Ruční: Ruční úlohy se aktivují na vyžádání.
- Plán: Naplánované úlohy se aktivují v určitých časech a můžou se spouštět opakovaně.
- Událost: Události, jako je například zpráva přicházející do fronty, aktivují úlohy řízené událostmi.
Ruční úlohy
Ruční úlohy se aktivují na vyžádání pomocí Azure CLI, webu Azure Portal nebo požadavku na rozhraní API Azure Resource Manageru.
Mezi příklady ručních úloh patří:
- Jednorázové zpracování úloh, jako je migrace dat z jednoho systému do jiného.
- Web elektronického obchodování spuštěný jako aplikace kontejneru spustí spuštění úlohy pro zpracování inventáře při umístění objednávky.
Chcete-li vytvořit ruční úlohu, použijte typ Manual
úlohy .
Pokud chcete vytvořit ruční úlohu pomocí Azure CLI, použijte az containerapp job create
příkaz. Následující příklad vytvoří ruční úlohu pojmenovanou my-job
ve skupině prostředků s názvem my-resource-group
a prostředí Container Apps s názvem 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"
Image mcr.microsoft.com/k8se/quickstart-jobs:latest
je veřejná ukázková image kontejneru, která spustí úlohu, která počká několik sekund, vytiskne zprávu do konzoly a pak se ukončí. Pokud chcete ověřit a použít privátní image kontejneru, přečtěte si téma Kontejnery.
Výše uvedený příkaz pouze vytvoří úlohu. Pokud chcete spustit provádění úlohy, přečtěte si téma Zahájení provádění úlohy na vyžádání.
Naplánované úlohy
Chcete-li vytvořit naplánovanou úlohu, použijte typ Schedule
úlohy .
Úlohy Container Apps používají k definování plánů výrazy cron. Podporuje standardní formát výrazu cron s pěti poli pro minutu, hodinu, den v měsíci, měsíci a den v týdnu. Tady jsou příklady výrazů cron:
Expression | Popis |
---|---|
*/5 * * * * |
Spustí se každých 5 minut. |
0 */2 * * * |
Spustí se každých dvě hodiny. |
0 0 * * * |
Spustí se každý den o půlnoci. |
0 0 * * 0 |
Spustí se každou neděli o půlnoci. |
0 0 1 * * |
Spustí se první den každého měsíce o půlnoci. |
Výrazy Cron v naplánovaných úlohách se vyhodnocují ve standardu UTC (Coordinated Universal Time).
Pokud chcete vytvořit naplánovanou úlohu pomocí Azure CLI, použijte tento az containerapp job create
příkaz. Následující příklad vytvoří naplánovanou úlohu pojmenovanou my-job
ve skupině prostředků s názvem my-resource-group
a prostředí Container Apps s názvem 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 * * * *"
Image mcr.microsoft.com/k8se/quickstart-jobs:latest
je veřejná ukázková image kontejneru, která spustí úlohu, která počká několik sekund, vytiskne zprávu do konzoly a pak se ukončí. Pokud chcete ověřit a použít privátní image kontejneru, přečtěte si téma Kontejnery.
Výraz cron */1 * * * *
spustí úlohu každou minutu.
Úlohy řízené událostmi
Úlohy řízené událostmi se aktivují událostmi z podporovaných vlastních škálovačů. Mezi příklady úloh řízených událostmi patří:
- Úloha, která se spustí při přidání nové zprávy do fronty, jako je Azure Service Bus, Kafka nebo RabbitMQ.
- Spouštěč GitHub Actions v místním prostředí nebo agent Azure DevOps, který se spustí, když se nová úloha zařadí do fronty v pracovním postupu nebo kanálu.
Kontejnerové aplikace a úlohy řízené událostmi využívají škálovací nástroje KEDA . Obě vyhodnocují pravidla škálování v intervalu dotazování pro měření objemu událostí pro zdroj událostí, ale způsob, jakým používají výsledky, se liší.
Každá replika v aplikaci nepřetržitě zpracovává události a pravidlo škálování určuje počet replik, které se mají spustit, aby splňovaly poptávku. V úlohách řízených událostmi každé spuštění úlohy obvykle zpracovává jednu událost a pravidlo škálování určuje počet spuštění úloh.
Úlohy použijte, když každá událost vyžaduje novou instanci kontejneru s vyhrazenými prostředky nebo musí běžet dlouhou dobu. Úlohy řízené událostmi jsou koncepčně podobné úlohům škálování KEDA.
Chcete-li vytvořit úlohu řízenou událostmi, použijte typ Event
úlohy .
Pokud chcete vytvořit úlohu řízenou událostmi pomocí Azure CLI, použijte az containerapp job create
příkaz. Následující příklad vytvoří úlohu řízenou událostmi pojmenovanou my-job
ve skupině prostředků s názvem my-resource-group
a prostředí Container Apps s názvem 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>"
Příklad konfiguruje pravidlo škálování fronty Azure Storage.
Úplný kurz najdete v tématu Nasazení úlohy řízené událostmi.
Spuštění úlohy na vyžádání
U libovolného typu úlohy můžete spustit provádění úlohy na vyžádání.
Pokud chcete spustit úlohu pomocí Azure CLI, použijte az containerapp job start
příkaz. Následující příklad spustí spuštění úlohy pojmenované my-job
ve skupině prostředků s názvem my-resource-group
:
az containerapp job start --name "my-job" --resource-group "my-resource-group"
Při spuštění úlohy můžete přepsat konfiguraci úlohy. Můžete například přepsat proměnnou prostředí nebo spouštěcí příkaz pro spuštění stejné úlohy s různými vstupy. Přepsáná konfigurace se používá jenom pro aktuální spuštění a nemění konfiguraci úlohy.
Důležité
Při přepsání konfigurace se celá konfigurace šablony úlohy nahradí novou konfigurací. Ujistěte se, že nová konfigurace zahrnuje všechna požadovaná nastavení.
Pokud chcete při spuštění spuštění přepsat konfiguraci úlohy, použijte az containerapp job start
příkaz a předejte soubor YAML obsahující šablonu, která se má použít ke spuštění. Následující příklad spustí spuštění úlohy pojmenované my-job
ve skupině prostředků s názvem my-resource-group
.
Načtěte aktuální konfiguraci úlohy pomocí az containerapp job show
příkazu a uložte šablonu do souboru s názvem 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
Tato --query "properties.template"
možnost vrátí pouze konfiguraci šablony úlohy.
my-job-template.yaml
Upravte soubor a přepište konfiguraci úlohy. Pokud chcete například přepsat proměnné prostředí, upravte env
oddíl:
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!"
Spusťte úlohu pomocí šablony:
az containerapp job start --name "my-job" --resource-group "my-resource-group" \
--yaml my-job-template.yaml
Získání historie provádění úloh
Každá úloha Container Apps udržuje historii posledních spuštění úloh.
Pokud chcete získat stavy spuštění úloh pomocí Azure CLI, použijte az containerapp job execution list
příkaz. Následující příklad vrátí stav posledního spuštění úlohy pojmenované my-job
ve skupině prostředků s názvem my-resource-group
:
az containerapp job execution list --name "my-job" --resource-group "my-resource-group"
Historie provádění plánovaných úloh a úloh založených na událostech je omezená na posledních 100 úspěšných a neúspěšných spuštění úloh.
Pokud chcete zobrazit seznam všech spuštění úlohy nebo získat podrobný výstup z úlohy, zadejte dotaz na zprostředkovatele protokolů nakonfigurovaného pro vaše prostředí Container Apps.
Pokročilá konfigurace úlohy
Úlohy Container Apps podporují pokročilé možnosti konfigurace, jako jsou nastavení kontejneru, opakování, vypršení časových limitů a paralelismus.
Nastavení kontejneru
Nastavení kontejneru definují kontejnery, které se mají spouštět v každé replice provádění úlohy. Zahrnují proměnné prostředí, tajné kódy a limity prostředků. Další informace najdete v tématu Kontejnery. Spouštění více kontejnerů v jedné úloze je pokročilý scénář. Většina úloh spouští jeden kontejner.
Nastavení úlohy
Následující tabulka obsahuje nastavení úlohy, která můžete nakonfigurovat:
Nastavení | Vlastnost Azure Resource Manageru | Parametr rozhraní příkazového řádku | Popis |
---|---|---|---|
Typ práce | triggerType |
--trigger-type |
Typ úlohy. (Manual , Schedule nebo Event ) |
Časový limit repliky | replicaTimeout |
--replica-timeout |
Maximální doba v sekundách čekání na dokončení repliky. |
Interval dotazování | pollingInterval |
--polling-interval |
Doba v sekundách čekání mezi dotazováním událostí. Výchozí hodnota je 30 sekund. |
Limit opakování repliky | replicaRetryLimit |
--replica-retry-limit |
Maximální počet opakování neúspěšné repliky. Pokud chcete repliku selhat bez opakování, nastavte hodnotu na 0 hodnotu . |
Paralelismus | parallelism |
--parallelism |
Počet replik, které se mají spustit na spuštění. U většiny úloh nastavte hodnotu na 1 hodnotu . |
Počet dokončení repliky | replicaCompletionCount |
--replica-completion-count |
Počet replik, které se úspěšně dokončí, aby bylo spuštění úspěšné. Většina je rovna nebo menší než paralelismus. U většiny úloh nastavte hodnotu na 1 hodnotu . |
Příklad
Následující příklad vytvoří úlohu s pokročilými možnostmi konfigurace:
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"
Omezení úloh
Následující funkce nejsou podporovány:
- Dapr
- Příchozí přenos dat a související funkce, jako jsou vlastní domény a certifikáty SSL