Condividi tramite


Esplorare il azd up flusso di lavoro

L'interfaccia della riga di comando per sviluppatori di Azure (azd) consente di effettuare il provisioning e distribuire le risorse dell'applicazione in Azure con un solo comando usando azd up. Questa guida fornisce una suddivisione dettagliata di azd up e come le diverse fasi di questo processo del flusso di lavoro si correlano alla struttura di un modello azd.

Segui passo passo utilizzando un modello

Le sezioni precedenti usano esempi del hello-azd modello per illustrare vari azd concetti e modelli. È possibile seguire questa procedura inizializzando il modello nel computer locale:

azd init -t hello-azd

Per altre informazioni su come iniziare a usare azd e il modello, vedere l'articolo hello-azd dell'interfaccia della riga di comando per sviluppatori di Azure.

Concetti essenziali

Quando si usa un azd modello, è possibile effettuare il provisioning e distribuire le risorse dell'app in Azure usando il azd up comando . Eseguire il comando da una finestra del terminale aperta alla cartella del modello:

azd up

azd up è progettato in modo da poter eseguire ripetutamente il comando durante lo sviluppo dell'app e le nuove modifiche vengono distribuite in modo incrementale. Il comando avvia un potente flusso di lavoro che incapsula essenzialmente tre fasi specifiche.

  1. Creazione di pacchetti: prepara il codice e le dipendenze dell'applicazione per la distribuzione.
  2. Provisioning: crea e configura le risorse di Azure necessarie necessarie per l'app usando i file di infrastruttura come codice.
  3. Distribuzione: distribuisce l'applicazione in pacchetto nelle risorse di Azure di cui è stato effettuato il provisioning.

È anche possibile eseguire ognuna di queste fasi singolarmente usando il rispettivo comando, ma azd up offre un wrapper pratico per semplificare il processo complessivo. Ogni fase svolge un ruolo fondamentale per garantire un processo di distribuzione uniforme e automatizzato. È possibile influenzare le fasi del azd up flusso di lavoro usando le configurazioni nel file modello azure.yaml . Le sezioni seguenti illustrano in modo più dettagliato ogni fase.

La fase di confezionamento

La fase di confezionamento è il primo passaggio del azd up flusso di lavoro. Durante questa fase:

  • Il codice dell'app viene preparato per la distribuzione. A seconda del linguaggio di programmazione utilizzato per l'app modello, la creazione di pacchetti può comportare la costruzione o la compilazione dell'app, l'inclusione delle dipendenze, o la creazione di artefatti di distribuzione, come le immagini Docker.
  • La struttura del azd modello include in genere una src cartella in cui risiede il codice dell'applicazione. Gli script di compilazione o i file di configurazione(ad esempio un Dockerfile) possono influire sulla modalità di creazione del pacchetto dell'applicazione.
  • Il azure.yaml file contiene mappature di configurazione che indicano azd dove risiede il codice dell'app e quale lingua usa, in modo che azd possa impacchettarlo correttamente.
  • Questa fase garantisce che l'applicazione sia in uno stato distribuibile prima di passare al passaggio successivo.

È possibile eseguire il processo di confezionamento pacchetti indipendentemente all'esterno del azd up utilizzando il comando azd package.

azd package

Configurazioni di imballaggio di esempio

azd può creare pacchetti di app compilate con lingue diverse in modi diversi. Ad esempio, se la tua app utilizza un approccio containerizzato, il modello azd potrebbe includere un Dockerfile nella directory dell'app src. La fase di creazione del pacchetto crea un'immagine Docker per l'app in base a questo file. Queste configurazioni vengono gestite tramite il azure.yaml file .

Si consideri, ad esempio, la struttura e le configurazioni di progetto seguenti del hello-azd modello di avvio:

Screenshot che mostra la fase di creazione del pacchetto di azd up.

Nell'immagine precedente il azure.yaml file:

  • Definisce il codice nella src directory come app C#.
  • Specifica il percorso di un Dockerfile da usare per compilare un'immagine del contenitore dell'app.

Quando si esegue azd up (o azd package), la CLI per sviluppatori di Azure usa questa combinazione di configurazioni per compilare e creare il pacchetto del codice dell'app nella directory src come immagine del contenitore .NET. Se un Dockerfile non è stato configurato, azd potrebbe anche creare un pacchetto dell'app .NET usando il processo di pubblicazione .NET standard.

Fase di configurazione

La fase di provisioning crea e configura le risorse di Azure necessarie per l'app. Ad esempio, l'app potrebbe richiedere a un'istanza del Servizio app di Azure di ospitare l'app stessa e a un account di archiviazione di Azure per contenere i file caricati. La fase di provisioning usa i file IaC (Infrastructure-as-Code) inclusi nel modello per definire le risorse.

Alcuni punti chiave da comprendere sulla fase di provisioning includono:

  1. azd supporta sia Bicep che Terraform per le attività di infrastruttura come codice.
  2. Per impostazione predefinita, i file di infrastruttura come codice vengono archiviati nella infra cartella , ma questo percorso può essere personalizzato.
  3. azd cerca un main.bicep file o main.tf che funga da file di orchestrazione principale per il processo IaC.

Screenshot che mostra la fase di provisioning di azd up.

È anche possibile eseguire il processo di provisioning autonomamente al di fuori di azd up utilizzando il comando azd provision.

azd provision

Configurazioni di provisioning di esempio

All'interno della infra cartella, un main.bicep file definisce in genere le risorse di Azure che azd devono essere create per l'app. Considera il seguente frammento dal main.bicep nel modello iniziale hello-azd:

// ...omitted code for other resource configurations

// Create an Azure Cosmos DB account
module cosmos 'app/cosmos.bicep' = {
  name: 'cosmos'
  scope: rg
  params: {
    userPrincipalId: principalId
    managedIdentityId: identity.outputs.principalId
  }
}

// Create a storage account
module storage './core/storage/storage-account.bicep' = {
  name: 'storage'
  scope: rg
  params: {
    name: !empty(storageAccountName) ? storageAccountName : '${abbrs.storageStorageAccounts}${resourceToken}'
    location: location
    tags: tags
    containers: [
      { name: 'attachments' }
    ]
  }
}

// Container apps environment and registry
module containerAppsEnv './core/host/container-apps.bicep' = {
  name: 'container-apps'
  scope: rg
  params: {
    name: 'app'
    containerAppsEnvironmentName: !empty(containerAppsEnvName) ? containerAppsEnvName : '${abbrs.appManagedEnvironments}${resourceToken}'
    containerRegistryName: !empty(containerRegistryName) ? containerRegistryName : '${abbrs.containerRegistryRegistries}${resourceToken}'
    location: location
  }
}

// ...omitted code for other resource configurations

Usando il codice Bicep precedente, azd crea le risorse seguenti:

  • Un'istanza di Azure Cosmos DB per archiviare i dati inviati tramite l'app
  • Un account di archiviazione di Azure per archiviare le immagini caricate
  • Un'app contenitore di Azure per ospitare l'app

Fase di distribuzione

La fase di distribuzione è il passaggio finale del azd up flusso di lavoro. Durante questa fase:

  • Gli artefatti dell'app creati durante la fase di creazione dei pacchetti vengono distribuiti nelle risorse di Azure di cui è stato effettuato il provisioning.
  • azd usa i file di configurazione nel modello, ad esempio azure.yaml, per determinare come distribuire l'app.
  • Le variabili di ambiente e le stringhe di connessione sono configurate per garantire che l'app possa interagire con le risorse di cui è stato effettuato il provisioning.

È anche possibile eseguire il processo di distribuzione da solo al di fuori di azd up utilizzando il comando azd deploy.

azd deploy

Configurazioni di distribuzione di esempio

All'interno del azure.yaml file è possibile specificare il servizio nel progetto da distribuire in quale risorsa di Azure. Si considerino ad esempio le configurazioni seguenti per il hello-azd modello di avvio:

metadata:
  template: hello-azd-dotnet
name: azd-starter
services:
  aca:
    project: ./src # The location of the service source code
    language: csharp
    host: containerapp # The provisioned resource to deploy the service to
    docker:
      path: ./Dockerfile

Il codice precedente istruisce azd di distribuire gli artefatti impacchettati dal codice nella cartella src all'oggetto containerapp che è stato creato durante la fase di provisioning. È anche possibile definire più servizi ed eseguire il mapping di ognuno a un host diverso.

Conclusione

Il azd up flusso di lavoro semplifica il processo di distribuzione delle applicazioni in Azure automatizzando le fasi di creazione di pacchetti, provisioning e distribuzione. Gli sviluppatori possono garantire un processo di distribuzione coerente ed efficiente rispettando la struttura del azd modello. Indipendentemente dal fatto che si distribuisca una semplice app Web o un'architettura di microservizi complessa, il azd up comando semplifica il percorso dal codice al cloud.