Share via


Zelfstudie: Een Java-app implementeren in een virtuele-machineschaalset

Azure DevOps Services

Met een virtuele-machineschaalset kunt u identieke, automatisch schalende virtuele machines implementeren en beheren.

Virtuele machines worden in een schaalset gemaakt als dat nodig is. U definieert regels om te bepalen hoe en wanneer VM's worden toegevoegd aan of verwijderd uit de schaalset. Deze regels kunnen worden geactiveerd op basis van de metrische gegevens zoals CPU-belasting, geheugengebruik of netwerkverkeer.

In deze zelfstudie bouwt u een Java-app en implementeert u deze in een virtuele-machineschaalset. U leert het volgende:

  • Een virtuele-machineschaalset maken
  • Een machineinstallatiekopieën bouwen
  • Een aangepaste installatiekopieën implementeren in een virtuele-machineschaalset

Vereisten

Voordat u begint, hebt u het volgende nodig:

Uw Java-pijplijn instellen

  1. Meld u aan bij uw Azure DevOps-organisatie en ga naar uw project.

  2. Ga naar Pijplijnen en selecteer vervolgens Nieuwe pijplijn of Pijplijn maken als u uw eerste pijplijn maakt.

  3. Voer de stappen van de wizard uit door eerst GitHub te selecteren als de locatie van uw broncode.

  4. U wordt mogelijk omgeleid naar GitHub om u aan te melden. Voer in dat geval uw GitHub-referenties in.

  5. Wanneer u de lijst met opslagplaatsen ziet, selecteert u de opslagplaats.

  6. U wordt mogelijk omgeleid naar GitHub om de Azure Pipelines-app te installeren. Als dat het zo is, selecteert u Goedkeuren en installeren.

Wanneer het tabblad Configureren wordt weergegeven, selecteert u Maven.

De pijplijn aanpassen

  1. Wanneer uw nieuwe pijplijn wordt weergegeven, bekijkt u de YAML om te zien wat deze doet. Wanneer u klaar bent, selecteert u Opslaan en uitvoeren.

    Save and run button in a new YAML pipeline

  2. U wordt gevraagd een nieuw azure-pipelines.yml-bestand door te voeren naar uw opslagplaats. Nadat u tevreden bent met het bericht, selecteert u Opslaan en opnieuw uitvoeren .

    Als u de pijplijn in actie wilt bekijken, selecteert u de buildtaak.

    U hebt zojuist een pijplijn gemaakt en uitgevoerd die automatisch voor u is gemaakt, omdat uw code een goede overeenkomst leek voor de Maven-sjabloon .

    U hebt nu een werkende YAML-pijplijn (azure-pipelines.yml) in uw opslagplaats die u kunt aanpassen.

  3. Wanneer u klaar bent om wijzigingen aan te brengen in uw pijplijn, selecteert u deze op de pagina Pijplijnen en bewerkt u het azure-pipelines.yml bestand.

De taken Voor het kopiëren van bestanden en het publiceren van buildartefacten toevoegen

  1. Werk uw pijplijn bij om de CopyFiles@2 taak op te nemen. Hiermee maakt u een artefact dat u kunt implementeren in uw virtuele-machineschaalset.

      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  
    

Een aangepaste installatiekopieën maken en uploaden naar Azure

U hebt een resourcegroep, opslagaccount en galerie met gedeelde installatiekopieën nodig voor uw aangepaste installatiekopieën.

  1. Maak een resourcegroep maken met az group create. In dit voorbeeld wordt een resourcegroep met de naam myVMSSResourceGroup gemaakt op de locatie eastus2 :

    az group create --name myVMSSResourceGroup --location eastus2
    
  2. Maak een nieuw opslagaccount. In dit voorbeeld wordt een opslagaccount gemaakt. vmssstorageaccount

    az storage account create \
      --name vmssstorageaccount \
      --resource-group myVMSSResourceGroup \
      --location eastus2 \
      --sku Standard_LRS 
    
  3. Maak een galerie met gedeelde installatiekopieën.

    az sig create --resource-group myVMSSResourceGroup --gallery-name myVMSSGallery
    
  4. Maak een nieuwe installatiekopieëngalerie in de myVMSSGallery resource. Zie Een galerie met gedeelde azure-installatiekopieën maken met behulp van de portal voor meer informatie over het werken met afbeeldingengalerieën.

    az sig create --resource-group myVMSSResourceGroup --gallery-name myVMSSGallery
    
  5. Maak een definitie van een installatiekopieën. Kopieer de id nieuwe afbeelding die er als /subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>/providers/Microsoft.Compute/galleries/myVMSSGallery/images/MyImagevolgt uitziet.

    az sig image-definition create -g myVMSSResourceGroup --gallery-name myVMSSGallery --gallery-image-definition MyImage --publisher GreatPublisher --offer GreatOffer --sku GreatSku --os-type linux
    

Een beheerde identiteit maken

  1. Maak een beheerde identiteit in uw resourcegroep.

    az identity create -g myVMSSResourceGroup -n myVMSSIdentity
    
  2. Kopieer de iduitvoer. De id zal er als /subscriptions/<SUBSCRIPTION ID>/resourcegroups/<RESOURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<USER ASSIGNED IDENTITY NAME>volgt uitzien.

  3. Open uw afbeeldingengalerie in de galerie en wijs de rol Inzender toe myVMSSIdentity . Volg deze stappen om een roltoewijzing toe te voegen.

De aangepaste installatiekopieën maken

Als u een aangepaste installatiekopieën wilt maken, kunt u de DevOps-taak azure VM Image Builder gebruiken.

  1. Voeg de AzureImageBuilderTask@1 taak toe aan uw YAML-bestand. Vervang de waarden voor <SUBSCRIPTION ID>, <RESOURCE GROUP>door <USER ASSIGNED IDENTITY NAME> uw eigen waarden. Zorg ervoor dat u controleert of de waarden managedIdentity en storageAccountName waarden galleryImageIdjuist zijn.

    - 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. Voer de pijplijn uit om uw eerste installatiekopieën te genereren. Mogelijk moet u resources autoriseren tijdens de pijplijnuitvoering.

  3. Ga naar de nieuwe installatiekopieën in Azure Portal en open Overzicht. Selecteer VMSS maken om een nieuwe virtuele-machineschaalset te maken op basis van de nieuwe installatiekopieën. Stel de naam van de virtuele-machineschaalset in op vmssScaleSet. Zie Een virtuele-machineschaalset maken in Azure Portal voor meer informatie over het maken van virtuele-machineschaalsets in Azure Portal.

Updates implementeren in de virtuele-machineschaalset

Voeg een Azure CLI-taak toe aan uw pijplijn om updates voor de schaalset te implementeren. Voeg de taak toe aan het einde van de pijplijn. Vervang door <SUBSCRIPTION ID> uw abonnements-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)'

Resources opschonen

Ga naar Azure Portal en verwijder uw resourcegroep. myVMSSResourceGroup

Volgende stappen