Condividi tramite


Guida pratica: Esplora i concetti generali per la distribuzione di un'app Web Python su Azure Container Apps

Questa serie di esercitazioni illustra come inserire in contenitori un'app Web Python e distribuirla in Azure Container Apps. Un'app Web di esempio è in contenitori e l'immagine Docker viene archiviata in Azure Container Registry. Azure Container Apps è configurato per eseguire il pull dell'immagine Docker dal Registro Contenitori e creare un contenitore. L'app di esempio si connette a Azure Database for PostgreSQL per illustrare la comunicazione tra app contenitore e altre risorse Azure.

Sono disponibili diverse opzioni per compilare e distribuire app Web native del cloud e in contenitori Python in Azure. Questa serie di esercitazioni illustra Azure Container Apps. Container Apps è utile per l'esecuzione di contenitori per usi generici, in particolare per le applicazioni che coinvolgono molti microservizi distribuiti nei contenitori.

In questa serie di esercitazioni viene creato un contenitore. Per distribuire un'applicazione web Python come contenitore in Azure App Service, vedere Applicazione web Python containerizzata su Azure con MongoDB.

Le procedure descritte in questa serie di esercitazioni consentono di completare queste attività:

  • Creare un'immagine Docker da un'app Web Python e archiviare l'immagine in Azure Container Registry.
  • Configurare Azure Container Apps per ospitare l'immagine Docker.
  • Configurare GitHub Actions per aggiornare il contenitore con una nuova immagine Docker attivata dalle modifiche apportate al repository GitHub. Questo passaggio è facoltativo.
  • Configurare l'integrazione continua e il recapito continuo (CI/CD) di un'app Web Python per Azure.

In questa prima parte della serie vengono illustrati i concetti fondamentali per la distribuzione di un'app Web Python in Azure Container Apps.

Panoramica del servizio

Il diagramma seguente illustra come usare l'ambiente locale, i repository GitHub e i servizi Azure in questa serie di esercitazioni.

Diagramma di ambienti e servizi per la distribuzione di un'app Web Python in Azure Container Apps.

Il diagramma include questi componenti:

  • Azure Container Apps:

    Azure Container Apps consente di eseguire microservizi e applicazioni in contenitori in una piattaforma serverless. Una piattaforma serverless consente di sfruttare i vantaggi offerti dall'esecuzione di contenitori con una configurazione minima. Con Azure Container Apps, le applicazioni possono essere ridimensionate in modo dinamico in base a caratteristiche quali il traffico HTTP, l'elaborazione guidata dagli eventi o il carico di CPU o memoria.

    Le app contenitore scaricano le immagini Docker da Azure Container Registry. Le modifiche apportate alle immagini del contenitore attivano un aggiornamento al contenitore distribuito. È anche possibile configurare GitHub Actions per attivare gli aggiornamenti.

  • Azure Container Registry:

    Azure Container Registry consente di usare le immagini Docker in Azure. Poiché Registro Container è vicino alle distribuzioni in Azure, si ha il controllo sull'accesso. È possibile usare i gruppi di Microsoft Entra e le autorizzazioni per controllare l'accesso alle immagini Docker.

    In questa serie di esercitazioni l'origine del Registro di sistema è Azure Container Registry. Ma è anche possibile usare Docker Hub o un registro privato con modifiche minime.

  • Azure Database for PostgreSQL:

    Il codice di esempio archivia i dati dell'applicazione in un database PostgreSQL. L'app contenitore si connette a PostgreSQL usando un'identità gestita assegnata dall'utente . Le informazioni di connessione vengono archiviate nelle variabili di ambiente configurate in modo esplicito o tramite un connettore del servizio Azure.

  • GitHub:

    Il codice di esempio per questa serie di esercitazioni si trova in un repository GitHub che devi forkare e clonare in locale. Per configurare un flusso di lavoro CI/CD con GitHub Actions, è necessario un account GitHub.

    È comunque possibile seguire questa serie di esercitazioni senza un account GitHub, se si lavora in locale o in Azure Cloud Shell per compilare l'immagine del contenitore dal repository di codice di esempio.

Revisioni e CI/CD

Per apportare modifiche al codice ed eseguirne il push in un contenitore, creare una nuova immagine Docker con le modifiche apportate. Quindi, caricare l'immagine nel Registro di Contenitori e creare una nuova revisione dell'app del contenitore.

Per automatizzare questo processo, un passaggio facoltativo della serie di esercitazioni illustra come creare una pipeline CI/CD usando GitHub Actions. La pipeline compila e distribuisce automaticamente il codice in App contenitore ogni volta che viene eseguito il push di un nuovo commit nel repository GitHub.

Autenticazione e sicurezza

In questa serie di esercitazioni si compila un'immagine del contenitore Docker direttamente in Azure e la si distribuisce in Azure Container Apps. Le App contenitori vengono eseguite nel contesto di un ambiente, supportato da una rete virtuale Azure. Le reti virtuali sono un componente fondamentale per la rete privata in Azure. Le applicazioni container consentono di esporre la tua app container al web pubblico abilitando l'accesso.

Per configurare CI/CD, si autorizza Azure Container Apps come app OAuth per l'account GitHub. Come applicazione OAuth, Container Apps scrive un file del flusso di lavoro di GitHub Actions nel repository con informazioni sulle risorse Azure e sui processi per aggiornarle. Il flusso di lavoro aggiorna le risorse di Azure usando le credenziali di un'entità servizio di Microsoft Entra (o una esistente) con accesso basato sui ruoli per le app dei contenitori e un nome utente e una password per il Registro Azure dei Contenitori. Le credenziali vengono archiviate in modo sicuro nel repository GitHub.

Infine, l'app Web di esempio in questa serie di esercitazioni archivia i dati in un database PostgreSQL. Il codice di esempio si connette a PostgreSQL tramite un connection string. Quando l'app è in esecuzione in Azure, si connette al database PostgreSQL usando un'identità gestita assegnata dall'utente. Il codice usa DefaultAzureCredential per aggiornare dinamicamente la password nel connection string con un token di accesso Microsoft Entra durante il runtime. Questo meccanismo evita la necessità di inserire hardcoded la password nella stringa di connessione o in una variabile di ambiente e fornisce un livello di sicurezza aggiuntivo.

La serie di esercitazioni illustra la creazione dell'identità gestita e la concessione di un ruolo e autorizzazioni PostgreSQL appropriati in modo che possa accedere e aggiornare il database. Durante la configurazione delle App per container, una serie di tutorial ti guida attraverso l'impostazione dell'identità gestita all'interno dell'app e la definizione delle variabili di ambiente che contengono le informazioni di connessione per il database. È anche possibile usare un connettore del servizio Azure per eseguire la stessa operazione.

Prerequisiti

Per completare questa serie di esercitazioni, è necessario:

  • Un account Azure in cui è possibile creare:

    • Un'istanza di Azure Container Registry.
    • Un ambiente Azure Container Apps.
    • Un'istanza di Azure Database for PostgreSQL.
  • Visual Studio Code o Azure CLI, a seconda dello strumento usato:

  • pacchetti Python:

App di esempio

L'app di esempio Python è un'app di revisione del ristorante che salva i dati del ristorante ed esamina in PostgreSQL. Alla fine della serie di esercitazioni si avrà un'app di revisione del ristorante distribuita e in esecuzione in Azure Container Apps simile allo screenshot seguente.

Screenshot dell'app di esempio creata da un'app Web in contenitori Python.

Passaggio successivo