Condividi tramite


Supporto dei contenitori Linux in Funzioni di Azure

Quando si pianificano e si sviluppano le singole funzioni da eseguire in Funzioni di Azure, si è in genere incentrati sul codice stesso. Funzioni di Azure semplifica la distribuzione di un progetto di codice in un'app per le funzioni in Azure. Quando si distribuisce il progetto in un'app per le funzioni Linux, il codice viene eseguito in un contenitore creato automaticamente e si integra facilmente con gli strumenti di gestione di Funzioni.

Funzioni supporta anche le distribuzioni di app per le funzioni in contenitori. In una distribuzione in contenitori si crea un'istanza dell'app per le funzioni in un contenitore Docker locale da un'immagine basata supportata. È quindi possibile distribuire questa app per le funzioni containerizzata in un ambiente di hosting in Azure. La creazione di un contenitore di app per le funzioni consente di personalizzare o controllare in altro modo l'ambiente di runtime immediato del codice della funzione.

Important

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. Consulta i repository delle immagini di base delle Funzioni di Azure.

Il team di Funzioni si impegna a pubblicare aggiornamenti mensili per queste immagini di base. Gli aggiornamenti regolari includono gli aggiornamenti della versione secondaria più recenti e le correzioni di sicurezza sia per il runtime di 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.

Opzioni di hosting dei contenitori

Sono disponibili diverse opzioni per l'hosting delle app per le funzioni in contenitori in Azure:

Opzione di hosting Benefits
App contenitore di Azure Funzioni di Azure offre supporto integrato per lo sviluppo, la distribuzione e la gestione di app per le funzioni in contenitori in App Azure Container. Questa integrazione consente di gestire le app usando gli stessi strumenti e pagine di Funzioni nel portale di Azure. Usare App contenitore di Azure per ospitare il contenitore dell'app per le funzioni nello stesso ambiente di altri microservizi, API, siti Web, flussi di lavoro o altri programmi ospitati in contenitori. L'hosting di App contenitore consente di eseguire le funzioni in un ambiente gestito basato su Kubernetes con supporto predefinito per il monitoraggio open source, mTLS, Dapr e KEDA. Supporta la scalabilità a zero e fornisce un modello di hosting con pagamento in base al consumo serverless. È anche possibile richiedere hardware dedicato, anche GPU, usando i profili di carico di lavoro. Opzione di hosting consigliata per le app per le funzioni in contenitori n Azure.
Cluster Kubernetes abilitati per Azure Arc (anteprima) È possibile ospitare le app per le funzioni nei cluster Kubernetes abilitati per Azure Arc come distribuzione solo codice o in un contenitore Linux personalizzato. Azure Arc consente di collegare cluster Kubernetes in modo che sia possibile gestirli e configurarli in Azure. L'hosting di contenitori di Funzioni di Azure nei cluster Kubernetes abilitati per Azure Arc è attualmente in anteprima. Per altre informazioni, vedere Uso di contenitori e Funzioni di Azure.
Funzioni di Azure È possibile ospitare le app per funzioni containerizzate in Azure Functions eseguendo il contenitore in un piano Elastic Premium o in un piano del servizio app (dedicato). Usare l'hosting di App contenitore per il supporto avanzato dei contenitori da App contenitore. L'hosting di piani Premium offre i vantaggi del ridimensionamento dinamico. È possibile usare l'hosting di piani dedicati per sfruttare le risorse esistenti del piano di servizio app inutilizzate.
Kubernetes Poiché il runtime di Funzioni di Azure offre flessibilità nell'hosting in cui e come si vuole, è possibile ospitare e gestire i contenitori delle app per le funzioni direttamente nei cluster Kubernetes. KEDA (Scalabilità automatica basata su eventi basata su Kubernetes) si associa perfettamente al runtime e agli strumenti di Funzioni di Azure per offrire scalabilità guidata dagli eventi in Kubernetes. Importante: L'hosting Kubernetes delle app per le funzioni in contenitori, tramite KEDA o tramite distribuzione diretta, è un'operazione open source che è possibile usare gratuitamente. Il supporto ottimale per questo scenario di hosting viene fornito solo dai collaboratori e dalla community. Sei responsabile della gestione dei contenitori delle funzioni app nel cluster, anche quando vengono distribuiti su Azure Kubernetes Service (AKS).

Confronto tra il supporto delle funzionalità

Il grado di supporto di varie funzionalità e comportamenti di Funzioni di Azure quando si esegue l'app per le funzioni in un contenitore dipende dall'opzione di hosting del contenitore scelta.

Feature/behavior App contenitore (integrata) App contenitore (diretta) Piano Premium Piano dedicato Kubernetes
Supporto per i prodotti Yes No Yes Yes No
Integrazione del portale di Funzioni No No Yes Yes No
Ridimensionamento basato su eventi Yes5 Sì (regole di scalabilità) Yes No No
Scala massima (istanze) 10001  10001  1002  10-303  Varia in base al cluster
Istanze scalabili a zero Yes Yes No No KEDA
Limite di tempo di esecuzione Unbounded6 Unbounded6 Unbounded7 Unbounded8 None
Distribuzione di Core Tools No No No No func kubernetes 
Revisions Yes  Yes No No No
Slot di distribuzione  No No Yes Yes No
Log di streaming  Yes  Yes  Yes Yes No
Accesso alla console  Yes  Yes Sì (con Kudu) Sì (con Kudu) Sì (nei pod che usano kubectl)
Mitigazione dell'avvio a freddo Numero minimo di repliche Regole di scalabilità  Istanze always-ready/pre-warmed  n/a n/a
Autenticazione servizio app  Yes  Yes Yes Yes No
Nomi di dominio personalizzati  Yes  Yes Yes Yes No
Certificati a chiave privata  Yes  Yes Yes Yes No
Reti virtuali Yes  Yes Yes Yes Yes
Zone di disponibilità Yes  Yes Yes Yes Yes
Diagnostics Yes  Yes Yes  Yes  No
Hardware dedicato Sì (profili di carico di lavoro) Sì (profili di carico di lavoro) No Yes Yes
GPU dedicate Sì (profili di carico di lavoro) Sì (profili di carico di lavoro) No No Yes
Numero di memoria/CPU configurabile Yes Yes No No Yes
Opzione "Concessione gratuita" Yes Yes No No No
Dettagli prezzi Fatturazione di App contenitore Fatturazione di App contenitore Fatturazione del piano Premium Fatturazione del piano dedicato Prezzi di AKS
Requisiti per i nomi di servizio 2-32 caratteri: limitato a lettere minuscole, numeri e trattini. Deve iniziare con una lettera e terminare con un carattere alfanumerico. 2-32 caratteri: limitato a lettere minuscole, numeri e trattini. Deve iniziare con una lettera e terminare con un carattere alfanumerico. Meno di 64 caratteri: limitato a caratteri alfanumerici e trattini. Non può iniziare con o terminare con un trattino. Meno di 64 caratteri: limitato a caratteri alfanumerici e trattini. Non può iniziare con o terminare con un trattino. Meno di 253 caratteri: limitati a caratteri alfanumerici e trattini. Deve iniziare e terminare con un carattere alfanumerico.
  1. In App contenitore, il valore predefinito è 10 istanze, ma è possibile impostare il numero massimo di repliche, che ha un massimo complessivo di 1000. Questa impostazione viene rispettata purché sia disponibile una quota di core sufficiente. Quando si crea l'app per le funzioni dal portale di Azure, sono limitate a 300 istanze.
  2. In alcune aree, le app Linux in un piano Premium possono essere ridimensionate a 100 istanze. Per altre informazioni, vedere l'articolo Piano Premium.
  3. Per limiti specifici per le varie opzioni del piano di servizio app, vedere Limiti del piano di servizio app.
  4. Richiede KEDA; supportato dalla maggior parte dei trigger. Per informazioni sui trigger che supportano il ridimensionamento basato su eventi, vedere Considerazioni per l'hosting di App contenitore.
  5. Quando il numero minimo di repliche è impostato su zero, il timeout predefinito dipende dai trigger specifici usati nell'app.
  6. Non è applicata la durata massima del timeout di esecuzione. Tuttavia, il periodo di tolleranza assegnato a un'esecuzione della funzione è di 60 minuti durante la scalabilità e viene fornito un periodo di tolleranza di 10 minuti durante gli aggiornamenti della piattaforma.
  7. Richiede che il piano di servizio app sia impostato su Always On. È previsto un periodo di tolleranza di 10 minuti durante gli aggiornamenti della piattaforma.

Gestione di contenitori personalizzati

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 della versione secondaria più recenti e le correzioni di sicurezza sia per il runtime di Funzioni che per i linguaggi. È consigliabile aggiornare regolarmente il contenitore dall'immagine di base più recente e ridistribuire la versione aggiornata del contenitore.

Scegli l'immagine di base in base allo stack linguistico usato nella funzione dell'app. La tabella seguente fornisce esempi per ogni stack. In generale, il tag deve iniziare con 4- per indicare il runtime di Funzioni V4. Quando vengono rilasciate nuove versioni secondarie, questo tag verrà aggiornato in modo da puntare alla nuova versione. Man mano che ricompila periodicamente l'immagine personalizzata, eseguirai il pull delle nuove versioni tramite lo stesso tag, consentendo alla tua app di avere gli stessi aggiornamenti. Non è consigliabile usare tag che specificano versioni di runtime secondarie, perché non riceveranno aggiornamenti e l'app rimarrà potenzialmente in una versione senza patch, indipendentemente dalla frequenza con cui ricompilare l'immagine personalizzata.

Stack di linguaggio Tag di immagine di base consigliati di esempio
.NET (modello di lavoro isolato) mcr.microsoft.com/azure-functions/dotnet-isolated:4-dotnet-isolated8.0 oppure
mcr.microsoft.com/azure-functions/dotnet-isolated:4-dotnet-isolated8.0-appservice

Questi esempi hanno come destinazione .NET 8. Selezionare l'immagine appropriata per la versione di .NET necessaria.
.NET (modello legacy in-process) mcr.microsoft.com/azure-functions/dotnet:4-dotnet8.0 oppure
mcr.microsoft.com/azure-functions/dotnet:4-dotnet8.0-appservice

Il supporto terminerà per il modello in-process il 10 novembre 2026. È consigliabile eseguire la migrazione al modello di lavoro isolato il prima possibile.
Giava mcr.microsoft.com/azure-functions/java:4-java21 oppure
mcr.microsoft.com/azure-functions/java:4-java21-appservice

Questi esempi hanno come destinazione Java 21. Selezionare l'immagine appropriata per la versione Java necessaria.
Node.js (JavaScript o TypeScript) mcr.microsoft.com/azure-functions/node:4-node22 oppure
mcr.microsoft.com/azure-functions/node:4-node22-appservice

Questi esempi hanno come destinazione Node.js 22. Selezionare l'immagine appropriata per la versione Node.js necessaria.
PowerShell mcr.microsoft.com/azure-functions/powershell:4-powershell7.4 oppure
mcr.microsoft.com/azure-functions/powershell:4-powershell7.4-appservice

Questi esempi hanno come destinazione PowerShell 7.4. Selezionare l'immagine appropriata per la versione di PowerShell necessaria.
Pitone mcr.microsoft.com/azure-functions/python:4-python3.12 oppure
mcr.microsoft.com/azure-functions/python:4-python3.12-appservice

Questi esempi hanno come destinazione Python 3.12. Selezionare l'immagine appropriata per la versione di Python necessaria.
Gestori personalizzati/altro mcr.microsoft.com/azure-functions/base:4 oppure
mcr.microsoft.com/azure-functions/base:4-appservice

Le immagini di base che terminano in -appservice abilitano SSH e il debug remoto dalla piattaforma. A meno che non siano necessarie queste funzionalità, è possibile usare le immagini di base senza il -appservice suffisso .

Important

Non è sufficiente avere solo uno dei tag precedenti nel Dockerfile. È necessario eseguire regolarmente il pull dell'immagine più recente da tale tag in modo che l'immagine personalizzata possa essere ricompilata per includere gli aggiornamenti più recenti. Se non scarichi l'immagine più recente e non ricompili, l'app continuerà a essere eseguita sulla vecchia immagine di base.

Quando si crea o si distribuisce un'app in contenitori usando un'immagine personalizzata, si è responsabili di assicurarsi che l'immagine personalizzata sia aggiornata con le immagini di base rilasciate. Oltre a nuove funzionalità e miglioramenti, questi aggiornamenti delle immagini di base possono includere anche gli aggiornamenti della sicurezza critici per la tua app. Per assicurarsi che l'app sia protetta, assicurarsi di rimanere aggiornati. È consigliabile eseguire regolarmente il pull della versione più recente dell'immagine di base, ricompilare l'immagine del contenitore personalizzata e ridistribuire l'app per usarla.

In alcuni casi, è necessario apportare modifiche a livello di piattaforma che potrebbero significare che un'app in un contenitore personalizzato che usa un'immagine di base precedente potrebbe smettere di funzionare correttamente. Per tali modifiche importanti, le immagini aggiornate vengono implementate in anticipo in modo che le app che eseseguono aggiornamenti regolari non siano interessate negativamente. Per evitare potenziali problemi con le tue app in esecuzione in contenitori personalizzati, assicurarsi di non rimanere troppo indietro con l'ultima versione minore rilasciata. Durante un caso di supporto, se determiniamo che la tua app sta riscontrando problemi perché si trova su una versione precedente o non supportata, ti chiediamo di aggiornare il contenitore all'ultima versione dell'immagine di base prima di proseguire con il supporto.

Come iniziare

Usare questi collegamenti per iniziare a usare Funzioni di Azure nei contenitori Linux:

Voglio... Vedere l'articolo:
Creare le prime funzioni in contenitori Creare un'app per le funzioni in un contenitore Linux locale
Creare e distribuire funzioni in App Azure Container Creare le prime funzioni in contenitori in App Azure Container
Creare e distribuire funzioni in contenitori in Funzioni di Azure Creare la prima funzione di Azure in contenitori