Feladatok az Azure Container Appsben

Az Azure Container Apps-feladatok lehetővé teszik olyan tárolóalapú feladatok futtatását, amelyek véges időtartamra és kilépésre hajthatók végre. Feladatokkal olyan feladatokat hajthat végre, mint az adatfeldolgozás, a gépi tanulás vagy bármely olyan forgatókönyv, ahol igény szerinti feldolgozásra van szükség.

A tárolóalkalmazások és -feladatok ugyanabban a környezetben futnak, így megoszthatják az olyan képességeket, mint a hálózatkezelés és a naplózás.

Tárolóalkalmazások és -feladatok összehasonlítása

Az Azure Container Appsben kétféle számítási erőforrás létezik: alkalmazások és feladatok.

Az alkalmazások folyamatosan futó szolgáltatások. Ha egy alkalmazás tárolója meghibásodik, az automatikusan újraindul. Ilyenek például a HTTP API-k, a webalkalmazások és a háttérszolgáltatások, amelyek folyamatosan dolgozzák fel a bemenetet.

A feladatok olyan tevékenységek, amelyek véges ideig futnak, és ha elkészültek, kilépnek. A feladatok mindegyik végrehajtása általában egyetlen munkaegységet hajt végre. A feladatvégrehajtások manuálisan, ütemezés szerint vagy eseményekre válaszul kezdődnek. A feladatok közé tartoznak például az igény szerint futó kötegelt folyamatok és az ütemezett tevékenységek.

Példaforgatókönyvek

Az alábbi táblázat az alkalmazások és feladatok gyakori forgatókönyveit hasonlítja össze:

Tároló Számítási erőforrás Jegyzetek
Webtartalmakat és API-kéréseket kiszolgáló HTTP-kiszolgáló App HTTP-méretezési szabály konfigurálása.
A pénzügyi jelentéseket éjjel-nappal létrehozó folyamat Állás Használja az Ütemezés feladattípust , és konfiguráljon egy cron kifejezést.
Folyamatosan futó szolgáltatás, amely egy Azure Service Bus-üzenetsorból származó üzeneteket dolgoz fel App Egyéni méretezési szabály konfigurálása.
Egy feladat, amely egyetlen üzenetet vagy egy kis üzenetköteget dolgoz fel egy Azure-üzenetsorból, és kilép Állás Használja az Eseményfeladat típusát, és konfiguráljon egy egyéni méretezési szabályt a feladatvégrehajtások aktiválásához, amikor üzenetek vannak az üzenetsorban.
Egy háttérfeladat, amely igény szerint aktiválódik, és befejeződött Állás Használja a Manuális feladattípust, és indítsa el a végrehajtásokat manuálisan vagy programozott módon egy API használatával.
Saját üzemeltetésű GitHub Actions-futó vagy Azure Pipelines-ügynök Állás Használja az eseményfeladat típusát, és konfiguráljon egy GitHub Actions - vagy Azure Pipelines-méretezési szabályt.
Azure Functions-alkalmazás App Az Azure Functions üzembe helyezése a Container Appsben.
Eseményvezérelt alkalmazás az Azure WebJobs SDK használatával App Konfiguráljon egy méretezési szabályt az egyes eseményforrásokhoz.

Fogalmak

A Container Apps-környezet egy vagy több tárolóalkalmazás és -feladat biztonságos határa. A feladatok néhány alapvető fogalmat foglalnak magukban:

  • Feladat: Egy feladat határozza meg az egyes feladatok végrehajtásához használt alapértelmezett konfigurációt. A konfiguráció tartalmazza a használni kívánt tárolórendszerképet, a lefoglalni kívánt erőforrásokat és a futtatandó parancsot.
  • Feladat végrehajtása: A feladatok végrehajtása egy feladat egyetlen futtatása, amely manuálisan, ütemezés szerint vagy egy eseményre válaszul aktiválódik.
  • Feladatreplika: Egy tipikus feladatvégrehajtás a feladat konfigurációja alapján meghatározott replikát futtat. Speciális helyzetekben a feladatok végrehajtása több replikát is futtathat.

Az Azure Container Apps-feladatok áttekintése.

Feladat-eseményindító-típusok

A feladat eseményindítótípusa határozza meg a feladat indításának módját. A következő triggertípusok érhetők el:

  • Manuális: A manuális feladatok igény szerint aktiválódnak.
  • Ütemezés: Az ütemezett feladatok adott időpontokban aktiválódnak, és ismétlődően futtathatók.
  • Esemény: Az eseményvezérelt feladatokat események, például üzenetsorba érkező üzenetek váltják ki.

Manuális feladatok

A manuális feladatok igény szerint aktiválódnak az Azure CLI, az Azure Portal vagy az Azure Resource Manager API-ra irányuló kérés használatával.

Manuális feladatok például a következők:

  • Egy alkalommal olyan feladatokat dolgoz fel, mint például az adatok áttelepítése az egyik rendszerből a másikba.
  • A tárolóalkalmazásként futó e-kereskedelmi webhely feladatvégrehajtást indít el a készlet feldolgozásához a rendelés leadásakor.

Manuális feladat létrehozásához használja a feladattípust Manual.

Ha manuális feladatot szeretne létrehozni az Azure CLI használatával, használja a az containerapp job create parancsot. Az alábbi példa létrehoz egy manuális feladatot, amely egy elnevezett my-jobmy-resource-group erőforráscsoportban és egy Container Apps-környezetben van elnevezve 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 rendszerkép egy nyilvános mintatároló lemezképe, amely egy néhány másodpercet várakozó feladatot futtat, üzenetet nyomtat ki a konzolra, majd kilép. Privát tárolórendszerkép hitelesítéséhez és használatához lásd a Tárolók című témakört.

A fenti parancs csak a feladatot hozza létre. Feladatvégrehajtás indításához lásd : Feladat végrehajtása igény szerint.

Ütemezett feladatok

Ütemezett feladat létrehozásához használja a feladattípust Schedule.

A Container Apps-feladatok cron-kifejezésekkel határozzák meg az ütemezéseket. Támogatja a standard cron kifejezésformátumot öt mezővel a perc, óra, a hónap, a hónap és a hét napja mezőben. A következő példák a cron-kifejezésekre:

Expression Leírás
*/5 * * * * 5 percenként fut.
0 */2 * * * Két óránként fut.
0 0 * * * Minden nap éjfélkor fut.
0 0 * * 0 Minden vasárnap éjfélkor fut.
0 0 1 * * Minden hónap első napján éjfélkor fut.

Az ütemezett feladatok cron-kifejezéseinek kiértékelése az egyezményes világidő (UTC) szerint történik.

Ha ütemezett feladatot szeretne létrehozni az Azure CLI használatával, használja a az containerapp job create parancsot. Az alábbi példa létrehoz egy ütemezett feladatot, amely my-job egy elnevezett my-resource-group erőforráscsoportban és egy Container Apps-környezetben van elnevezve 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 rendszerkép egy nyilvános mintatároló lemezképe, amely egy néhány másodpercet várakozó feladatot futtat, üzenetet nyomtat ki a konzolra, majd kilép. Privát tárolórendszerkép hitelesítéséhez és használatához lásd a Tárolók című témakört.

A cron kifejezés */1 * * * * percenként futtatja a feladatot.

Eseményvezérelt feladatok

Az eseményvezérelt feladatokat a támogatott egyéni skálázók eseményei aktiválják. Az eseményvezérelt feladatok például a következők:

  • Olyan feladat, amely akkor fut, amikor új üzenetet adnak hozzá egy üzenetsorhoz, például az Azure Service Bushoz, a Kafkához vagy a RabbitMQ-hoz.
  • Egy saját üzemeltetésű GitHub Actions-futó vagy Azure DevOps-ügynök , amely akkor fut, amikor egy új feladat várólistára kerül egy munkafolyamatban vagy folyamatban.

A tárolóalkalmazások és az eseményvezérelt feladatok KEDA-skálázókat használnak. Mindkettő kiértékeli a skálázási szabályokat egy lekérdezési időközön az eseményforrás eseménymennyiségének méréséhez, de az eredmények felhasználási módja eltérő.

Az alkalmazásokban minden replika folyamatosan dolgozza fel az eseményeket, és egy skálázási szabály határozza meg, hogy hány replika fusson az igényeknek megfelelően. Az eseményvezérelt feladatokban az egyes feladatok végrehajtása általában egyetlen eseményt dolgoz fel, és egy skálázási szabály határozza meg a futtatandó feladatvégrehajtások számát.

Akkor használjon feladatokat, ha minden eseményhez a tároló új példánya szükséges dedikált erőforrásokkal, vagy hosszú ideig kell futnia. Az eseményvezérelt feladatok fogalmilag hasonlóak a KEDA skálázási feladataihoz.

Eseményvezérelt feladat létrehozásához használja a feladattípust Event.

Ha eseményvezérelt feladatot szeretne létrehozni az Azure CLI használatával, használja a az containerapp job create parancsot. Az alábbi példa egy eseményvezérelt feladatot hoz létre, amely egy elnevezett my-job erőforráscsoportban és egy Container Apps-környezetben van elnevezve my-resource-groupmy-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>"

A példa egy Azure Storage-üzenetsor méretezési szabályát konfigurálja.

A teljes oktatóanyagért tekintse meg az eseményvezérelt feladat üzembe helyezését ismertető témakört.

Feladat végrehajtásának indítása igény szerint

Bármilyen feladattípus esetén igény szerint elindíthat feladatvégrehajtást.

Ha az Azure CLI használatával szeretne feladatvégrehajtást indítani, használja a az containerapp job start parancsot. Az alábbi példa egy, a következő nevű my-resource-grouperőforráscsoportban elnevezett my-job feladat végrehajtását indítja el:

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

Feladat végrehajtásakor dönthet úgy, hogy felülbírálja a feladat konfigurációját. Például felülbírálhat egy környezeti változót vagy az indítási parancsot, hogy ugyanazt a feladatot különböző bemenetekkel futtassa. A felülbírált konfiguráció csak az aktuális végrehajtáshoz használatos, és nem módosítja a feladat konfigurációját.

Fontos

A konfiguráció felülbírálásakor a feladat teljes sablonkonfigurációja lecserélődik az új konfigurációra. Győződjön meg arról, hogy az új konfiguráció tartalmazza az összes szükséges beállítást.

Ha felül szeretné bírálni a feladat konfigurációját a végrehajtás indításakor, használja a az containerapp job start parancsot, és adjon át egy YAML-fájlt, amely tartalmazza a sablont a végrehajtáshoz. Az alábbi példa egy, a nevesített erőforráscsoportban elnevezett my-job feladat végrehajtását indítja my-resource-groupel.

Kérje le a feladat aktuális konfigurációját a az containerapp job show paranccsal, és mentse a sablont egy következő nevű my-job-template.yamlfájlba:

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" beállítás csak a feladat sablonkonfigurációját adja vissza.

Szerkessze a fájlt a my-job-template.yaml feladat konfigurációjának felülbírálásához. A környezeti változók felülbírálásához például módosítsa a szakaszt env :

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!"

Indítsa el a feladatot a sablonnal:

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

Feladatvégrehajtási előzmények lekérése

Minden Container Apps-feladat megőrzi a legutóbbi feladatvégrehajtások előzményeit.

A feladatvégrehajtások állapotának lekéréséhez használja az containerapp job execution list az Azure CLI-t. Az alábbi példa egy nevesített erőforráscsoportban my-resource-groupelnevezett my-job feladat legutóbbi végrehajtásának állapotát adja vissza:

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

Az ütemezett és eseményalapú feladatok végrehajtási előzményei a legutóbbi 100 sikeres és sikertelen feladatvégrehajtásra korlátozódnak.

Egy feladat összes végrehajtásának listázásához vagy egy feladat részletes kimenetének lekéréséhez kérje le a Container Apps-környezethez konfigurált naplószolgáltatót.

Speciális feladatkonfiguráció

A Container Apps-feladatok olyan speciális konfigurációs beállításokat támogatnak, mint a tárolóbeállítások, az újrapróbálkozások, az időtúllépések és a párhuzamosság.

Tárolóbeállítások

A tárolóbeállítások határozzák meg a feladatvégrehajtás minden replikájában futtatni kívánt tárolókat. Ezek környezeti változókat, titkos kulcsokat és erőforráskorlátokat tartalmaznak. További információ: Tárolók. Egy feladatban több tároló futtatása speciális forgatókönyv. A legtöbb feladat egyetlen tárolót futtat.

Feladatbeállítások

Az alábbi táblázat a konfigurálható feladatbeállításokat tartalmazza:

Beállítás Azure Resource Manager-tulajdonság PARANCSSOR-paraméter Leírás
Feladattípus triggerType --trigger-type A feladat típusa. (Manual, Schedule, vagy Event)
Replika időtúllépése replicaTimeout --replica-timeout A replika befejezésének maximális időtartama másodpercben.
Lekérdezési időköz pollingInterval --polling-interval Az események lekérdezése közötti várakozási idő másodpercben. Az alapértelmezett érték 30 másodperc.
Replika újrapróbálkozási korlátja replicaRetryLimit --replica-retry-limit A sikertelen replikák újrapróbálkozásának maximális száma. Ha újrapróbálkozás nélkül szeretné végrehajtani a replikát, állítsa az értéket a következőre 0: .
Párhuzamosság parallelism --parallelism A futtatandó replikák száma végrehajtásonként. A legtöbb feladatnál állítsa az értéket a következőre 1: .
Replika befejezési száma replicaCompletionCount --replica-completion-count A végrehajtás sikeres végrehajtásához sikeresen befejezendő replikák száma. A legtöbb egyenlő vagy kisebb, mint a párhuzamosság. A legtöbb feladatnál állítsa az értéket a következőre 1: .

Példa

Az alábbi példa speciális konfigurációs beállításokkal rendelkező feladatot hoz létre:

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"

Feladatokra vonatkozó korlátozások

A következő funkciók nem támogatottak:

  • Dapr
  • Bejövő és kapcsolódó funkciók, például egyéni tartományok és SSL-tanúsítványok

Következő lépések