Condividi tramite


Distribuire un progetto di .NET Aspire in Azure Container Apps

.NET .NET Aspire progetti sono progettati per l'esecuzione in ambienti containerizzati. Azure Container Apps è un ambiente completamente gestito che consente di eseguire microservizi e applicazioni in contenitori in una piattaforma serverless. Questo articolo illustra come creare una nuova soluzione di .NET Aspire e distribuirla in Microsoft Azure Container Apps usando il Azure Developer CLI (azd). Si apprenderà come completare le attività seguenti:

  • Effettuare il provisioning di un gruppo di risorse Azure e di Registro Contenitori
  • Pubblicare i progetti .NET Aspire come immagini di container nel registro dei container Azure
  • Effettuare il provisioning di un contenitore Redis in Azure
  • Distribuire gli app in un ambiente Azure Container Apps
  • Visualizzare i log della console dell'applicazione per risolvere i problemi dell'applicazione

Prerequisiti

Per usare .NET.NET Aspire, è necessario che il codice seguente sia installato in locale:

Per altre informazioni, vedere .NET.NET Aspire configurazione e strumentie .NET.NET Aspire SDK.

In alternativa a questa esercitazione e per una guida più approfondita, vedere Distribuire un progetto di .NET Aspire per Azure Container Apps usando azd (guida dettagliata).

Implementare progetti di .NET.NET Aspire con azd

Con .NET Aspire e Azure Container Apps (ACA), è disponibile un ottimo scenario di hosting per la creazione di app native del cloud con .NET. Sono state create delle nuove straordinarie funzionalità nel Azure Developer CLI (azd) specifiche per rendere sviluppo e distribuzione di .NET Aspire su Azure un'esperienza fluida. È comunque possibile usare le opzioni Azure CLI e/o Bicep quando è necessario un livello granulare di controllo sulle implementazioni. Per i nuovi progetti, tuttavia, non è possibile trovare un percorso più semplice per ottenere una nuova topologia di microservizi distribuita nel cloud.

Creare un progetto .NETe.NET Aspire

Come punto di partenza, questo articolo presuppone che sia stato creato un progetto di dal modello Starter Application. Per ulteriori informazioni, vedere Avvio rapido: Costruisci il tuo primo progetto .NET.NET Aspire.

Denominazione delle risorse

Quando si creano nuove risorse Azure, è importante rispettare i requisiti di denominazione. Per Azure Container Apps, il nome deve avere una lunghezza di 2-32 caratteri e deve essere costituito da lettere minuscole, numeri e trattini. Il nome deve iniziare con una lettera e terminare con un carattere alfanumerico.

Per altre informazioni, vedere regole di denominazione e restrizioni per le risorse Azure.

Installare il Azure Developer CLI

Il processo di installazione di azd varia in base al sistema operativo, ma è ampiamente disponibile tramite winget, brew, apto direttamente tramite curl. Per installare azd, consultare Installare Azure Developer CLI.

Inizializzare il modello

  1. Aprire una nuova finestra del terminale e cd nella directory del progetto AppHost della soluzione .NET.NET Aspire.

  2. Eseguire il comando azd init per inizializzare il progetto con azd, che esamina la struttura di directory locale e determina il tipo di app.

    azd init
    

    Per altre informazioni sul comando azd init, vedere azd init.

  3. Selezionare Usa codice nella directory corrente quando azd richiede due opzioni di inizializzazione dell'app.

    ? How do you want to initialize your app?  [Use arrows to move, type to filter]
    > Use code in the current directory
      Select a template
    
  4. Dopo aver eseguito l'analisi della directory, azd ti chiede di confermare che ha trovato il progetto AppHost .NET.NET Aspire corretto. Selezionare l'opzione Conferma e continuare a inizializzare l'app.

    Detected services:
    
      .NET (Aspire)
      Detected in: D:\source\repos\AspireSample\AspireSample.AppHost\AspireSample.AppHost.csproj
    
    azd will generate the files necessary to host your app on Azure using Azure Container Apps.
    
    ? Select an option  [Use arrows to move, type to filter]
    > Confirm and continue initializing my app
      Cancel and exit
    
  5. Immettere un nome di ambiente, usato per nominare le risorse fornite in Azure e gestire diversi ambienti, come dev e prod.

    Generating files to run your app on Azure:
    
      (✓) Done: Generating ./azure.yaml
      (✓) Done: Generating ./next-steps.md
    
    SUCCESS: Your app is ready for the cloud!
    You can provision and deploy your app to Azure by running the azd up command in this directory. For more information on configuring your app, see ./next-steps.md
    

azd genera un numero di file e li inserisce nella directory di lavoro. Questi file sono:

  • azure.yaml: descrive i servizi dell'app, come il progetto .NET Aspire AppHost, e li mappa alle risorse Azure.
  • .azure/config.json: file di configurazione che informa azd qual è l'ambiente attivo corrente.
  • .azure/aspireazddev/.env: contiene sovrascritture specifiche dell'ambiente.

Distribuire il modello

  1. Dopo aver inizializzato un modello di azd, il processo di provisioning e distribuzione può essere eseguito come singolo comando dalla directory del progetto AppHost usando azd up:

    azd up
    
  2. Selezionare la sottoscrizione a cui si vuole eseguire la distribuzione dall'elenco delle opzioni disponibili:

    Select an Azure Subscription to use:  [Use arrows to move, type to filter]
      1. SampleSubscription01 (xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx)
      2. SamepleSubscription02 (xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx)
    
  3. Selezionare il percorso di Azure desiderato da usare nell'elenco delle opzioni disponibili:

    Select an Azure location to use:  [Use arrows to move, type to filter]
      42. (US) Central US (centralus)
      43. (US) East US (eastus)
    > 44. (US) East US 2 (eastus2)
      46. (US) North Central US (northcentralus)
      47. (US) South Central US (southcentralus)
    

Dopo aver effettuato le tue scelte, azd esegue il processo di provisioning e distribuzione.

By default, a service can only be reached from inside the Azure Container Apps environment it is running in. Selecting a service here will also allow it to be reached from the Internet.
? Select which services to expose to the Internet webfrontend
? Select an Azure Subscription to use:  1. <YOUR SUBSCRIPTION>
? Select an Azure location to use: 1. <YOUR LOCATION>

Packaging services (azd package)


Provisioning Azure resources (azd provision)
Provisioning Azure resources can take some time.

Subscription: <YOUR SUBSCRIPTION>
Location: <YOUR LOCATION>

  You can view detailed progress in the Azure Portal:
  <LINK TO DEPLOYMENT>

  (✓) Done: Resource group: <YOUR RESOURCE GROUP>
  (✓) Done: Container Registry: <ID>
  (✓) Done: Log Analytics workspace: <ID>
  (✓) Done: Container Apps Environment: <ID>

SUCCESS: Your application was provisioned in Azure in 1 minute 13 seconds.
You can view the resources created under the resource group <YOUR RESOURCE GROUP> in Azure Portal:
<LINK TO RESOURCE GROUP OVERVIEW>

Deploying services (azd deploy)

  (✓) Done: Deploying service apiservice
  - Endpoint: <YOUR UNIQUE apiservice APP>.azurecontainerapps.io/

  (✓) Done: Deploying service webfrontend
  - Endpoint: <YOUR UNIQUE webfrontend APP>.azurecontainerapps.io/

Aspire Dashboard: <LINK TO DEPLOYED .NET ASPIRE DASHBOARD>

SUCCESS: Your up workflow to provision and deploy to Azure completed in 3 minutes 50 seconds.

Il comando azd up funge da wrapper per i singoli comandi di azd seguenti per effettuare il provisioning e distribuire le risorse in un unico passaggio:

  1. azd package: i progetti dell'app e le relative dipendenze vengono inseriti in contenitori.
  2. azd provision: Le risorse Azure necessarie per l'app sono state fornite.
  3. azd deploy: I progetti vengono inseriti come contenitori in un'istanza del Registro dei Container Azure e quindi utilizzati per creare nuove revisioni di Azure Container Apps, nelle quali il codice verrà ospitato.

Al termine delle fasi azd up, l'app sarà disponibile in Azureed è possibile aprire il portale di Azure per esplorare le risorse. azd restituisce anche gli URL per accedere direttamente alle app distribuite.

Testare l'app distribuita

Dopo aver eseguito il provisioning e la distribuzione dell'app, puoi accedere al portale di Azure. Nel gruppo di risorse in cui è stata distribuita l'app verranno visualizzate le tre app contenitore e altre risorse.

Screenshot del gruppo di risorse del progetto di .NET Aspire nel portale di Azure.

Clicca sull'app contenitore web per aprirla nel Portale.

Screenshot del front-end del progetto di .NET Aspire nel portale di Azure.

Fare clic sul collegamento URL applicazione per aprire il front-end nel browser.

Screenshot dell'interfaccia del progetto di .NET.NET Aspire nel browser.

Quando si fa clic sul nodo "Meteo" nella barra di spostamento, l'app contenitore front-end web effettua una chiamata all'app contenitore apiservice per ottenere i dati. L'output del front end verrà memorizzato nella cache utilizzando l'applicazione contenitore redis e l'integrazione di memorizzazione nella cache dell'output .NET AspireRedis. Quando si aggiorna il front-end alcune volte, si noterà che i dati meteo vengono memorizzati nella cache. Verrà aggiornato dopo alcuni secondi.

Distribuire il dashboard .NET.NET Aspire

È possibile distribuire il dashboard .NET.NET Aspire come parte dell'app ospitata. Questa funzionalità è ora completamente supportata. Durante l'implementazione, i log di output di azd stampano un URL aggiuntivo per il dashboard distribuito.

È possibile eseguire azd monitor per avviare automaticamente il dashboard.

azd monitor

Pulire le risorse

Esegui il seguente comando CLI di Azure per eliminare il gruppo di risorse quando le risorse Azure che hai creato non sono più necessarie. L'eliminazione del gruppo di risorse comporta anche l'eliminazione delle risorse contenute all'interno di essa.

az group delete --name <your-resource-group-name>

Per ulteriori informazioni, vedere Ripulire le risorse in Azure.