Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Azure Container Apps consente di usare Azure Pipelines per pubblicare revisioni dell'applicazione di contenitori. Quando viene eseguito il push dei commit nel repository di Azure DevOps, viene attivata una pipeline che aggiorna l'immagine del contenitore nel registro del contenitore. Container Apps crea una nuova revisione basata sulla container image aggiornata.
I commit su un ramo specifico nel repository attivano la pipeline. Quando si crea la pipeline, si decide quale ramo è il trigger.
Attività di Azure Pipelines di App contenitore
L'attività supporta gli scenari seguenti:
- Compilare da un Dockerfile e distribuire in App contenitore.
- Compilare dal codice sorgente senza un Dockerfile e distribuirlo in Container Apps. I linguaggi supportati includono .NET, Java, Node.js, PHP e Python.
- Distribuire un'immagine di container esistente su Container Apps.
Con la versione di produzione, questa attività viene fornita con Azure DevOps e non richiede l'installazione esplicita. Per la documentazione completa, vedere AzureContainerApps@1 - attività di distribuzione v1 (Azure Container Apps Deploy v1 task).
Esempi di utilizzo
Di seguito sono riportati alcuni scenari comuni per l'uso dell'attività. Per altre informazioni, vedere la documentazione dell'attività.
Creare e distribuire su App contenitore
Il frammento di codice seguente illustra come compilare un'immagine del contenitore dal codice sorgente e distribuirla in App contenitore.
steps:
- task: AzureContainerApps@1
inputs:
appSourcePath: '$(Build.SourcesDirectory)/src'
azureSubscription: 'my-subscription-service-connection'
acrName: 'myregistry'
containerAppName: 'my-container-app'
resourceGroup: 'my-container-app-rg'
L'attività usa il Dockerfile in appSourcePath per creare l'immagine del contenitore. Se non viene trovato alcun Dockerfile, l'attività tenta di compilare l'immagine del contenitore dal codice sorgente in appSourcePath.
Distribuire un'immagine di un container esistente su Container Apps
Il seguente snippet illustra come distribuire un'immagine del contenitore esistente in Container Apps. L'attività esegue l'autenticazione con il registro usando la connessione al servizio. Se all'identità della connessione del servizio non viene assegnato il ruolo AcrPush per il registro, specificare le credenziali di amministratore del registro utilizzando i parametri di input acrUsername e acrPassword.
steps:
- task: AzureContainerApps@1
inputs:
azureSubscription: 'my-subscription-service-connection'
containerAppName: 'my-container-app'
resourceGroup: 'my-container-app-rg'
imageToDeploy: 'myregistry.azurecr.io/my-container-app:$(Build.BuildId)'
Importante
Se si compila un'immagine del contenitore in un passaggio separato, assicurarsi di usare un tag univoco, ad esempio l'ID di compilazione anziché un tag stabile come latest. Per altre informazioni, vedere Procedure consigliate per i tag di immagine.
Autenticare con Azure Container Registry
L'attività App contenitore deve eseguire l'autenticazione con Registro Azure Container per eseguire il push dell'immagine del contenitore. L'app contenitore deve anche autenticarsi con il registro contenitori per eseguire il pull dell'immagine del contenitore.
Per eseguire il push delle immagini, l'attività esegue automaticamente l'autenticazione con il registro contenitori specificato in acrName usando la connessione al servizio fornita in azureSubscription. Se all'identità della connessione del servizio non è assegnato il AcrPush ruolo per il Registro di sistema, specificare le credenziali di amministratore del Registro di sistema usando acrUsername e acrPassword.
Per eseguire il pull delle immagini, Container Apps usa l'identità gestita (scelta consigliata) o le credenziali di amministratore per l'autenticazione con il container registry. Per usare l'identità gestita, l'app contenitore di destinazione per l'attività deve essere configurata per l'uso dell'identità gestita. Per autenticarsi con le credenziali di amministratore del registro, impostare gli input dell'attività acrUsername e acrPassword.
Impostazione
Completare la procedura seguente per configurare una pipeline di Azure DevOps da distribuire in App contenitore.
- Creare un repository Azure DevOps per l'app
- Creare un'applicazione container con identità gestita abilitata
- Assegnare il ruolo
AcrPullper il registro contenitori all'identità gestita dell'app contenitore - Configurare una connessione al servizio Azure DevOps per la sottoscrizione di Azure
- Creare una pipeline di Azure DevOps
Prerequisiti
| Requisito | Istruzioni |
|---|---|
| Account di Azure | Se non si dispone di un account, crearne uno gratuitamente. Per completare le procedure descritte in questo articolo, è necessaria l'autorizzazione Collaboratore o Proprietario per la sottoscrizione di Azure. Per altre informazioni, vedere Assegnare ruoli di Azure tramite il portale di Azure. |
| Progetto DevOps di Azure | Passare a Azure DevOps e selezionare Introduzione a Azure. Poi, creare un nuovo progetto. |
| Interfaccia della riga di comando di Azure | Installare l'interfaccia della riga di comando di Azure. |
Creare un repository Azure DevOps e clonare il codice sorgente
Prima di creare una pipeline, il codice sorgente per l'app deve trovarsi in un repository.
Accedere ad Azure DevOps e passare al progetto.
Selezionare Repo nel riquadro sinistro.
Selezionare Importa un repository.
Immettere i valori seguenti e quindi selezionare Importa:
Campo valore Tipo di repository Git Clone URL https://github.com/Azure-Samples/containerapps-albumapi-csharp.git Seleziona Importa
Selezionare Clona per visualizzare l'URL del repository e copiarlo.
Aprire un prompt dei comandi ed eseguire il comando seguente:
git clone <REPOSITORY_URL> my-container-appSostituire
<REPOSITORY_URL>con l'URL copiato.
Creare un'app contenitore e configurare l'identità gestita
Crea la tua app contenitore completando i seguenti passaggi. Il az containerapp up comando crea risorse di Azure, compila l'immagine del contenitore, archivia l'immagine in un registro e distribuisce un'app contenitore.
Dopo aver creato l'app, è possibile aggiungere un'identità gestita all'app e assegnare l'identità al ruolo AcrPull per consentire all'identità di eseguire il pull delle immagini dal Registro di sistema.
Passare alla cartella src del repository clonato:
cd my-container-app cd srcCreare risorse di Azure e distribuire un'app contenitore usando il
az containerapp upcomando :az containerapp up \ --name my-container-app \ --source . \ --ingress externalSuggerimento
Se la compilazione ha esito negativo con un errore del repository Debian, assicurarsi di usare la versione più recente dell'interfaccia della riga di comando di Azure e l'estensione containerapp eseguendo
az extension add --name containerapp --upgrade. In alternativa, aggiungere un Dockerfile al progetto per un maggiore controllo sulla compilazione.Nell'output del comando prendere nota del nome del Registro Azure Container.
Ottenere l'ID risorsa completo del registro contenitori:
az acr show --name <ACR_NAME> --query id --output tsvSostituire
<ACR_NAME>con il nome del registro.Abilitare l'identità gestita per l'app contenitore:
az containerapp identity assign \ --name my-container-app \ --resource-group my-container-app-rg \ --system-assignedPrendere nota dell'ID principale dell'identità gestita nell'output del comando.
Assegnare il ruolo
AcrPullper il registro contenitori all'identità gestita dell'app contenitore:az role assignment create \ --assignee <MANAGED_IDENTITY_PRINCIPAL_ID> \ --role AcrPull \ --scope <ACR_RESOURCE_ID>Sostituire
<MANAGED_IDENTITY_PRINCIPAL_ID>con l'ID entità dell'identità gestita e<ACR_RESOURCE_ID>con l'ID risorsa del Registro Container.Configurare l'applicazione container per utilizzare l'identità gestita per pullare le immagini dal registro container.
az containerapp registry set \ --name my-container-app \ --resource-group my-container-app-rg \ --server <ACR_NAME>.azurecr.io \ --identity systemSostituire
<ACR_NAME>con il nome del registro Azure Container.
Creare una connessione al servizio Azure DevOps
Per eseguire la distribuzione in Container Apps, devi creare una connessione di servizio Azure DevOps per il tuo abbonamento Azure.
In Azure DevOps, seleziona Impostazioni di progetto.
Selezionare Connessioni al servizio.
Seleziona Crea connessione al servizio.
Selezionare Azure Resource Manager, quindi selezionare Avanti.
Selezionare Registrazione app (automatica) e quindi selezionare Avanti.
Specificare i valori seguenti e quindi selezionare Salva:
Campo valore Abbonamento Seleziona la tua sottoscrizione di Azure. Gruppo di risorse Selezionare il gruppo di risorse ( my-container-app-rg) che contiene l'app contenitore e il registro contenitori.Nome della connessione al servizio my-subscription-service-connection
Per altre informazioni sulle connessioni al servizio, vedere Connettersi a Microsoft Azure.
Creare una pipeline YAML di Azure DevOps
Nel progetto Azure DevOps selezionare Pipeline.
Selezionare Crea pipeline.
Selezionare Azure Repos Git.
Annotazioni
Se Azure Repos Git non è disponibile come opzione, assicurarsi che il codice sorgente venga inserito in un repository Git nel progetto Azure DevOps.
Selezionare il repository che contiene il codice sorgente (
my-container-app).Selezionare Pipeline iniziale.
Nell'editor sostituire il contenuto del file con il codice YAML seguente:
trigger: branches: include: - main pool: vmImage: ubuntu-latest steps: - task: AzureContainerApps@1 inputs: appSourcePath: '$(Build.SourcesDirectory)/src' azureSubscription: '<AZURE_SUBSCRIPTION_SERVICE_CONNECTION>' acrName: '<ACR_NAME>' containerAppName: 'my-container-app' resourceGroup: 'my-container-app-rg'Sostituire
<AZURE_SUBSCRIPTION_SERVICE_CONNECTION>con il nome della connessione al servizio Azure DevOps (my-subscription-service-connection) creata nel passaggio precedente. Sostituire<ACR_NAME>con il nome del registro Azure Container.Seleziona Salva ed Esegui.
Un processo di Azure Pipelines inizia a compilare e distribuire la tua applicazione container. Per controllare lo stato di avanzamento, passare a Pipeline e selezionare l'esecuzione. Durante la prima esecuzione della pipeline, potrebbe essere richiesto di autorizzare l'uso della connessione di servizio da parte della pipeline.
Per distribuire una nuova revisione dell'app, eseguire il push di un nuovo commit nel ramo principale.