자습서: 가상 머신 확장 집합에 Java 앱 배포
Azure DevOps Services
가상 머신 확장 집합을 사용하면 동일한 자동 크기 조정 가상 머신을 배포하고 관리할 수 있습니다.
VM은 확장 집합에서 필요에 따라 만들어집니다. 확장 집합에서 VM을 추가하거나 제거하는 방법과 시기를 제어하는 규칙을 정의합니다. 이러한 규칙은 메트릭(예: CPU 부하, 메모리 사용량 또는 네트워크 트래픽)을 기반으로 트리거할 수 있습니다.
이 자습서에서는 Java 앱을 빌드하고 가상 머신 확장 집합에 배포합니다. 다음 방법에 대해 설명합니다.
- 가상 머신 확장 집합 만들기
- 컴퓨터 이미지 빌드
- 가상 머신 확장 집합에 사용자 지정 이미지 배포
필수 조건
시작하기 전에 다음이 필요합니다.
- 활성 구독이 있는 Azure 계정. 체험 계정을 만듭니다.
- 활성 Azure DevOps 조직. Azure Pipelines에 가입합니다.
- DevOps 조직에 대해 설치된 Azure VM Image Builder DevOps 작업입니다.
- 예제 프로젝트가 포함된 분기된 GitHub 리포지토리입니다. 파이프라인-vmss 리포지토리를 포크 합니다.
Java 파이프라인 설정
Azure DevOps 조직에 로그인하고, 프로젝트로 이동합니다.
파이프라인으로 이동한 다음 새 파이프라인을 선택하거나 첫 번째 파이프라인을 만드는 경우 파이프라인 만들기를 선택합니다.
먼저 소스 코드의 위치로 GitHub 선택하여 마법사의 단계를 수행합니다.
로그인할 GitHub로 리디렉션될 수 있습니다. 그렇다면 GitHub 자격 증명을 입력합니다.
리포지토리 목록이 표시되면 리포지토리를 선택합니다.
Azure Pipelines 앱을 설치하도록 GitHub로 리디렉션될 수 있습니다. 그렇다면 승인 및 설치를 선택합니다.
구성 탭이 나타나면 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를 사용하여 리소스 그룹을 만듭니다. 이 예제에서는 eastus2 위치에 myVMSSResourceGroup이라는 리소스 그룹을 만듭니다.
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
관리 ID 만들기
리소스 그룹에 관리 ID를 만듭니다.
az identity create -g myVMSSResourceGroup -n myVMSSIdentity
출력
id
에서 . 는id
다음과 같습니다/subscriptions/<SUBSCRIPTION ID>/resourcegroups/<RESOURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<USER ASSIGNED IDENTITY NAME>
.갤러리에서 이미지 갤러리를 열고 기여자 역할을 할당
myVMSSIdentity
합니다. 다음 단계에 따라 역할 할당을 추가합니다.
사용자 지정 이미지 만들기
사용자 지정 이미지를 만들려면 Azure VM Image Builder DevOps 작업을 사용할 수 있습니다.
AzureImageBuilderTask@1
YAML 파일에 작업을 추가합니다. 에 대한<SUBSCRIPTION ID>
<RESOURCE GROUP>
<USER ASSIGNED IDENTITY NAME>
값을 사용자 고유의 값으로 바꿉습니다. 및managedIdentity
storageAccountName
값이galleryImageId
정확한지 확인합니다.- 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 Portal에서 새 이미지로 이동하여 개요를 엽니다. VMSS 만들기를 선택하여 새 이미지에서 새 가상 머신 확장 집합을 만듭니다. 가상 머신 확장 집합 이름을 .로
vmssScaleSet
설정합니다. Azure Portal에서 가상 머신 확장 집합을 만드는 방법에 대한 자세한 내용은 Azure Portal에서 가상 머신 확장 집합 만들기를 참조하세요.
가상 머신 확장 집합에 업데이트 배포
확장 집합에 업데이트를 배포하기 위해 파이프라인에 Azure CLI 작업을 추가합니다. 파이프라인의 끝에 작업을 추가합니다. 구독 ID로 대체 <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 Portal로 이동하여 리소스 그룹을 myVMSSResourceGroup
삭제합니다.
다음 단계
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기