Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
I processi di App Contenitore di Azure consentono di eseguire attività in contenitori che vengono eseguite per una durata limitata e quindi chiuse. È possibile usare i processi per eseguire attività come l'elaborazione dei dati, l'apprendimento automatico o qualsiasi scenario in cui è necessaria l'elaborazione su richiesta.
Le app e i processi del contenitore vengono eseguiti nello stesso ambiente, per consentire loro di condividere funzionalità come la rete e la registrazione.
Confrontare app e processi del contenitore
Esistono due tipi di risorse di calcolo in App contenitore di Azure: app e processi.
Le app sono servizi che vengono eseguiti continuamente. Se un contenitore in un'app si blocca, si riavvia automaticamente. Esempi di app includono API HTTP, App Web e servizi in background che elaborano continuamente gli input.
I processi sono attività che iniziano, vengono eseguiti per una durata limitata e poi si chiudono una volta completati. Ogni esecuzione di un processo svolge in genere una singola unità di lavoro. Le esecuzioni dei processi iniziano manualmente, in base a una pianificazione, o in risposta agli eventi. Esempi di processi includono processi batch che eseguono attività su richiesta e pianificate.
Scenari di esempio
La tabella seguente confronta gli scenari comuni per app e processi:
| Contenitore | Risorsa di calcolo | Note |
|---|---|---|
| Server HTTP che gestisce il contenuto Web e le richieste API | Applicazione | Configurare una regola di scalabilità HTTP. |
| Processo che genera report finanziari ogni notte | Processo | Usare il tipo di processo Pianificazione e configurare un'espressione cron. |
| Servizio in esecuzione continua che elabora i messaggi da una coda di bus di servizio di Azure | Applicazione | Configurare una regola di scalabilità personalizzata. |
| Processo che elabora un singolo messaggio o un piccolo batch di messaggi da una coda di Azure e poi si chiude | Processo | Usare il tipo di processo Evento e configurare una regola di scalabilità personalizzata per attivare le esecuzioni dei processi quando sono presenti messaggi nella coda. |
| Attività in background che viene attivata su richiesta e chiusa una volta completata | Processo | Usare il tipo di processo Manuale e avviare le esecuzioni manualmente o in modo programmato tramite un'API. |
| Strumento di esecuzione di GitHub Actions self-hosted o agente di Azure Pipelines | Processo | Usare il tipo di processo Evento e configurare una regola di scalabilità di GitHub Actions o Azure Pipelines. |
| App Funzioni di Azure | Applicazione | Distribuire Funzioni di Azure nelle App contenitore. |
| App guidata dagli eventi con SDK di Processi Web di Azure | Applicazione | Configurare una regola di scalabilità per ogni origine evento. |
Concetti
Un ambiente delle App contenitore funge da confine sicuro attorno a una o più app contenitore e processi. I processi implicano alcuni concetti chiave:
- Processo: un processo definisce la configurazione predefinita che viene usata per ogni esecuzione del processo. La configurazione include l'immagine del contenitore da usare, le risorse da allocare e il comando da eseguire.
- Esecuzione del processo: L'esecuzione di un processo è una singola esecuzione di un processo che viene avviata manualmente, in base a una pianificazione o in risposta a un evento.
- Replica del processo: un’esecuzione tipica del processo esegue una replica definita dalla configurazione del processo. Negli scenari avanzati, l'esecuzione di un processo può eseguire più repliche.
Autorizzazioni
Per avviare un processo dell'app contenitore, sono necessarie le autorizzazioni appropriate. Assicurarsi che all'account utente o all'entità servizio siano assegnati i ruoli seguenti:
- Collaboratore di App contenitore di Azure: consente di creare e gestire app e processi del contenitore.
- Lettore di Monitoraggio di Azure (facoltativo): consente di visualizzare i dati di monitoraggio per i processi.
- Ruolo personalizzato: per autorizzazioni più granulari, è possibile creare un ruolo personalizzato con le azioni seguenti:
- Microsoft.App/containerApps/jobs/start/action
- Microsoft.App/containerApps/jobs/read
- Microsoft.App/containerApps/jobs/executions/read
Per altre informazioni sull'assegnazione di ruoli e autorizzazioni, vedere Controllo degli accessi in base al ruolo di Azure.
Tipi di trigger del processo
Il tipo di trigger di un processo determina la modalità di avvio del processo. Sono disponibili i tipi di trigger seguenti:
- Manuale: i processi manuali vengono attivati su richiesta.
- Pianificazione: i processi pianificati vengono attivati in momenti specifici e possono essere eseguiti ripetutamente.
- Evento: gli eventi, ad esempio l'arrivo di un messaggio in una coda, attivano i processi guidati dagli eventi.
Processi manuali
I processi manuali vengono attivati su richiesta usando l'interfaccia della riga di comando di Azure, il portale di Azure o una richiesta all'API di Azure Resource Manager.
Esempi di processi manuali includono:
- Attività di elaborazione a consumo, ad esempio la migrazione dei dati da un sistema a un altro.
- Un sito di e-commerce in esecuzione come app contenitore avvia l’esecuzione di un processo per elaborare l'inventario quando viene effettuato un ordine.
Per creare un processo manuale, usare il tipo di processo Manual.
Per creare un processo manuale usando l'interfaccia della riga di comando di Azure, usare il comando az containerapp job create. L'esempio seguente crea un processo manuale denominato my-job in un gruppo di risorse denominato my-resource-group e in un ambiente di App contenitore denominato 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"
L'immagine mcr.microsoft.com/k8se/quickstart-jobs:latest è un'immagine del contenitore di esempio pubblica che esegue un processo della durata di alcuni secondi, invia un messaggio alla console e poi si chiude. Per autenticare e usare un'immagine del contenitore privato, vedere Contenitori.
Il comando precedente crea solo il processo. Per avviare un'esecuzione del processo, vedere Avviare un'esecuzione del processo su richiesta.
Processi pianificati
Per creare un processo pianificato, usare il tipo di processo Schedule.
I processi di App contenitore usano espressioni cron per definire le pianificazioni. Supporta il formato di espressione cron standard con cinque campi per minuto, ora, giorno del mese, mese e giorno della settimana. Di seguito sono riportati esempi di espressioni cron:
| Espressione | Descrizione |
|---|---|
*/5 * * * * |
Viene eseguito ogni 5 minuti. |
0 */2 * * * |
Viene eseguito ogni due ore. |
0 0 * * * |
Viene eseguito ogni giorno a mezzanotte. |
0 0 * * 0 |
Viene eseguito ogni domenica a mezzanotte. |
0 0 1 * * |
Viene eseguito il primo giorno di ogni mese a mezzanotte. |
Le espressioni Cron nei processi pianificati vengono valutate secondo l’ora UTC (Coordinated Universal Time).
Per creare un processo pianificato usando l'interfaccia della riga di comando di Azure, usare il comando az containerapp job create. L'esempio seguente crea un processo pianificato denominato my-job in un gruppo di risorse denominato my-resource-group e un ambiente di App contenitore denominato 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 * * * *"
L'immagine mcr.microsoft.com/k8se/quickstart-jobs:latest è un'immagine del contenitore di esempio pubblica che esegue un processo della durata di alcuni secondi, invia un messaggio alla console e poi si chiude. Per autenticare e usare un'immagine del contenitore privato, vedere Contenitori.
L'espressione cron */1 * * * * esegue il processo ogni minuto.
Processi guidati dagli eventi
Gli eventi generati dai scaler personalizzati supportati attivano processi guidati dagli eventi. Esempi di processi guidati dagli eventi includono:
- Processo eseguito quando viene aggiunto un nuovo messaggio a una coda, ad esempio il bus di servizio di Azure, Kafka o RabbitMQ.
- Strumento di esecuzione di GitHub Actions self-hosted o agente di Azure DevOps che viene eseguito quando un nuovo processo viene accodato in un flusso di lavoro o in una pipeline.
Le app contenitore e i processi guidati dagli eventi usano gli scaler KEDA. Entrambi valutano le regole di ridimensionamento in base a un intervallo di polling per misurare il volume degli eventi per un'origine evento, ma usano i risultati in modo diverso.
In un'app, ogni replica elabora continuamente gli eventi e una regola di ridimensionamento determina il numero di repliche da eseguire per soddisfare la domanda. Nei processi guidati dagli eventi, ogni esecuzione del processo elabora in genere un singolo evento e una regola di ridimensionamento determina il numero di esecuzioni del processo da eseguire.
Usare i processi quando ogni evento richiede una nuova istanza del contenitore con risorse dedicate o deve essere eseguito per molto tempo. I processi guidati dagli eventi sono concettualmente simili ai processi di ridimensionamento KEDA.
Per creare un processo guidato dagli eventi, usare il tipo di processo Event.
Per creare un processo guidato dagli eventi usando l'interfaccia della riga di comando di Azure, usare il comando az containerapp job create. L'esempio seguente crea un processo guidato dagli eventi denominato my-job in un gruppo di risorse denominato my-resource-group e in un ambiente di App contenitore denominato 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>"
Nell'esempio viene configurata una regola di scalabilità della coda di Archiviazione di Azure.
Per un'esercitazione completa, vedere Distribuire un processo guidato dagli eventi.
Avviare un'esecuzione del processo su richiesta
Per qualsiasi tipo di processo, è possibile avviare un'esecuzione del processo su richiesta.
Per avviare un'esecuzione del processo usando l'interfaccia della riga di comando di Azure, usare il comando az containerapp job start. L'esempio seguente avvia l'esecuzione di un processo denominato my-job in un gruppo di risorse denominato my-resource-group:
az containerapp job start --name "my-job" --resource-group "my-resource-group"
Quando si avvia un'esecuzione del processo, è possibile scegliere di eseguire l'override della configurazione del processo. Ad esempio, è possibile eseguire l'override di una variabile di ambiente o del comando di avvio per eseguire lo stesso processo con input diversi. La configurazione sottoposta a override viene usata solo per l'esecuzione corrente e non modifica la configurazione del processo.
Importante
Quando si esegue l'override della configurazione, l'intera configurazione del modello del processo viene sostituita con la nuova configurazione. Assicurarsi che la nuova configurazione includa tutte le impostazioni necessarie.
Per eseguire l'override della configurazione del processo durante l'avvio di un'esecuzione, usare il comando az containerapp job start e passare un file YAML contenente il modello da usare per l'esecuzione. Nell'esempio seguente viene avviata un'esecuzione di un processo denominato my-job in un gruppo di risorse denominato my-resource-group.
Recuperare la configurazione corrente del processo con il comando az containerapp job show e salvare il modello in un file denominato 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
L'opzione --query "properties.template" restituisce solo la configurazione del modello del processo.
Modificare il file my-job-template.yaml per eseguire l'override della configurazione del processo. Ad esempio, per eseguire l'override delle variabili di ambiente, modificare la sezione 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!"
Avviare il processo usando il modello:
az containerapp job start --name "my-job" --resource-group "my-resource-group" \
--yaml my-job-template.yaml
Ottenere la cronologia di esecuzione del processo
Ogni processo di App contenitore mantiene una cronologia delle esecuzioni di processi recenti.
Per ottenere gli stati delle esecuzioni di processi usando l'interfaccia della riga di comando di Azure, usare il comando az containerapp job execution list. Nell'esempio seguente viene restituito lo stato dell'esecuzione più recente di un processo denominato my-job in un gruppo di risorse denominato my-resource-group:
az containerapp job execution list --name "my-job" --resource-group "my-resource-group"
La cronologia delle esecuzione per i processi pianificati e guidati dagli eventi è limitata alle ultime 100 esecuzioni di processi riuscite e non riuscite.
Per elencare tutte le esecuzioni di un processo o ottenere un output dettagliato di un processo, eseguire una query sul provider di log configurato per l'ambiente di App contenitore.
Configurazione avanzata dei processi
I processi di App contenitore supportano opzioni di configurazione avanzate, ad esempio impostazioni del contenitore, tentativi di ripristino, timeout e parallelismo.
Impostazioni del contenitore
Le impostazioni del contenitore definiscono i contenitori da eseguire in ogni replica di un'esecuzione del processo. Includono variabili di ambiente, segreti e limiti delle risorse. Per altre informazioni, vedere Contenitori. L'esecuzione di più contenitori in un singolo processo è uno scenario avanzato. La maggior parte dei processi esegue un singolo contenitore.
Impostazioni del processo
La tabella seguente include le impostazioni del processo che è possibile configurare:
| Impostazione | Proprietà Gestione risorse di Azure | Parametro dell'interfaccia della riga di comando | Descrizione |
|---|---|---|---|
| Tipo di processo | triggerType |
--trigger-type |
Tipo di processo. (Manual, Schedule, o Event) |
| Timeout della replica | replicaTimeout |
--replica-timeout |
Tempo massimo di attesa in secondi per il completamento di una replica. |
| Intervallo di polling | pollingInterval |
--polling-interval |
Tempo di attesa in secondi tra un polling degli eventi e l'altro. Il valore predefinito è 30 secondi. |
| Limite dei tentativi di replica | replicaRetryLimit |
--replica-retry-limit |
Numero massimo di tentativi di ripetizione di una replica non riuscita. Per far fallire una replica senza riprovare, imposta il valore su 0. |
| Parallelismo | parallelism |
--parallelism |
Numero di repliche da eseguire per esecuzione. Per la maggior parte dei processi, impostare il valore su 1. |
| Numero di completamento della replica | replicaCompletionCount |
--replica-completion-count |
Numero di repliche da completare correttamente affinché l'esecuzione abbia esito positivo. La maggior parte è uguale o inferiore al parallelismo. Per la maggior parte dei processi, impostare il valore su 1. |
Esempio
Nell’esempio seguente viene creato un processo con opzioni di configurazione avanzate:
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"
Restrizioni per i processi
Le funzionalità seguenti non sono supportate:
- Dapr
- Ingresso e funzionalità correlate, ad esempio domini personalizzati e certificati SSL