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.
Engedélyek
Tárolóalkalmazás-feladat elindításához a megfelelő engedélyekre van szükség. 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:
- Azure Container Apps-közreműködő: Engedélyezi a tárolóalkalmazások és -feladatok létrehozására és kezelésére vonatkozó engedélyeket.
- Azure Monitor Reader (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/containerApps/jobs/start/action
- Microsoft.App/containerApps/jobs/read
- Microsoft.App/containerApps/jobs/executions/read
A szerepkörök és engedélyek hozzárendeléséről további információt az Azure Szerepköralapú hozzáférés-vezérlés című témakörben talál.
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: Események, például üzenetsorba érkező üzenet, eseményvezérelt feladatok aktiválása.
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-job
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 "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
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é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-group
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>"
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-group
erő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-group
el.
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.yaml
fá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-group
elnevezett 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