Condividi tramite


Supporto dei contenitori Linux in Funzioni di Azure

Quando si pianificano e 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 in contenitori 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.

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 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 Hosting Vantaggi
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 Azure Container 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). Usa l'hosting di Container Apps per supporto container completo da Container Apps. 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 (Kubernetes-based Event Driven Autoscaling) si integra perfettamente con il runtime e i tool di Funzioni di Azure per offrire la scalatura gestita 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.

Funzionalità/comportamento App contenitore (integrata) App contenitore (diretta) Piano Premium Piano dedicato Kubernetes
Supporto tecnico NO NO
Integrazione del portale di Funzioni No No
Ridimensionamento basato su eventi 5 Sì (regole di scalabilità) NO NO
Scala massima (istanze) 10001  10001  1002  10-303  Varia in base al cluster
Istanze da ridimensionare a zero NO NO KEDA
Limite di tempo di esecuzione Senza vincoli6 Senza vincoli6 Senza vincoli7 Senza vincoli8 nessuno
Distribuzione di Core Tools func azurecontainerapps NO NO NO func kubernetes 
Revisioni No No No No
Slot di distribuzione  No No No
Log di streaming    No
Accesso alla console  Non attualmente disponibile4  Sì (con Kudu) Sì (con Kudu) Sì (nei pod che usano kubectl)
Mitigazione dell'avvio a freddo Repliche minime Regole di scalabilità  Istanze always-ready/pre-warmed  n/d n/a
Autenticazione servizio app  Non attualmente disponibile4  No
Nomi di dominio personalizzati  Non attualmente disponibile4  No
Certificati di chiave privata  Non attualmente disponibile4  No
Reti virtuali
Zone di disponibilità
Diagnostica Non attualmente disponibile4      No
Hardware dedicato Sì (profili di carico di lavoro) Sì (profili di carico di lavoro) No
GPU dedicate Sì (profili di carico di lavoro) Sì (profili di carico di lavoro) No NO
Numero di memoria/CPU configurabile NO No
Opzione "Concessione gratuita" NO NO NO
Dettagli sui prezzi Fatturazione di App contenitore Fatturazione di App contenitore Fatturazione del piano Premium Fatturazione del piano dedicato Prezzi del servizio Azure Kubernetes
Requisiti del nome del 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 aumentare fino a 100 istanze. Per altre informazioni, vedere l'articolo Piano Premium.
  3. Per i limiti specifici per le varie opzioni del piano di servizio app, vedere Limiti del piano di servizio app.
  4. La parità delle funzionalità è l'obiettivo dell'hosting integrato nelle app Azure Container.
  5. 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.
  6. Quando il numero minimo di repliche è impostato su zero, il timeout predefinito dipende dai trigger specifici usati nell'app.
  7. 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.
  8. Richiede l'impostazione del piano di servizio app 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.

Quando l'immagine di base viene gestita da Funzioni, ad esempio in una distribuzione standard in Linux, l'app viene aggiornata automaticamente dagli aggiornamenti regolari delle immagini di base rilasciati dal team di Funzioni. Per tali contenitori non personalizzati, la tua app viene aggiornata per funzionare sull'immagine di base che ha la nuova versione secondaria o la versione con patch del runtime dell'host.

Quando si crea o si distribuisce un'app in contenitori usando un'immagine personalizzata, si è responsabili di assicurarsi che l'immagine personalizzata rimane up-to-date 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, assicurati di rimanere aggiornata.

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.

Introduzione

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

Si vuole... 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