Esercitazione: Distribuire un'app Java in un set di scalabilità di macchine virtuali
Servizi di Azure DevOps
Un set di scalabilità di macchine virtuali consente di distribuire e gestire macchine virtuali identiche e con scalabilità automatica.
Le VM vengono create in base alle esigenze in un set di scalabilità. È possibile definire regole per controllare come e quando le macchine virtuali vengono aggiunte o rimosse dal set di scalabilità. Queste regole possono essere attivate in base a determinate metriche, ad esempio il carico della CPU, l'utilizzo della memoria o il traffico di rete.
In questa esercitazione si compila un'app Java e la si distribuisce in un set di scalabilità di macchine virtuali. Scopri come:
- Creare un set di scalabilità di macchine virtuali
- Creare un'immagine del computer
- Distribuire un'immagine personalizzata in un set di scalabilità di macchine virtuali
Prerequisiti
Prima di iniziare, è necessario disporre di quanto segue:
- Un account Azure con una sottoscrizione attiva. Creare un account gratuitamente.
- Un'organizzazione di Azure DevOps attiva. Iscriversi ad Azure Pipelines.
- L'attività DevOps di Image Builder di macchine virtuali di Azure installata per l'organizzazione DevOps.
- Repository GitHub con fork con il progetto di esempio. Creare una copia tramite fork del repository pipelines-vmss.
Configurare la pipeline Java
Accedere all'organizzazione di Azure DevOps e passare al progetto.
Passare a Pipeline e quindi selezionare Nuova pipeline o Crea pipeline se si crea la prima pipeline.
Eseguire i passaggi della procedura guidata selezionando prima GitHub come percorso del codice sorgente.
Si potrebbe essere reindirizzati a GitHub per l'accesso. In questo caso, immettere le credenziali di GitHub.
Quando si vede l’elenco dei repository, selezionarne uno.
È possibile che si venga reindirizzati a GitHub per installare l'app Azure Pipelines. In tal caso, selezionare Approva e installa.
Quando viene visualizzata la scheda Configura , selezionare Maven.
Personalizzare la pipeline
Quando viene visualizzata la nuova pipeline, vedere YAML per vedere cosa fa. Quando si è pronti, selezionare Salva ed esegui.
Viene richiesto di eseguire il commit di un nuovo file azure-pipelines.yml nel repository. Dopo aver soddisfatto il messaggio, selezionare Salva ed esegui di nuovo.
Se si vuole controllare la pipeline in azione, selezionare il processo di compilazione.
È stata appena creata ed eseguita una pipeline creata automaticamente, perché il codice sembrava essere una corrispondenza valida per il modello Maven .
È ora disponibile una pipeline YAML funzionante (
azure-pipelines.yml
) nel repository che è pronta per la personalizzazione.Quando si è pronti per apportare modifiche alla pipeline, selezionarla nella pagina Pipeline e quindi Modificare il
azure-pipelines.yml
file.
Aggiungere le attività Copia file e Pubblica artefatto di compilazione
Aggiornare la pipeline per includere l'attività
CopyFiles@2
. Verrà creato un artefatto che è possibile distribuire nel set di scalabilità di macchine virtuali.trigger: none pool: vmImage: 'ubuntu-latest' steps: - task: Maven@4 inputs: mavenPomFile: 'pom.xml' mavenOptions: '-Xmx3072m' javaHomeOption: 'JDKVersion' jdkVersionOption: '1.8' jdkArchitectureOption: 'x64' publishJUnitResults: true testResultsFiles: '**/surefire-reports/TEST-*.xml' goals: 'package' - task: CopyFiles@2 displayName: 'Copy File to: $(TargetFolder)' inputs: SourceFolder: '$(Build.SourcesDirectory)' Contents: | **/*.sh **/*.war **/*jar-with-dependencies.jar TargetFolder: '$(System.DefaultWorkingDirectory)/pipeline-artifacts/' flattenFolders: true
Creare un'immagine personalizzata e caricarla in Azure
Per l'immagine personalizzata sono necessari un gruppo di risorse, un account di archiviazione e una raccolta di immagini condivise.
Come prima cosa creare un gruppo di risorse con az group create. Questo esempio crea un gruppo di risorse denominato myVMSSResourceGroup nella località eastus2 :
az group create --name myVMSSResourceGroup --location eastus2
Creare un nuovo account di archiviazione. In questo esempio viene creato un account di archiviazione,
vmssstorageaccount
.az storage account create \ --name vmssstorageaccount \ --resource-group myVMSSResourceGroup \ --location eastus2 \ --sku Standard_LRS
Creare una raccolta di immagini condivise.
az sig create --resource-group myVMSSResourceGroup --gallery-name myVMSSGallery
Creare una nuova raccolta immagini nella
myVMSSGallery
risorsa. Per altre informazioni sull'uso delle raccolte di immagini, vedere Creare un Raccolta immagini condivise di Azure usando il portale.az sig create --resource-group myVMSSResourceGroup --gallery-name myVMSSGallery
Creare una definizione di immagine. Copiare l'oggetto
id
della nuova immagine simile a/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>/providers/Microsoft.Compute/galleries/myVMSSGallery/images/MyImage
.az sig image-definition create -g myVMSSResourceGroup --gallery-name myVMSSGallery --gallery-image-definition MyImage --publisher GreatPublisher --offer GreatOffer --sku GreatSku --os-type linux
Creare un'identità gestita
Creare un'identità gestita nel gruppo di risorse.
az identity create -g myVMSSResourceGroup -n myVMSSIdentity
Nell'output copiare .
id
L'oggettoid
avrà un aspetto simile/subscriptions/<SUBSCRIPTION ID>/resourcegroups/<RESOURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<USER ASSIGNED IDENTITY NAME>
a .Aprire la raccolta immagini nella raccolta e assegnare
myVMSSIdentity
il ruolo Collaboratore. Seguire questa procedura per aggiungere un'assegnazione di ruolo.
Creare l'immagine personalizzata
Per creare un'immagine personalizzata, è possibile usare l'attività DevOps di Image Builder di macchine virtuali di Azure.
Aggiungere l'attività
AzureImageBuilderTask@1
al file YAML. Sostituire i valori per<SUBSCRIPTION ID>
,<RESOURCE GROUP>
,<USER ASSIGNED IDENTITY NAME>
con i propri. Assicurarsi di verificare che igalleryImageId
valori emanagedIdentity
storageAccountName
siano accurati.- task: AzureImageBuilderTask@1 displayName: 'Azure VM Image Builder Task' inputs: managedIdentity: '/subscriptions/<SUBSCRIPTION ID>/resourcegroups/<RESOURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<USER ASSIGNED IDENTITY NAME>' imageSource: 'marketplace' packagePath: '$(System.DefaultWorkingDirectory)/pipeline-artifacts' inlineScript: | sudo mkdir /lib/buildArtifacts sudo cp "/tmp/pipeline-artifacts.tar.gz" /lib/buildArtifacts/. cd /lib/buildArtifacts/. sudo tar -zxvf pipeline-artifacts.tar.gz sudo sh install.sh storageAccountName: 'vmssstorageaccount2' distributeType: 'sig' galleryImageId: '/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>/providers/Microsoft.Compute/galleries/myVMSSGallery/images/MyImage/versions/0.0.$(Build.BuildId)' replicationRegions: 'eastus2' ibSubscription: '<SUBSCRIPTION ID>' ibAzureResourceGroup: 'myVMSSResourceGroup' ibLocation: 'eastus2'
Eseguire la pipeline per generare la prima immagine. Potrebbe essere necessario autorizzare le risorse durante l'esecuzione della pipeline.
Passare alla nuova immagine nel portale di Azure e aprire Panoramica. Selezionare Crea set di scalabilità di macchine virtuali per creare un nuovo set di scalabilità di macchine virtuali dalla nuova immagine. Impostare Il nome del set di scalabilità di macchine virtuali su
vmssScaleSet
. Per altre informazioni sulla creazione di set di scalabilità di macchine virtuali nel portale di Azure, vedere Creare un set di scalabilità di macchine virtuali nel portale di Azure.
Distribuire gli aggiornamenti nel set di scalabilità di macchine virtuali
Aggiungere un'attività dell'interfaccia della riga di comando di Azure alla pipeline per distribuire gli aggiornamenti al set di scalabilità. Aggiungere l'attività alla fine della pipeline. Sostituire <SUBSCRIPTION ID>
con l'ID della sottoscrizione.
- task: AzureCLI@2
inputs:
azureSubscription: '`YOUR_SUBSCRIPTION_ID`' #Authorize and in the task editor
ScriptType: 'pscore'
scriptLocation: 'inlineScript'
Inline: 'az vmss update --resource-group myVMSSResourceGroup --name vmssScaleSet --set virtualMachineProfile.storageProfile.imageReference.id=/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myVMSSResourceGroup/providers/Microsoft.Compute/galleries/myVMSSGallery/images/MyImage/versions/0.0.$(Build.BuildId)'
Pulire le risorse
Passare al portale di Azure ed eliminare il gruppo di risorse, myVMSSResourceGroup
.
Passaggi successivi
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per