Esercitazione: Compilare e distribuire un'app in App contenitore di Azure
Questo articolo illustra come compilare e distribuire un microservizio in App contenitore di Azure da un repository di origine usando il linguaggio di programmazione preferito.
Questa è la prima esercitazione della serie di articoli che illustrano come usare le funzionalità di base all'interno di App contenitore di Azure. Il primo passaggio consiste nel creare un servizio API Web back-end che restituisce una raccolta statica di album musicali.
Nota
È anche possibile compilare e distribuire questa app usando az containerapp up seguendo le istruzioni disponibili nell'articolo Guida introduttiva: Compilare e distribuire un'app in App contenitore di Azure da un repository. Il comando az containerapp up
è un modo rapido e pratico per compilare e distribuire l'app in App contenitore di Azure usando un singolo comando. Tuttavia, non fornisce lo stesso livello di personalizzazione per l'app contenitore.
L'esercitazione successiva della serie compilerà e distribuirà l'applicazione Web front-end in App contenitore di Azure.
Lo screenshot seguente mostra l'output dell'API album distribuita in questa esercitazione.
Prerequisiti
Per completare il progetto, sono necessari gli elementi seguenti:
Requisito | Istruzioni |
---|---|
Account di Azure | Se non si dispone di un account, crearne uno gratuitamente. Per continuare, è necessaria l'autorizzazione Amministratore Accesso utenti o Proprietario per la sottoscrizione di Azure. Assicurarsi di usare il ruolo più restrittivo per il contesto. Per informazioni dettagliate, vedere Assegnare ruoli di Azure usando il portale di Azure e Ruoli di Azure, ruoli di Microsoft Entra e ruoli di amministratore della sottoscrizione classica. |
Account GitHub | Iscrizione gratuita. |
git | Installare Git |
Interfaccia della riga di comando di Azure | Installare l'interfaccia della riga di comando di Azure. |
Requisito | Istruzioni |
---|---|
Account di Azure | Se non si dispone di un account, crearne uno gratuitamente. Per continuare, è necessaria l'autorizzazione collaboratore o proprietario per la sottoscrizione di Azure. Per informazioni dettagliate, fare riferimento ad Assegnare ruoli di Azure usando il portale di Azure. |
Account GitHub | Iscrizione gratuita. |
git | Installare Git |
Interfaccia della riga di comando di Azure | Installare l'interfaccia della riga di comando di Azure. |
Docker Desktop | Docker fornisce programmi di installazione per la configurazione dell'ambiente Docker in macOS, Windows e Linux. Dal prompt dei comandi digitare docker per assicurarsi che Docker sia in esecuzione. |
Attrezzaggio
Per accedere ad Azure dall'interfaccia della riga di comando, eseguire il comando seguente e seguire le istruzioni per completare il processo di autenticazione.
az login
Assicurarsi di eseguire l'ultima versione dell'interfaccia della riga di comando eseguire il comando di aggiornamento.
az upgrade
Installare o aggiornare quindi l'estensione App contenitore di Azure per l'interfaccia della riga di comando.
Se si ricevono errori relativi ai parametri mancanti quando si eseguono comandi az containerapp
nell'interfaccia della riga di comando di Azure o nei cmdlet del modulo Az.App
in Azure PowerShell, assicurarsi di avere installato la versione più recente dell'estensione App contenitore di Azure.
az extension add --name containerapp --upgrade
Nota
A partire da maggio 2024, le estensioni dell'interfaccia della riga di comando di Azure non abilitano più le funzionalità di anteprima per impostazione predefinita. Per accedere alle funzionalità di anteprima di App contenitore, installare l'estensione App contenitore con --allow-preview true
.
az extension add --name containerapp --upgrade --allow-preview true
Ora che l'estensione o il modulo corrente è installato, registrare gli spazi dei nomi Microsoft.App
e Microsoft.OperationalInsights
.
az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights
Creare variabili di ambiente
Dopo aver completato la configurazione dell'interfaccia della riga di comando di Azure, è possibile definire le variabili di ambiente usate in questo articolo.
Definire le variabili seguenti nella shell Bash.
RESOURCE_GROUP="album-containerapps"
LOCATION="canadacentral"
ENVIRONMENT="env-album-containerapps"
API_NAME="album-api"
FRONTEND_NAME="album-ui"
GITHUB_USERNAME="<YOUR_GITHUB_USERNAME>"
Prima di eseguire questo comando, assicurarsi di sostituire <YOUR_GITHUB_USERNAME>
con il proprio nome utente di GitHub.
Definire quindi un nome di registro contenitori univoco.
ACR_NAME="acaalbums"$GITHUB_USERNAME
Preparare il repository GitHub
Passare al repository per il linguaggio preferito e creare una copia tramite fork del repository.
Selezionare il pulsante Fork nella parte superiore del repository Album API per creare una copia tramite fork del repository nell'account.
È ora possibile clonare il fork del repository di esempio.
Usare il comando git seguente per clonare il repository con fork nella cartella code-to-cloud:
git clone https://github.com/$GITHUB_USERNAME/containerapps-albumapi-csharp.git code-to-cloud
Passare quindi alla directory radice del repository clonato.
cd code-to-cloud/src
Creare un gruppo di risorse di Azure
Creare un gruppo di risorse per organizzare i servizi correlati alla distribuzione dell'app contenitore.
az group create \
--name $RESOURCE_GROUP \
--location "$LOCATION"
Creare un Registro Azure Container
Dopo aver compilato l'immagine del contenitore dell'API album, creare un'istanza di Registro Azure Container nel gruppo di risorse per archiviarla.
az acr create \ --resource-group $RESOURCE_GROUP \ --location $LOCATION \ --name $ACR_NAME \ --sku Basic
Il registro contenitori deve consentire token di destinatari di Azure Resource Manager (ARM) per l'autenticazione per usare l'identità gestita per eseguire il pull delle immagini.
Usare il comando seguente per verificare se i token ARM sono autorizzati ad accedere al Registro Azure Container (ACR).
az acr config authentication-as-arm show --registry "$ACR_NAME"
Se sono consentiti token ARM, il comando restituisce quanto segue.
{ "status": "enabled" }
status
Se èdisabled
, consentire i token ARM con il comando seguente.az acr config authentication-as-arm update --registry "$ACR_NAME" --status enabled
Creare un'identità gestita assegnata dall'utente
Per evitare di usare credenziali amministrative, eseguire il pull delle immagini dai repository privati in Microsoft Registro Azure Container usando le identità gestite per l'autenticazione. Quando possibile, usare un'identità gestita assegnata dall'utente per eseguire il pull delle immagini.
Creare un'identità gestita assegnata dall'utente. Prima di eseguire i comandi seguenti, scegliere un nome per l'identità gestita e sostituire con
\<PLACEHOLDER\>
il nome .IDENTITY="<YOUR_IDENTITY_NAME>"
az identity create \ --name $IDENTITY \ --resource-group $RESOURCE_GROUP
Ottenere l'ID risorsa dell'identità.
IDENTITY_ID=$(az identity show \ --name $IDENTITY \ --resource-group $RESOURCE_GROUP \ --query id \ --output tsv)
Compilare l'applicazione
Con Attività del Registro Azure Container è possibile compilare ed eseguire il push dell'immagine Docker per l'API album senza installare Docker in locale.
Compilare il contenitore con Registro Azure Container
Eseguire il comando seguente per avviare il processo di compilazione e push dell'immagine usando Registro Azure Container. Il simbolo .
alla fine del comando rappresenta il contesto di compilazione Docker, ovvero questo comando deve essere eseguito all'interno della cartella src in cui si trova il Dockerfile.
az acr build --registry $ACR_NAME --image $API_NAME .
L'output del comando az acr build
mostra lo stato di avanzamento del caricamento del codice sorgente in Azure e i dettagli delle operazioni docker build
e docker push
.
Compilare l'applicazione
La procedura seguente illustra come compilare l'immagine del contenitore in locale usando Docker ed eseguire il push dell'immagine nel nuovo registro contenitori.
Compilare il contenitore con Docker
Il comando seguente compila un'immagine del contenitore per l'API album e la contrassegna con il nome completo del server di accesso di Registro Azure Container. Il simbolo .
alla fine del comando rappresenta il contesto di compilazione Docker, ovvero questo comando deve essere eseguito all'interno della cartella src in cui si trova il Dockerfile.
docker build --tag $ACR_NAME.azurecr.io/$API_NAME .
Eseguire il push dell'immagine nel registro contenitori
Per prima cosa, accedere al Registro Azure Container.
az acr login --name $ACR_NAME
Eseguire quindi il push dell'immagine nel registro.
docker push $ACR_NAME.azurecr.io/$API_NAME
Creare un ambiente App contenitore
L'ambiente di App contenitore di Azure funge da limite sicuro per un gruppo di app contenitore.
Creare l'ambiente App contenitore usando il comando seguente.
az containerapp env create \
--name $ENVIRONMENT \
--resource-group $RESOURCE_GROUP \
--location "$LOCATION"
Distribuire l'immagine in un'app contenitore
Dopo aver creato un ambiente, è possibile creare e distribuire l'app contenitore con il comando az containerapp create
.
Creare e distribuire l'app contenitore con il comando seguente.
az containerapp create \
--name $API_NAME \
--resource-group $RESOURCE_GROUP \
--environment $ENVIRONMENT \
--image $ACR_NAME.azurecr.io/$API_NAME \
--target-port 8080 \
--ingress external \
--registry-server $ACR_NAME.azurecr.io \
--user-assigned "$IDENTITY_ID" \
--registry-identity "$IDENTITY_ID" \
--query properties.configuration.ingress.fqdn
Se si imposta
--ingress
suexternal
, l'app contenitore sarà accessibile dalla rete Internet pubblica.target-port
viene impostato su8080
in modo da corrispondere alla porta su cui il contenitore è in ascolto per le richieste.Senza una proprietà
query
, la chiamata aaz containerapp create
restituisce una risposta JSON che include un set completo di dettagli sull'applicazione. L'aggiunta di un parametro di query filtra l'output solo in base al nome di dominio completo (FQDN) dell'app.Questo comando aggiunge il ruolo all'identità gestita assegnata dall'utente, in modo che possa eseguire il
acrPull
pull delle immagini dal registro contenitori.
Verificare la distribuzione
Copiare il nome di dominio completo in un Web browser. Dal Web browser passare all'endpoint /albums
del nome di dominio completo.
Pulire le risorse
Se non si intende continuare con l'esercitazione Comunicazione tra microservizi, è possibile rimuovere le risorse di Azure create durante questa guida introduttiva. Eseguire il comando seguente per eliminare il gruppo di risorse insieme a tutte le risorse create in questa guida introduttiva.
az group delete --name $RESOURCE_GROUP
Suggerimento
Problemi? Segnalare i problemi su GitHub aprendo un ticket nel repository App contenitore di Azure.
Passaggi successivi
Questa guida introduttiva è il punto di ingresso per un set di esercitazioni progressive che illustrano le varie funzionalità all'interno di App contenitore di Azure. Continuare per ottenere informazioni su come abilitare la comunicazione da un front-end Web che chiama l'API distribuita in questo articolo.