Samouczek: wdrażanie aplikacji Java w zestawie skalowania maszyn wirtualnych

Azure DevOps Services

Zestaw skalowania maszyn wirtualnych umożliwia wdrażanie identycznych, automatycznych maszyn wirtualnych i zarządzanie nimi.

Maszyny wirtualne są tworzone zgodnie z potrzebami w zestawie skalowania. Definiujesz reguły, aby kontrolować sposób i czas dodawania lub usuwania maszyn wirtualnych z zestawu skalowania. Reguły te mogą być wyzwalane na podstawie metryk, takich jak obciążenie procesora, użycie pamięci lub ruch sieciowy.

W tym samouczku utworzysz aplikację Java i wdrożysz ją w zestawie skalowania maszyn wirtualnych. Dowiedz się, jak odbywa się:

  • Tworzenie zestawu skalowania maszyn wirtualnych
  • Tworzenie obrazu maszyny
  • Wdrażanie obrazu niestandardowego w zestawie skalowania maszyn wirtualnych

Wymagania wstępne

Przed rozpoczęciem potrzebne są następujące elementy:

Konfigurowanie potoku języka Java

  1. Zaloguj się do organizacji usługi Azure DevOps i przejdź do projektu.

  2. Przejdź do obszaru Potoki, a następnie wybierz pozycję Nowy potok lub Utwórz potok , jeśli tworzysz pierwszy potok.

  3. Wykonaj kroki kreatora, wybierając najpierw usługę GitHub jako lokalizację kodu źródłowego.

  4. Być może nastąpi przekierowanie do usługi GitHub w celu zalogowania się. Jeśli tak, wprowadź poświadczenia usługi GitHub.

  5. Po wyświetleniu listy repozytoriów wybierz repozytorium.

  6. Możesz zostać przekierowany do usługi GitHub, aby zainstalować aplikację Azure Pipelines. Jeśli tak, wybierz pozycję Zatwierdź i zainstaluj.

Po wyświetleniu karty Konfigurowanie wybierz pozycję Maven.

Dostosowywanie potoku

  1. Gdy pojawi się nowy potok, przyjrzyj się kodowi YAML, aby zobaczyć, co robi. Gdy wszystko będzie gotowe, wybierz pozycję Zapisz i uruchom.

    Save and run button in a new YAML pipeline

  2. Zostanie wyświetlony monit o zatwierdzenie nowego pliku azure-pipelines.yml do repozytorium. Po zapoznaniu się z komunikatem wybierz pozycję Zapisz i uruchom ponownie.

    Jeśli chcesz obserwować działanie potoku, wybierz zadanie kompilacji.

    Właśnie utworzono i uruchomiono potok, który automatycznie utworzyliśmy, ponieważ kod wydawał się być dobrym dopasowaniem szablonu maven .

    Masz teraz działający potok YAML (azure-pipelines.yml) w repozytorium, który jest gotowy do dostosowania.

  3. Gdy wszystko będzie gotowe do wprowadzenia zmian w potoku, wybierz go na stronie Potoki , a następnie edytujazure-pipelines.yml plik.

Dodawanie zadań kopiowania plików i publikowania artefaktu kompilacji

  1. Zaktualizuj potok, aby uwzględnić CopyFiles@2 zadanie. Spowoduje to utworzenie artefaktu, który można wdrożyć w zestawie skalowania maszyn wirtualnych.

      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  
    

Tworzenie obrazu niestandardowego i przekazywanie go na platformę Azure

Musisz mieć grupę zasobów, konto magazynu i galerię obrazów udostępnionych dla niestandardowego obrazu.

  1. Utwórz grupę zasobów za pomocą polecenia az group create. W tym przykładzie utworzono grupę zasobów o nazwie myVMSSResourceGroup w lokalizacji eastus2 :

    az group create --name myVMSSResourceGroup --location eastus2
    
  2. Utwórz nowe konto magazynu. W tym przykładzie zostanie utworzone konto magazynu. vmssstorageaccount

    az storage account create \
      --name vmssstorageaccount \
      --resource-group myVMSSResourceGroup \
      --location eastus2 \
      --sku Standard_LRS 
    
  3. Utwórz galerię obrazów udostępnionych.

    az sig create --resource-group myVMSSResourceGroup --gallery-name myVMSSGallery
    
  4. Utwórz nową galerię obrazów w zasobie myVMSSGallery . Zobacz Tworzenie galerii obrazów udostępnionych platformy Azure przy użyciu portalu , aby dowiedzieć się więcej na temat pracy z galeriami obrazów.

    az sig create --resource-group myVMSSResourceGroup --gallery-name myVMSSGallery
    
  5. Utwórz definicję obrazu. id Skopiuj nowy obraz, który wygląda następująco: /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
    

Tworzenie tożsamości zarządzanej

  1. Utwórz tożsamość zarządzaną w grupie zasobów.

    az identity create -g myVMSSResourceGroup -n myVMSSIdentity
    
  2. Z danych wyjściowych skopiuj element id. Element id będzie wyglądać następująco: /subscriptions/<SUBSCRIPTION ID>/resourcegroups/<RESOURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<USER ASSIGNED IDENTITY NAME>.

  3. Otwórz galerię obrazów w galerii i przypisz myVMSSIdentity rolę Współautor. Wykonaj następujące kroki, aby dodać przypisanie roli.

Tworzenie obrazu niestandardowego

Aby utworzyć obraz niestandardowy, możesz użyć zadania DevOps konstruktora obrazów maszyny wirtualnej platformy Azure.

  1. AzureImageBuilderTask@1 Dodaj zadanie do pliku YAML. Zastąp wartości , <SUBSCRIPTION ID>własnymi<RESOURCE GROUP><USER ASSIGNED IDENTITY NAME>. Upewnij się, że galleryImageIdmanagedIdentity wartości i są storageAccountName dokładne.

    - 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. Uruchom potok, aby wygenerować pierwszy obraz. Może być konieczne autoryzowanie zasobów podczas uruchamiania potoku.

  3. Przejdź do nowego obrazu w witrynie Azure Portal i otwórz pozycję Przegląd. Wybierz pozycję Utwórz zestaw skalowania maszyn wirtualnych , aby utworzyć nowy zestaw skalowania maszyn wirtualnych na podstawie nowego obrazu. Ustaw nazwę zestawu skalowania maszyn wirtualnych na vmssScaleSetwartość . Zobacz Tworzenie zestawu skalowania maszyn wirtualnych w witrynie Azure Portal , aby dowiedzieć się więcej na temat tworzenia zestawów skalowania maszyn wirtualnych w witrynie Azure Portal.

Wdrażanie aktualizacji w zestawie skalowania maszyn wirtualnych

Dodaj zadanie interfejsu wiersza polecenia platformy Azure do potoku, aby wdrożyć aktualizacje w zestawie skalowania. Dodaj zadanie na końcu potoku. Zastąp <SUBSCRIPTION ID> ciąg identyfikatorem subskrypcji.

- 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)'

Czyszczenie zasobów

Przejdź do witryny Azure Portal i usuń grupę zasobów. myVMSSResourceGroup

Następne kroki