Руководство. Развертывание приложения Java в масштабируемом наборе виртуальных машин
Azure DevOps Services
Масштабируемый набор виртуальных машин позволяет развертывать идентичные виртуальные машины автомасштабирования и управлять ими.
Виртуальные машины создаются в масштабируемом наборе по мере необходимости. Вы определяете правила для управления тем, как и когда виртуальные машины добавляются или удаляются из масштабируемого набора. Эти правила могут активироваться на основе таких метрик, как использование ЦП, использование памяти или сетевой трафик.
В этом руководстве вы создадите приложение Java и развернете его в масштабируемом наборе виртуальных машин. Узнайте следующие темы:
- Создание масштабируемого набора виртуальных машин
- Создание образа компьютера
- Развертывание пользовательского образа в масштабируемом наборе виртуальных машин
Необходимые компоненты
Для этого потребуются следующие компоненты.
- Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .
- Активная организация Azure DevOps. Регистрация в Azure Pipelines
- Задача DevOps конструктора образов виртуальных машин Azure, установленная для организации DevOps.
- Репозиторий GitHub с примером проекта. Вилку репозитория pipelines-vmss.
Настройка конвейера Java
Войдите в свою организацию Azure DevOps и откройте нужный проект.
Перейдите к конвейерам и выберите "Создать конвейер" или "Создать конвейер" при создании первого конвейера.
Выполните все шаги мастера, выбрав GitHub в качестве расположения исходного кода.
Возможно, вам придется выполнить вход в GitHub. Для этого введите учетные данные GitHub.
Когда появится список репозиториев, выберите свой.
Вы можете перенаправиться на GitHub, чтобы установить приложение Azure Pipelines. В этом случае выберите " Утвердить" и "Установить".
Когда появится вкладка "Настройка" , выберите Maven.
Настройка конвейера
Когда появится новый конвейер, просмотрите YAML, чтобы узнать функциональность. Когда будете готовы, выберите Сохранить и запустить.
Вам будет предложено зафиксировать новый файл azure-pipelines.yml в репозиторий. После того как вы будете довольны сообщением, нажмите кнопку "Сохранить и снова запустить ".
Если вы хотите посмотреть конвейер в действии, выберите задание сборки.
Вы только что создали и запустили конвейер, который мы автоматически создали для вас, так как код, как представляется, является хорошим совпадением для шаблона Maven .
Теперь у вас есть рабочий конвейер YAML (
azure-pipelines.yml
) в репозитории, готовый к настройке!Когда вы будете готовы внести изменения в конвейер, выберите его на странице конвейеров и измените
azure-pipelines.yml
файл.
Добавление задач копирования файлов и публикации артефактов сборки
Обновите конвейер, чтобы включить
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
Вам потребуется группа ресурсов, учетная запись хранения и общая коллекция образов для пользовательского образа.
Создайте группу ресурсов с помощью команды az group create. В этом примере создается группа ресурсов с именем myVMSSResourceGroup в расположении eastus2 :
az group create --name myVMSSResourceGroup --location eastus2
Создайте учетную запись хранения. В этом примере создается учетная запись хранения.
vmssstorageaccount
az storage account create \ --name vmssstorageaccount \ --resource-group myVMSSResourceGroup \ --location eastus2 \ --sku Standard_LRS
Создайте общую коллекцию образов.
az sig create --resource-group myVMSSResourceGroup --gallery-name myVMSSGallery
Создайте новую коллекцию образов в ресурсе
myVMSSGallery
. Дополнительные сведения о работе с коллекциями образов см. в статье "Создание Общая коллекция образов Azure с помощью портала".az sig create --resource-group myVMSSResourceGroup --gallery-name myVMSSGallery
Создайте определение образа
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
Создание управляемого удостоверения
Создайте управляемое удостоверение в группе ресурсов.
az identity create -g myVMSSResourceGroup -n myVMSSIdentity
Скопируйте
id
данные из выходных данных. Будетid
выглядеть следующим/subscriptions/<SUBSCRIPTION ID>/resourcegroups/<RESOURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<USER ASSIGNED IDENTITY NAME>
образом.Откройте коллекцию образов в коллекции и назначьте
myVMSSIdentity
роль участника. Выполните следующие действия, чтобы добавить назначение ролей.
Создание пользовательского образа
Чтобы создать пользовательский образ, можно использовать задачу DevOps построителя образов виртуальных машин Azure.
Добавьте задачу в
AzureImageBuilderTask@1
файл YAML. Замените значения для<SUBSCRIPTION ID>
,<RESOURCE GROUP>
<USER ASSIGNED IDENTITY NAME>
собственным. Убедитесь, чтоgalleryImageId
managedIdentity
значения и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'
Запустите конвейер, чтобы создать первый образ. Во время выполнения конвейера может потребоваться авторизовать ресурсы .
Перейдите к новому изображению в портал 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
ресурсов.
Следующие шаги
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по