Hosting di app contenitore di Azure di Funzioni 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 contenitore di Azure. 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 App contenitore consente di eseguire le funzioni in un ambiente basato su Kubernetes con il supporto predefinito per il monitoraggio open source, mTLS, Dapr e KEDA.

Importante

Il supporto per l'hosting di app per le funzioni in App Azure Container è attualmente in anteprima.

L'integrazione con App contenitore consente di usare il modello di programmazione delle funzioni esistente per scrivere codice di funzione nel linguaggio di programmazione o nel framework preferito supportato da Funzioni di Azure. Si ottengono ancora i trigger e le associazioni di Funzioni con il ridimensionamento basato su eventi. App contenitore usa la potenza del servizio Azure Kubernetes sottostante (servizio Azure Kubernetes) rimuovendo la complessità di dover usare le API Kubernetes.

Questa integrazione significa anche che è possibile usare gli strumenti client di Funzioni esistenti e il portale di Azure per creare contenitori, distribuire contenitori di app per le funzioni in App contenitore e configurare la distribuzione continua. Le configurazioni di rete e osservabilità vengono definite a livello di ambiente dell'app contenitore e si applicano a tutti i microservizi in esecuzione in un ambiente App contenitore, inclusa l'app per le funzioni. Si ottengono anche le altre funzionalità native del cloud di App contenitore, tra cui KEDA, Dapr, Envoy. È comunque possibile usare Application Insights per monitorare le esecuzioni delle funzioni.

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 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 delle 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 del carico di lavoro Consumo predefinito. Quando si eseguono funzioni in App contenitore, vengono addebitati solo i costi per l'utilizzo di App contenitore. Per altre informazioni, vedere la pagina dei prezzi di App Azure Container.

Funzioni di Azure in App Azure Container 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 Azure Container.

Per informazioni su come creare un ambiente app contenitore con profili di carico di lavoro e distribuire un contenitore di app per le funzioni in un carico di lavoro specifico, vedere Profili di carico di lavoro di App contenitore.

Funzioni nei contenitori

Per usare l'hosting di App contenitore, il codice delle funzioni deve essere eseguito 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 Funzioni usando Funzioni di Azure 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 della lingua e sono disponibili nei repository dell'immagine di base 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 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:

Configurare le regole di scalabilità

Funzioni di Azure in App contenitore è progettato per configurare i parametri di scalabilità 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 gestite

La funzione di Azure nelle app contenitore esegue le risorse del contenitore con funzioni in gruppi di risorse appositamente gestiti, che consentono di proteggere la coerenza delle app impedendo modifiche o eliminazioni non intenzionali o non autorizzate delle risorse nel gruppo gestito da utenti, gruppi o principi di servizio. Questo gruppo di risorse gestite viene creato per la prima volta che si creano risorse dell'app per le funzioni in un ambiente App contenitore. Le risorse di App contenitore richieste dall'app per le funzioni in contenitori vengono eseguite in questo gruppo di risorse gestite e 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 e rimuoverle automaticamente. Se si verificano problemi con questi gruppi di risorse gestite, contattare il supporto tecnico.

Considerazioni sull'hosting di app contenitore

Quando si distribuiscono i contenitori dell'app per le funzioni in App contenitore, tenere presenti le considerazioni seguenti:

  • Anche se è possibile usare tutti i trigger, solo i trigger seguenti possono essere ridimensionati dinamicamente (da zero istanze) durante l'esecuzione in App contenitore:
    • HTTP
    • Archiviazione code di Azure
    • Bus di servizio di Azure
    • Hub eventi di Azure
    • Kafka*
    • Timer
      *Il valore del protocollo di ssl non è supportato quando è ospitato in App contenitore. Usare un valore di protocollo diverso.
  • Per le definizioni dei criteri di App contenitore predefinite, attualmente solo i criteri a livello di ambiente si applicano ai contenitori Funzioni di Azure.
  • Attualmente non è possibile spostare una distribuzione di app per le funzioni ospitata in App contenitore tra gruppi di risorse o tra sottoscrizioni. È 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'estensione nell'interfaccia della appservice-kube riga di comando di Azure. Se in precedenza sono state pubblicate app in Azure Arc, eseguire az extension list e assicurarsi che appservice-kube non sia installato. In caso affermativo, è possibile rimuoverlo eseguendo az extension remove -n appservice-kube.
  • L'estensione Dapr di Funzioni è disponibile anche in anteprima, con la guida fornita nel repository.

Passaggi successivi