Dela via


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:

Konfigurera din Java-pipeline

  1. Logga in på din Azure DevOps-organisation och gå till projektet.

  2. Gå till Pipelines och välj sedan Ny pipeline eller Skapa pipeline om du skapar din första pipeline.

  3. Utför stegen i guiden genom att först välja GitHub som plats för källkoden.

  4. Du kan omdirigeras till GitHub för att logga in. I så fall anger du dina GitHub-autentiseringsuppgifter.

  5. När du ser listan över lagringsplatser väljer du din lagringsplats.

  6. 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

  1. 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.

    Save and run button in a new YAML pipeline

  2. 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!

  3. När du är redo att göra ändringar i din pipeline väljer du den på sidan Pipelines och sedan Redigeraazure-pipelines.yml filen.

Lägg till aktiviteterna Kopiera filer och Publicera kompilera artefakt

  1. 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.

  1. 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
    
  2. 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 
    
  3. Skapa ett delat bildgalleri.

    az sig create --resource-group myVMSSResourceGroup --gallery-name myVMSSGallery
    
  4. 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
    
  5. 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

  1. Skapa en hanterad identitet i resursgruppen.

    az identity create -g myVMSSResourceGroup -n myVMSSIdentity
    
  2. Från utdata kopierar du id. Kommer id att se ut som /subscriptions/<SUBSCRIPTION ID>/resourcegroups/<RESOURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<USER ASSIGNED IDENTITY NAME>.

  3. Ö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.

  1. 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 att galleryImageIdvärdena och managedIdentitystorageAccountName ä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'
    
  2. Kör pipelinen för att generera din första avbildning. Du kan behöva auktorisera resurser under pipelinekörningen.

  3. 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