Руководство. Развертывание приложения Java в масштабируемом наборе виртуальных машин

Azure DevOps Services

Масштабируемый набор виртуальных машин позволяет развертывать идентичные виртуальные машины автомасштабирования и управлять ими.

Виртуальные машины создаются в масштабируемом наборе по мере необходимости. Вы определяете правила для управления тем, как и когда виртуальные машины добавляются или удаляются из масштабируемого набора. Эти правила могут активироваться на основе таких метрик, как использование ЦП, использование памяти или сетевой трафик.

В этом руководстве вы создадите приложение Java и развернете его в масштабируемом наборе виртуальных машин. Узнайте следующие темы:

  • Создание масштабируемого набора виртуальных машин
  • Создание образа компьютера
  • Развертывание пользовательского образа в масштабируемом наборе виртуальных машин

Необходимые компоненты

Для этого потребуются следующие компоненты.

Настройка конвейера Java

  1. Войдите в свою организацию Azure DevOps и откройте нужный проект.

  2. Перейдите к конвейерам и выберите "Создать конвейер" или "Создать конвейер" при создании первого конвейера.

  3. Выполните все шаги мастера, выбрав GitHub в качестве расположения исходного кода.

  4. Возможно, вам придется выполнить вход в GitHub. Для этого введите учетные данные GitHub.

  5. Когда появится список репозиториев, выберите свой.

  6. Вы можете перенаправиться на GitHub, чтобы установить приложение Azure Pipelines. В этом случае выберите " Утвердить" и "Установить".

Когда появится вкладка "Настройка" , выберите Maven.

Настройка конвейера

  1. Когда появится новый конвейер, просмотрите YAML, чтобы узнать функциональность. Когда будете готовы, выберите Сохранить и запустить.

    Save and run button in a new YAML pipeline

  2. Вам будет предложено зафиксировать новый файл azure-pipelines.yml в репозиторий. После того как вы будете довольны сообщением, нажмите кнопку "Сохранить и снова запустить ".

    Если вы хотите посмотреть конвейер в действии, выберите задание сборки.

    Вы только что создали и запустили конвейер, который мы автоматически создали для вас, так как код, как представляется, является хорошим совпадением для шаблона Maven .

    Теперь у вас есть рабочий конвейер YAML (azure-pipelines.yml) в репозитории, готовый к настройке!

  3. Когда вы будете готовы внести изменения в конвейер, выберите его на странице конвейеров и изменитеazure-pipelines.yml файл.

Добавление задач копирования файлов и публикации артефактов сборки

  1. Обновите конвейер, чтобы включить CopyFiles@2 задачу. Это создаст артефакт, который можно развернуть в масштабируемом наборе виртуальных машин.

      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  
    

Создание пользовательского образа и его отправка в Azure

Вам потребуется группа ресурсов, учетная запись хранения и общая коллекция образов для пользовательского образа.

  1. Создайте группу ресурсов с помощью команды az group create. В этом примере создается группа ресурсов с именем myVMSSResourceGroup в расположении eastus2 :

    az group create --name myVMSSResourceGroup --location eastus2
    
  2. Создайте учетную запись хранения. В этом примере создается учетная запись хранения. vmssstorageaccount

    az storage account create \
      --name vmssstorageaccount \
      --resource-group myVMSSResourceGroup \
      --location eastus2 \
      --sku Standard_LRS 
    
  3. Создайте общую коллекцию образов.

    az sig create --resource-group myVMSSResourceGroup --gallery-name myVMSSGallery
    
  4. Создайте новую коллекцию образов в ресурсе myVMSSGallery . Дополнительные сведения о работе с коллекциями образов см. в статье "Создание Общая коллекция образов Azure с помощью портала".

    az sig create --resource-group myVMSSResourceGroup --gallery-name myVMSSGallery
    
  5. Создайте определение образа id Скопируйте новый образ, который выглядит следующим /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
    

Создание управляемого удостоверения

  1. Создайте управляемое удостоверение в группе ресурсов.

    az identity create -g myVMSSResourceGroup -n myVMSSIdentity
    
  2. Скопируйте idданные из выходных данных. Будет id выглядеть следующим /subscriptions/<SUBSCRIPTION ID>/resourcegroups/<RESOURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<USER ASSIGNED IDENTITY NAME>образом.

  3. Откройте коллекцию образов в коллекции и назначьте myVMSSIdentity роль участника. Выполните следующие действия, чтобы добавить назначение ролей.

Создание пользовательского образа

Чтобы создать пользовательский образ, можно использовать задачу DevOps построителя образов виртуальных машин Azure.

  1. Добавьте задачу в AzureImageBuilderTask@1 файл YAML. Замените значения для <SUBSCRIPTION ID>, <RESOURCE GROUP><USER ASSIGNED IDENTITY NAME> собственным. Убедитесь, что galleryImageIdmanagedIdentity значения и storageAccountName значения являются точными.

    - 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. Запустите конвейер, чтобы создать первый образ. Во время выполнения конвейера может потребоваться авторизовать ресурсы .

  3. Перейдите к новому изображению в портал Azure и откройте обзор. Выберите "Создать VMSS" , чтобы создать масштабируемый набор виртуальных машин из нового образа. Задайте для имени масштабируемого набора виртуальных машин значениеvmssScaleSet. Дополнительные сведения о создании масштабируемых наборов виртуальных машин см. в портал Azure, чтобы узнать больше о создании масштабируемых наборов виртуальных машин в портал Azure.

Развертывание обновлений в масштабируемом наборе виртуальных машин

Добавьте задачу Azure CLI в конвейер для развертывания обновлений в масштабируемом наборе. Добавьте задачу в конце конвейера. Замените <SUBSCRIPTION 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)'

Очистка ресурсов

Перейдите к портал Azure и удалите группу myVMSSResourceGroupресурсов.

Следующие шаги