Condividi tramite


Esercitazione: Scopri 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 App Contenitore di Azure. Un'app Web di esempio è in contenitori e l'immagine Docker viene archiviata in Registro Azure Container. Azure Container Apps è configurato per eseguire il pull dell'immagine Docker dal Registro dei Container e creare un contenitore. L'app di esempio si connette al database di Azure per PostgreSQL per illustrare la comunicazione tra applicazioni contenitore e altre risorse di Azure.

In Azure sono disponibili diverse opzioni per creare e distribuire applicazioni Web Python native per il cloud e containerizzate. Questa serie di esercitazioni copre 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'app web Python come contenitore nel servizio app di Azure, vedere App Web Python in contenitori in 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 nel Registro dei Contenitori di Azure.
  • Configurare Azure Container Apps per ospitare l'immagine Docker.
  • Configura GitHub Actions per aggiornare il container con una nuova immagine Docker, attivata in seguito a modifiche apportate al tuo repository GitHub. Questo passaggio è facoltativo.
  • Configurare l'integrazione continua e la consegna continua (CI/CD) di un'app Web Python su Azure.

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

Panoramica del servizio

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

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

Il diagramma include questi componenti:

  • Azure Container Apps:

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

    Container Apps esegue il pull di immagini Docker dal Registro Azure Container. Le modifiche apportate alle immagini del contenitore attivano un aggiornamento al contenitore distribuito. È anche possibile configurare GitHub Actions per attivare gli aggiornamenti.

  • Il Registro dei Container di Azure:

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

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

  • Database di Azure per 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 di Azure .

  • GitHub:

    Il codice di esempio per questa serie di esercitazioni si trova in un repository GitHub copiato tramite fork e clonato 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 nelle App contenitori ogni volta che viene effettuato il push di un nuovo commit nel repository GitHub.

Autenticazione e sicurezza

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

Per configurare CI/CD, autorizzi Azure Container Apps come app OAuth per l'account GitHub. Come app OAuth, Container Apps scrive un file del flusso di lavoro di GitHub Actions nel tuo repository con informazioni sulle risorse di Azure e i processi di lavoro per aggiornarle. Il flusso di lavoro aggiorna le risorse di Azure usando le credenziali di un principale del servizio Microsoft Entra (o uno esistente) con accesso basato sui ruoli per Container Apps e un nome utente e una password per Azure Container Registry. 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 una stringa di connessione. 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 nella stringa di connessione con un token di accesso Microsoft Entra durante il runtime. Questo meccanismo impedisce la necessità di inserire direttamente la password nella stringa di connessione o in una variabile di ambiente, fornendo un ulteriore livello di sicurezza.

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 di servizi di Azure per eseguire la stessa operazione.

Prerequisiti

Per completare questa serie di esercitazioni, è necessario:

  • Un account Azure in cui è possibile creare:

    • Istanza di Azure Container Registry.
    • Un ambiente di App per contenitori di Azure.
    • Istanza di Azure Database per PostgreSQL.
  • Visual Studio Code o Azure CLI, a seconda dello strumento usato:

    • Per Visual Studio Code è necessaria l'estensione Container Apps .
    • È possibile usare l'interfaccia della riga di comando di Azure tramite Azure Cloud Shell.
  • Pacchetti Python:

App di esempio

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

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

Passaggio successivo