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.
Funzioni di Azure offre supporto integrato per lo sviluppo, la distribuzione e la gestione di applicazioni di funzione containerizzate su Azure Container Apps. Usare App Azure Container per ospitare i contenitori di app per le funzioni quando è necessario eseguire le funzioni guidate dagli eventi in Azure nello stesso ambiente di altri microservizi, API, siti Web, flussi di lavoro o qualsiasi programma ospitato in contenitori. L'hosting di Container Apps consente di eseguire le tue funzioni in un ambiente completamente gestito basato su Kubernetes, con supporto integrato per il monitoraggio open-source, mTLS, Dapr e il ridimensionamento automatico basato su eventi di Kubernetes (KEDA).
È possibile scrivere il codice della funzione in qualsiasi stack di linguaggio supportato da Funzioni. È possibile usare gli stessi trigger e associazioni di Funzioni con il ridimensionamento basato su eventi. È anche possibile usare gli strumenti client delle Funzioni esistenti e il portale di Azure per creare container, distribuire container dell'applicazione di funzione nelle Container Apps, e configurare la distribuzione continua.
L'integrazione di App contenitore significa anche che le configurazioni di rete e osservabilità, definite a livello di ambiente dell'app contenitore, si applicano all'app per le funzioni come fanno a tutti i microservizi in esecuzione in un ambiente App contenitore. Si ottengono anche le altre funzionalità native del cloud di Container Apps, tra cui KEDA, Dapr, Envoy. È comunque possibile usare Application Insights per monitorare le esecuzioni delle funzioni e l'app per le funzioni può accedere alle stesse risorse di rete virtuale fornite dall'ambiente.
Per una panoramica generale delle opzioni di hosting dei contenitori per Funzioni di Azure, vedere Supporto dei contenitori Linux in Funzioni di Azure.
Hosting e profili di carico di lavoro
Esistono due piani di hosting principali per le app contenitore, un piano a consumo serverless e un piano dedicato, che usa i profili di carico di lavoro per controllare meglio le risorse di distribuzione. Un profilo del carico di lavoro determina la quantità di risorse di calcolo e memoria disponibili per le app contenitore distribuite in un ambiente. Questi profili sono configurati per soddisfare le diverse esigenze delle applicazioni.
Il profilo del carico di lavoro a consumo è il profilo predefinito aggiunto a ogni tipo di ambiente profili di carico di lavoro. È possibile aggiungere profili di carico di lavoro dedicati all'ambiente durante la creazione di un ambiente o dopo la creazione. Per altre informazioni sui profili di carico di lavoro, vedere Profili del carico di lavoro in App Azure Container.
L'hosting di App contenitore di Azure di app per le funzioni in contenitori è supportato in tutte le aree che supportano App contenitore.
Se l'app non ha requisiti hardware specifici, è possibile eseguire l'ambiente in un piano a consumo o in un piano dedicato usando il profilo di carico di lavoro a consumo predefinito. Quando si eseguono funzioni nelle applicazioni container, vengono addebitati solo i costi per l'utilizzo delle applicazioni container. Per altre informazioni, vedere la pagina dei prezzi app Azure Container.
Funzioni di Azure in App contenitore di Azure supporta l'hosting abilitato per GPU nel piano dedicato con profili di carico di lavoro.
Per informazioni su come creare e distribuire un contenitore di app per le funzioni in App contenitore nel piano a consumo predefinito, vedere Creare le prime funzioni in contenitori in App contenitore di Azure.
Per informazioni su come creare un ambiente app container con profili di carico di lavoro e distribuire un contenitore di app per le funzioni in uno specifico carico di lavoro, vedere Profili di carico di lavoro di App container.
Funzioni nei contenitori
Per usare l'hosting di App contenitore, il codice deve essere eseguito in un'app per le funzioni in un contenitore Linux creato e gestito. Funzioni gestisce un set di immagini di base specifiche del linguaggio che è possibile usare per generare le app per le funzioni in contenitori.
Quando si crea un progetto di codice usando Azure Functions Core Tools e si include l'opzione --docker
, Core Tools genera il Dockerfile con l'immagine di base corretta, che è possibile usare come punto di partenza per la creazione del contenitore.
Importante
Quando si creano contenitori personalizzati, è necessario mantenere aggiornata l'immagine di base del contenitore all'immagine di base supportata più recente. Le immagini di base supportate per Funzioni di Azure sono specifiche del linguaggio e sono disponibili nei repository dell'immagine di base di Funzioni di Azure.
Il team di Funzioni si impegna a pubblicare aggiornamenti mensili per queste immagini di base. Gli aggiornamenti regolari includono gli aggiornamenti alla versione minore più recenti e le correzioni di sicurezza sia per il runtime delle funzioni che per i linguaggi. È consigliabile aggiornare regolarmente il contenitore dall'immagine di base più recente e ridistribuire la versione aggiornata del contenitore. Per altre informazioni, vedere Gestione di contenitori personalizzati.
Quando si apportano modifiche al codice delle funzioni, è necessario ricompilare e ripubblicare l'immagine del contenitore. Per altre informazioni, vedere Aggiornare un'immagine nel Registro di sistema.
Opzioni di distribuzione
Funzioni di Azure supporta attualmente i metodi seguenti per distribuire un'app per le funzioni in contenitori in App Azure Container:
- Apache Maven
- Modelli ARM
- Interfaccia della riga di comando di Azure
- Interfaccia della riga di comando per sviluppatori di Azure (azd)
- Strumenti di base di Funzioni di Azure
- Attività di Azure Pipeline
- Portale di Azure
- File Bicep
- GitHub Actions
- Visual Studio Code
È possibile distribuire continuamente le app in contenitori dal codice sorgente usando Azure Pipelines o GitHub Actions. La funzionalità di distribuzione continua di Funzioni non è attualmente supportata durante la distribuzione in App contenitore.
Autorizzazione dell'identità gestita
Per una maggiore sicurezza, è consigliabile connettersi ai servizi remoti usando l'autenticazione di Microsoft Entra e l'autorizzazione dell'identità gestita. È possibile usare le identità gestite per queste connessioni:
Quando si esegue in App contenitore, è possibile usare Microsoft Entra ID con identità gestite per tutte le estensioni di associazione che supportano le identità gestite. Attualmente, solo queste estensioni di associazione supportano il ridimensionamento basato su eventi quando si usa l'autenticazione dell'identità gestita:
- Hub eventi di Azure
- Archiviazione code di Azure
- Bus di servizio di Azure
Per altre associazioni, usare repliche fisse quando si usa l'autenticazione dell'identità gestita. Per altre informazioni, vedere la Guida per sviluppatori di Funzioni.
Integrazione della rete virtuale
Quando ospiti le tue funzioni in un ambiente Container Apps, le tue funzioni possono sfruttare sia le reti virtuali accessibili internamente che quelle esternamente. Per altre informazioni sulle reti dell'ambiente, vedere Rete nell'ambiente app contenitore di Azure.
Scalabilità basata su eventi
Tutti i trigger di Funzioni possono essere usati nell'app per le funzioni in contenitori. Tuttavia, solo questi trigger possono essere ridimensionati in modo dinamico (da zero istanze) in base agli eventi ricevuti durante l'esecuzione in un ambiente app contenitore:
- Azure Cosmos DB (connessione KEDA)
- Griglia di eventi di Azure
- Hub eventi di Azure
- Archiviazione BLOB di Azure (basata su Griglia di eventi)
- Archiviazione code di Azure
- Bus di servizio di Azure
- Durable Functions (provider di archiviazione MSSQL)
- HTTP
- Kafka
- Temporizzatore
Funzioni di Azure in App contenitore è progettato per configurare i parametri di ridimensionamento e le regole in base alla destinazione dell'evento. Non è necessario preoccuparsi di configurare gli oggetti con scalabilità KEDA. È comunque possibile impostare il numero minimo e massimo di repliche durante la creazione o la modifica dell'app per le funzioni. Il comando seguente dell'interfaccia della riga di comando di Azure imposta il numero minimo e massimo di repliche durante la creazione di una nuova app per le funzioni in un ambiente App contenitore da un Registro Azure Container:
az functionapp create --name <APP_NAME> --resource-group <MY_RESOURCE_GROUP> --max-replicas 15 --min-replicas 1 --storage-account <STORAGE_NAME> --environment MyContainerappEnvironment --image <LOGIN_SERVER>/azurefunctionsimage:v1 --registry-username <USERNAME> --registry-password <SECURE_PASSWORD> --registry-server <LOGIN_SERVER>
Il comando seguente imposta lo stesso numero minimo e massimo di repliche in un'app per le funzioni esistente:
az functionapp config container set --name <APP_NAME> --resource-group <MY_RESOURCE_GROUP> --max-replicas 15 --min-replicas 1
Gruppi di risorse gestiti
Funzioni di Azure in App contenitore esegue le risorse dell'app per le funzioni in contenitori in gruppi di risorse gestite appositamente. Questi gruppi di risorse gestite consentono di proteggere la coerenza delle app impedendo modifiche o eliminazioni impreviste o non autorizzate delle risorse nel gruppo gestito, anche da parte di entità del servizio.
Un gruppo di risorse gestite viene creato per te la prima volta che crei risorse dell'App per le funzioni in un ambiente di App per Contenitori. Le risorse di App contenitore richieste dall'app per le funzioni in contenitori vengono eseguite in questo gruppo di risorse gestite. Tutte le altre app per le funzioni create nello stesso ambiente usano questo gruppo esistente.
Un gruppo di risorse gestite viene rimosso automaticamente dopo che tutte le risorse del contenitore dell'app per le funzioni vengono rimosse dall'ambiente. Mentre il gruppo di risorse gestite è visibile, eventuali tentativi di modificare o rimuovere il gruppo di risorse gestite generano un errore. Per rimuovere un gruppo di risorse gestite da un ambiente, rimuovere tutte le risorse contenitore dell'app per le funzioni per rimuoverle automaticamente.
Se si verificano problemi con questi gruppi di risorse gestite, contattare il supporto tecnico.
Registrazione di applicazioni
È possibile monitorare l'applicazione delle funzioni containerizzata ospitata in Container Apps usando Azure Monitor Application Insights allo stesso modo delle app ospitate da Azure Functions. Per altre informazioni, vedere Monitorare Funzioni di Azure.
Per le associazioni che supportano la scalabilità basata su eventi, gli eventi di scalabilità vengono registrati come FunctionsScalerInfo
ed FunctionsScalerError
eventi nell'area di lavoro Log Analytics. Per ulteriori informazioni, consultare la registrazione dei log delle applicazioni in Container Apps di Azure.
Considerazioni sull'hosting di applicazioni container
Quando si distribuiscono i contenitori dell'app per le funzioni in App contenitore, tenere presenti le considerazioni seguenti:
- Queste limitazioni si applicano ai trigger Kafka:
- Il valore del protocollo di
ssl
non è supportato quando è ospitato in Container Apps. Usare un valore di protocollo diverso. - Affinché un trigger Kafka venga ridimensionato in modo dinamico quando si è connessi a Hub eventi, la proprietà
username
deve essere risolta in un'impostazione dell'applicazione che contiene il valore effettivo del nome utente. Quando si usa il valore predefinito$ConnectionString
, il trigger Kafka non è in grado di far sì che l'app venga ridimensionata in modo dinamico.
- Il valore del protocollo di
- Per le definizioni dei criteri di App contenitore predefinite, attualmente solo i criteri a livello di ambiente si applicano ai contenitori di Funzioni di Azure.
- Per impostazione predefinita, un'app per le funzioni in contenitori monitora la porta 80 per le richieste in ingresso. Se l'app deve usare una porta diversa, usare l'impostazione
WEBSITES_PORT
per modificare questa porta predefinita. - Non è attualmente possibile utilizzare le funzionalità di distribuzione continua predefinite quando si ospita su Container Apps. È invece necessario eseguire la distribuzione dal codice sorgente usando Azure Pipelines o GitHub Actions.
- Attualmente non è possibile spostare una distribuzione di app di funzioni tra gruppi di risorse o tra sottoscrizioni se ospitata in Container Apps. È invece necessario ricreare la distribuzione dell'app in contenitori esistente in un nuovo gruppo di risorse, una sottoscrizione o un'area.
- Quando si usano app contenitore, non si ha accesso diretto alle API Kubernetes di livello inferiore.
- L'estensione
containerapp
è in conflitto con l'estensioneappservice-kube
nell'interfaccia della riga di comando di Azure. Se in precedenza sono state pubblicate app in Azure Arc, eseguireaz extension list
e assicurarsi cheappservice-kube
non sia installato. In caso affermativo, è possibile rimuoverlo eseguendoaz extension remove -n appservice-kube
.