Distribuire un'app Web Go in App Azure Container
Questo argomento di avvio rapido illustra come distribuire un'app Web Go in contenitori in App Azure Container.
App Contenitore di Azure consente di eseguire il codice dell'applicazione in un pacchetto in qualsiasi contenitore senza dover gestire complesse infrastrutture cloud o agenti di orchestrazione di contenitori complessi e senza preoccuparsi del runtime o del modello di programmazione. Gli usi comuni delle app contenitore di Azure includono: distribuzione di endpoint API, hosting di applicazioni di elaborazione in background, gestione dell'elaborazione guidata dagli eventi ed esecuzione di microservizi.
Seguire questa esercitazione per completare la creazione di un'immagine Docker, la distribuzione di tale immagine in Registro Azure Container e la distribuzione di un'app Web Go in App Contenitore di Azure.
Prerequisiti
- Sottoscrizione di Azure: se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.
- Go installato: versione 1.18 o successiva
- Docker Desktop
Attrezzaggio
Per accedere ad Azure dall'interfaccia della riga di comando, eseguire il comando az login e seguire le istruzioni per completare il processo di autenticazione.
az login
Per assicurarsi di eseguire la versione più recente dell'interfaccia della riga di comando, eseguire il comando az upgrade .
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 az containerapp
comandi nell'interfaccia della riga di comando di Azure, assicurarsi di avere installato la versione più recente dell'estensione App Azure Container.
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
.
Nota
Le risorse di App contenitore di Azure sono state migrate dallo spazio dei nomi Microsoft.Web
allo spazio dei nomi Microsoft.App
. Per ulteriori dettagli, vedere Migrazione dello spazio dei nomi da Microsoft.Web a Microsoft.App nel mese di marzo 2022.
az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights
Scaricare l'app di esempio
Per seguire questa esercitazione, è necessaria un'applicazione di esempio per la containerizzazione. Un'app Web Go di esempio è disponibile nel repository GitHub msdocs-go-webapp-quickstart . Scaricare o clonare l'applicazione di esempio nella propria workstation locale.
git clone https://github.com/Azure-Samples/msdocs-go-webapp-quickstart.git
cd msdocs-go-webapp-quickstart
Creare un Registro Azure Container
Registro Azure Container consente di compilare, archiviare e gestire immagini del contenitore. Verrà usato per archiviare l'immagine Docker che contiene l'app Web Go di esempio fornita nel repository di esempio indicato in precedenza.
Eseguire i comandi seguenti per creare un Registro Azure Container:
Creare un gruppo di risorse di Azure con il comando az group create.
az group create \ --name <resourceGroupName> \ --location eastus
Creare un Registro Azure Container con il comando az acr create.
az acr create \ --resource-group <resourceGroupName> \ --name <azureContainerRegistryName> \ --sku basic
Accedere all'istanza di Contenitore di Azure con il comando az acr login .
az acr login --name <azureContainerRegistryName>
Sostituire <resourceGroupName>
e <azureContainerRegistryName>
con i valori appropriati. Il nome Registro Azure Container deve essere univoco a livello globale.
Nota
Se viene visualizzato un errore simile al seguente quando si esegue il az acr login
comando, assicurarsi che il deamon docker sia in esecuzione nel sistema:
You may want to use 'az acr login -n <azureContainerRegistryName> --expose-token' to get an access token, which does not require Docker to be installed.
2024-09-12 17:25:25.127779 An error occurred: DOCKER_COMMAND_ERROR
Compilare ed eseguire il push dell'immagine Docker
Dopo aver creato un Registro Azure Container, compilare ed eseguire il push dell'immagine Docker dell'app Web Go di esempio.
Eseguire i comandi seguenti per compilare ed eseguire il push dell'immagine nel Registro di sistema:
Ottenere le informazioni sul server di accesso con il comando az acr show .
az acr show \ --name <azureContainerRegistryName> \ --resource-group <resourceGroupName> \ --query loginServer \ --output tsv
Compilare l'immagine Docker in locale.
docker build -t <loginServer>/<imageName>:latest .
Eseguire il push dell'immagine Docker nel Registro Azure Container.
docker push <loginServer>/<imageName>:latest
Verificare che l'immagine sia stata inserita correttamente in Registro Azure Container con il comando az acr repository list.
az acr repository list \ --name <azureContainerRegistryName> \ --output table
Sostituire loginServer
, imageName
e azureContainerRegistryName
con i valori appropriati. Il nome dell'immagine è l'immagine Docker di cui viene eseguito il push in Registro Azure Container e successivamente usata per la distribuzione in App Contenitore di Azure.
Ora che è disponibile un'immagine in Registro Azure Container, è possibile distribuire l'app Contenitore di Azure e il relativo ambiente.
Creare un ambiente di App contenitore di Azure
App Contenitore di Azure non ha la complessità di un agente di orchestrazione dei contenitori, ma ha ancora bisogno di un modo per stabilire limiti sicuri, che è il punto in cui sono disponibili gli ambienti di App Contenitore di Azure. App contenitore distribuite nello stesso ambiente condividono la stessa rete virtuale e scrivono i log nella stessa area di lavoro Log Analytics. Prima di poter distribuire un'app Contenitore di Azure, è necessario un ambiente in cui eseguire la distribuzione.
Eseguire il comando az containerapp env create per creare un ambiente app contenitore di Azure.
az containerapp env create \ --name <containerAppEnvName> \ --resource-group <resourceGroupName> \ --location "East US"
Eseguire la distribuzione in App contenitore di Azure
A questo punto, è stato creato un Registro Azure Container, creato ed eseguito il push di un'immagine Docker e creato un ambiente di App Contenitore di Azure. Tutto ciò che rimane è distribuire l'applicazione.
Eseguire il comando az containerapp create per distribuire l'app Web Go in App Contenitore di Azure.
az containerapp create \
--name <containerAppName> \
--resource-group <resourceGroupName> \
--environment <containerAppEnvName> \
--image "<loginServer>/<imageName>:latest" \
--registry-server "<loginServer>" \
--registry-identity system \
--target-port 8080 \
--ingress external
Il --registry-identity system
parametro configura l'identità gestita assegnata dal sistema nell'app contenitore. L'app contenitore usa questa identità anziché nome utente/password, che è meno sicura, per eseguire l'autenticazione con il registro contenitori. Il comando crea automaticamente anche un'assegnazione AcrPull
di ruolo per l'identità, in modo che sia autorizzata a eseguire il pull delle immagini dal Registro di sistema. Per usare le identità gestite per l'autenticazione e l'autorizzazione, il Registro di sistema deve essere un Registro Azure Container.
Verificare l'URL dell'app Web
Eseguire il comando az containerapp show per ottenere il nome di dominio completo (nome di dominio completo) dell'ingresso dell'applicazione Web.
APP_FQDN=$(az containerapp show \
--name <containerAppName> \
--resource-group <resourceGroupName> \
--query properties.configuration.ingress.fqdn \
--output tsv)
Eseguire quindi il comando curl sull'FQDN e verificare che l'output rifletta il codice HTML del sito Web.
curl "https://$APP_FQDN"
Pulire le risorse
Al termine dell'app di esempio, è possibile rimuovere da Azure tutte le risorse per l'app. In questo modo si evitano addebiti in corso e la sottoscrizione di Azure non è ordinata. La rimozione del gruppo di risorse rimuove anche tutte le risorse nel gruppo di risorse ed è il modo più rapido per rimuovere tutte le risorse di Azure per l'app.
Eseguire il comando az group delete per eliminare il gruppo di risorse e le relative risorse.
az group delete \
--name <resourceGroupName> \
--no-wait