자습서: 가상 머신 확장 집합에 Java 앱 배포

Azure DevOps Services

가상 머신 확장 집합사용하면 동일한 자동 크기 조정 가상 머신을 배포하고 관리할 수 있습니다.

VM은 확장 집합에서 필요에 따라 만들어집니다. 확장 집합에서 VM을 추가하거나 제거하는 방법과 시기를 제어하는 규칙을 정의합니다. 이러한 규칙은 메트릭(예: CPU 부하, 메모리 사용량 또는 네트워크 트래픽)을 기반으로 트리거할 수 있습니다.

이 자습서에서는 Java 앱을 빌드하고 가상 머신 확장 집합에 배포합니다. 다음 방법에 대해 설명합니다.

  • 가상 머신 확장 집합 만들기
  • 컴퓨터 이미지 빌드
  • 가상 머신 확장 집합에 사용자 지정 이미지 배포

필수 조건

시작하기 전에 다음이 필요합니다.

Java 파이프라인 설정

  1. Azure DevOps 조직에 로그인하고, 프로젝트로 이동합니다.

  2. 파이프라인으로 이동한 다음 새 파이프라인을 선택하거나 첫 번째 파이프라인을 만드는 경우 파이프라인 만들기를 선택합니다.

  3. 먼저 소스 코드의 위치로 GitHub 선택하여 마법사의 단계를 수행합니다.

  4. 로그인할 GitHub로 리디렉션될 수 있습니다. 그렇다면 GitHub 자격 증명을 입력합니다.

  5. 리포지토리 목록이 표시되면 리포지토리를 선택합니다.

  6. Azure Pipelines 앱을 설치하도록 GitHub로 리디렉션될 수 있습니다. 그렇다면 승인 및 설치를 선택합니다.

구성 탭이 나타나면 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를 사용하여 리소스 그룹을 만듭니다. 이 예제에서는 eastus2 위치에 myVMSSResourceGroup이라는 리소스 그룹을 만듭니다.

    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
    

관리 ID 만들기

  1. 리소스 그룹에 관리 ID를 만듭니다.

    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 합니다. 다음 단계에 따라 역할 할당을 추가합니다.

사용자 지정 이미지 만들기

사용자 지정 이미지를 만들려면 Azure VM Image Builder DevOps 작업을 사용할 수 있습니다.

  1. AzureImageBuilderTask@1 YAML 파일에 작업을 추가합니다. 에 대한 <SUBSCRIPTION ID><RESOURCE GROUP><USER ASSIGNED IDENTITY NAME> 값을 사용자 고유의 값으로 바꿉습니다. 및 managedIdentitystorageAccountName 값이 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'
    
  2. 파이프라인을 실행하여 첫 번째 이미지를 생성합니다. 파이프라인을 실행하는 동안 리소스에 권한을 부여해야 할 수 있습니다.

  3. 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삭제합니다.

다음 단계