Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az Azure Container Apps-feladatok lehetővé teszik a tárolóalapú feladatok futtatását, amelyek véges ideig futnak, majd leállnak. A munkák használatával olyan tevékenységeket hajthat végre, mint az adatfeldolgozás, a gépi tanulás, vagy bármely 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 befejeződnek. 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:
| Konténer | Számítási erőforrás | Jegyzetek |
|---|---|---|
| Webtartalmakat és API-kéréseket kiszolgáló HTTP-kiszolgáló | Alkalmazás | 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 | Alkalmazás | 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, majd leáll | Á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 indítható el, és amikor befejeződik, leáll. | Á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 | Alkalmazás | Az Azure Functions üzembe helyezése a Container Appsben. |
| Az Azure WebJobs SDK-t használó eseményvezérelt alkalmazás | Alkalmazás | 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. Az alábbiakban néhány alapfogalmat követünk:
- Foglalkozása: 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 a manuálisan, ütemezés szerint vagy eseményre válaszul aktivált feladatok egyetlen futtatása.
- 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.
Engedélyek
Tárolóalkalmazás-feladat elindításához rendelkeznie kell a megfelelő engedélyekkel. Győződjön meg arról, hogy a felhasználói fiókhoz vagy szolgáltatásnévhez a következő szerepkörök vannak hozzárendelve:
- Container Apps-közreműködő: Engedélyezi a tárolóalkalmazások és -feladatok létrehozását és kezelését.
- Monitorozási olvasó (nem kötelező): Lehetővé teszi a feladatok monitorozási adatainak megtekintését.
- Egyéni szerepkör: Részletesebb engedélyekért létrehozhat egy egyéni szerepkört a következő műveletekkel:
- microsoft.app/jobs/start/action
- microsoft.app/jobs/read
- microsoft.app/jobs/execution/read
A szerepkörök és engedélyek hozzárendelésével kapcsolatos további információkért tekintse meg az Azure szerepköralapú hozzáférés-vezérlését.
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 aktiválják.
Manuális feladatok
A manuális feladatok igény szerint aktiválódnak az Azure CLI-n, az Azure Portalon vagy az Azure Resource Manager API-ra irányuló kérésen keresztül.
Manuális feladatok például a következők:
- Egyszeri feldolgozási feladat, például adatok migrálása egyik rendszerből a másikba.
- Egy tárolóalkalmazásként futó e-kereskedelmi webhely feladatvégrehajtást indít el a leltár 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 \
--replica-retry-limit 0 \
--replica-completion-count 1 \
--parallelism 1 \
--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 leáll. A privát tárolólemezképek hitelesítésével és használatával kapcsolatos információkért lásd a Tárolók című témakört.
Az előző 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. A standard cron kifejezésformátumot öt mezővel támogatják: perc, óra, hónap, hónap és hét napja. Íme néhány példa a cron kifejezésekre:
| Kifejezés | 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 a my-job nevű erőforráscsoportban és a my-resource-group nevű Container Apps környezetben található.
az containerapp job create \
--name "my-job" --resource-group "my-resource-group" --environment "my-environment" \
--trigger-type "Schedule" \
--replica-timeout 1800 \
--replica-retry-limit 0 \
--parallelism 1 \
--replica-completion-count 1 \
--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 leáll. A privát tárolólemezképek hitelesítésével és használatával kapcsolatos információkért 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
A támogatott egyéni skálázók eseményvezérelt feladatokat aktiválnak . 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ények kielégítése érdekében. 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 létrehoz egy eseményvezérelt feladatot, amely egy my-job nevű erőforráscsoportban és egy my-resource-group nevű Container Apps-környezetben található meg:
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-joberőforráscsoportban elnevezett my-resource-group feladat végrehajtását indítja el:
az containerapp job start --name "my-job" --resource-group "my-resource-group"
Amikor elindít egy feladat végrehajtását, 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
Amikor felülbírál egy konfigurációt, 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 elindít egy my-job nevű feladatot a my-resource-group nevű erőforráscsoportban.
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 my-job-template.yaml fájlt a 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 munkamenet-végrehajtások állapotának lekéréséhez az Azure CLI az containerapp job execution list parancsát használja. Az alábbi példa egy nevesített erőforráscsoportban my-jobelnevezett my-resource-group 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. Az egy feladatban több tároló futtatása haladó forgatókönyv. A legtöbb munkafolyamat 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 | CLI-paraméter | Leírás |
|---|---|---|---|
| Feladattípus | triggerType |
--trigger-type |
A feladat típusa (Manualvagy ScheduleEvent). |
| Replika időtúllépése | replicaTimeout |
--replica-timeout |
A replika befejezésére várakozás 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álási határértéke | 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é megszakítani a replikát, állítsa az értéket 0. A replicaTimeout beállítás elsőbbséget élvez, ha az minden újrapróbálkozás előtt lejár. |
| 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 sikeréhez szükséges replikák száma. Legfeljebb legyen 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"
Feladatok hálózatkezelése és alkalmazások közötti kommunikáció
A feladat podjának indításakor az oldalkocsis tárolók (például az envoy proxy) biztosan készen állnak, mielőtt a fő feladattároló elkezdené a végrehajtást. Ez biztosítja, hogy a feladat által az indításkor indított alkalmazásközi hívások kapcsolati hibák nélkül sikeresek lesznek.
Megjegyzés:
Ha a feladat indításkor más tárolóalkalmazásokhoz is indít hívásokat, nem kell újrapróbálkozásos logikát hozzáadnia a kezdeti oldalkocsi-felkészültséghez. Ezt a platform automatikusan kezeli.
Feladatokra vonatkozó korlátozások
A következő funkciók nem támogatottak:
- Dapr
- Ingress és kapcsolódó funkciók, például egyéni tartományok és SSL-tanúsítványok