Självstudie: Distribuera en Java-app till en VM-skalningsuppsättning
Azure DevOps Services
Med en vm-skalningsuppsättning kan du distribuera och hantera identiska virtuella datorer med automatisk skalning.
Virtuella datorer skapas efter behov i en skalningsuppsättning. Du definierar regler för att styra hur och när virtuella datorer läggs till eller tas bort från skalningsuppsättningen. De här reglerna kan utlösas baserat på mått som CPU-belastning, minnesanvändning eller nätverkstrafik.
I den här självstudien skapar du en Java-app och distribuerar den till en VM-skalningsuppsättning. Du lär dig att:
- Skapa en VM-skalningsuppsättning
- Skapa en datorbild
- Distribuera en anpassad avbildning till en VM-skalningsuppsättning
Förutsättningar
Innan du börjar behöver du:
- Ett Azure-konto med en aktiv prenumeration. Skapa ett konto utan kostnad.
- En aktiv Azure DevOps-organisation. Registrera dig för Azure Pipelines.
- Azure VM Image Builder DevOps-uppgiften installerad för din DevOps-organisation.
- En förgrenad GitHub-lagringsplats med exempelprojektet. Förgrena lagringsplatsen pipelines-vmss.
Konfigurera din Java-pipeline
Logga in på din Azure DevOps-organisation och gå till projektet.
Gå till Pipelines och välj sedan Ny pipeline eller Skapa pipeline om du skapar din första pipeline.
Utför stegen i guiden genom att först välja GitHub som plats för källkoden.
Du kan omdirigeras till GitHub för att logga in. I så fall anger du dina GitHub-autentiseringsuppgifter.
När du ser listan över lagringsplatser väljer du din lagringsplats.
Du kan omdirigeras till GitHub för att installera Azure Pipelines-appen. I så fall väljer du Godkänn och installera.
När fliken Konfigurera visas väljer du Maven.
Anpassa pipelinen
När den nya pipelinen visas tar du en titt på YAML för att se vad den gör. När du är klar väljer du Spara och kör.
Du uppmanas att checka in en ny azure-pipelines.yml fil till lagringsplatsen. När du är nöjd med meddelandet väljer du Spara och kör igen.
Om du vill se din pipeline i praktiken väljer du byggjobbet.
Du har precis skapat och kört en pipeline som vi skapade automatiskt åt dig, eftersom koden verkade vara en bra matchning för Maven-mallen .
Nu har du en fungerande YAML-pipeline (
azure-pipelines.yml
) på din lagringsplats som är redo att anpassas!När du är redo att göra ändringar i din pipeline väljer du den på sidan Pipelines och sedan Redigera
azure-pipelines.yml
filen.
Lägg till aktiviteterna Kopiera filer och Publicera kompilera artefakt
Uppdatera pipelinen så att den
CopyFiles@2
innehåller uppgiften. Då skapas en artefakt som du kan distribuera till vm-skalningsuppsättningen.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
Skapa en anpassad avbildning och ladda upp den till Azure
Du behöver en resursgrupp, ett lagringskonto och ett delat bildgalleri för din anpassade avbildning.
Skapa en resursgrupp med az group create. I det här exemplet skapas en resursgrupp med namnet myVMSSResourceGroup på platsen eastus2:
az group create --name myVMSSResourceGroup --location eastus2
Skapa ett nytt lagringskonto. Det här exemplet skapar ett lagringskonto,
vmssstorageaccount
.az storage account create \ --name vmssstorageaccount \ --resource-group myVMSSResourceGroup \ --location eastus2 \ --sku Standard_LRS
Skapa ett delat bildgalleri.
az sig create --resource-group myVMSSResourceGroup --gallery-name myVMSSGallery
Skapa ett nytt bildgalleri i resursen
myVMSSGallery
. Mer information om hur du arbetar med bildgallerier finns i Skapa ett Azure Shared Image Gallery med hjälp av portalen .az sig create --resource-group myVMSSResourceGroup --gallery-name myVMSSGallery
Skapa en bilddefinition. Kopiera den
id
nya bilden som ser ut som/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
Skapa en hanterad identitet
Skapa en hanterad identitet i resursgruppen.
az identity create -g myVMSSResourceGroup -n myVMSSIdentity
Från utdata kopierar du
id
. Kommerid
att se ut som/subscriptions/<SUBSCRIPTION ID>/resourcegroups/<RESOURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<USER ASSIGNED IDENTITY NAME>
.Öppna bildgalleriet i galleriet och tilldela
myVMSSIdentity
rollen Deltagare. Följ de här stegen för att lägga till en rolltilldelning.
Skapa den anpassade avbildningen
Om du vill skapa en anpassad avbildning kan du använda Azure VM Image Builder DevOps Task.
Lägg till uppgiften i
AzureImageBuilderTask@1
YAML-filen. Ersätt värdena för<SUBSCRIPTION ID>
,<RESOURCE GROUP>
,<USER ASSIGNED IDENTITY NAME>
med dina egna. Kontrollera attgalleryImageId
värdena ochmanagedIdentity
storageAccountName
är korrekta.- 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'
Kör pipelinen för att generera din första avbildning. Du kan behöva auktorisera resurser under pipelinekörningen.
Gå till den nya avbildningen i Azure-portalen och öppna Översikt. Välj Skapa VMSS för att skapa en ny VM-skalningsuppsättning från den nya avbildningen. Ange namnet på VM-skalningsuppsättningen till
vmssScaleSet
. Mer information om hur du skapar vm-skalningsuppsättningar i Azure-portalen finns i Skapa en VM-skalningsuppsättning i Azure-portalen .
Distribuera uppdateringar till vm-skalningsuppsättningen
Lägg till en Azure CLI-uppgift i pipelinen för att distribuera uppdateringar till skalningsuppsättningen. Lägg till uppgiften i slutet av pipelinen. Ersätt <SUBSCRIPTION ID>
med ditt prenumerations-ID.
- 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)'
Rensa resurser
Gå till Azure-portalen och ta bort resursgruppen. myVMSSResourceGroup
Nästa steg
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för