Öğretici: Sanal makine ölçek kümesine Java uygulaması dağıtma

Azure DevOps Services

Sanal makine ölçek kümesi , aynı, otomatik ölçeklendirme sanal makinelerini dağıtmanıza ve yönetmenize olanak tanır.

VM’ler, ölçek kümesinde gerektiğinde oluşturulur. VM'lerin ölçek kümesine nasıl ve ne zaman ekleneceğini veya kaldırılacağını denetlemek için kurallar tanımlarsınız. Bu kurallar, CPU yükü, bellek kullanımı veya ağ trafiği gibi ölçümlere dayalı olarak tetiklenebilir.

Bu öğreticide bir Java uygulaması oluşturacak ve bunu bir sanal makine ölçek kümesine dağıtacaksınız. Şunları yapmayı öğreneceksiniz:

  • Sanal makine ölçek kümesi oluşturma
  • Makine görüntüsü oluşturma
  • Sanal makine ölçek kümesine özel görüntü dağıtma

Önkoşullar

Başlamadan önce şunları yapmanız gerekir:

Java işlem hattınızı ayarlama

  1. Azure DevOps kuruluşunuzda oturum açın ve projenize gidin.

  2. İşlem Hatları'na gidin ve ardından yeni işlem hattı veya İlk işlem hattınızı oluşturuyorsanız işlem hattı oluştur'u seçin.

  3. İlk olarak kaynak kodunuzun konumu olarak GitHub'ı seçerek sihirbazın adımlarını uygulayın.

  4. Oturum açmak için GitHub'a yönlendirilebilirsiniz. Öyleyse GitHub kimlik bilgilerinizi girin.

  5. Depo listesini gördüğünüzde deponuzu seçin.

  6. Azure Pipelines uygulamasını yüklemek için GitHub'a yönlendirilebilirsiniz. Öyleyse Onayla ve yükle'yi seçin.

Yapılandır sekmesi görüntülendiğinde Maven'ı seçin.

İşlem hattını özelleştirme

  1. Yeni işlem hattınız görüntülendiğinde, ne yaptığını görmek için YAML'ye göz atın. Hazır olduğunuzda Kaydet ve çalıştır'ı seçin.

    Save and run button in a new YAML pipeline

  2. Deponuza yeni bir azure-pipelines.yml dosyası işlemeniz istenir. İletiden memnun olduktan sonra Kaydet'i seçin ve yeniden çalıştırın .

    İşlem hattınızın nasıl çalıştığını izlemek istiyorsanız derleme işini seçin.

    Kodunuz Maven şablonuna uygun göründüğünden sizin için otomatik olarak oluşturduğumuz bir işlem hattı oluşturdunuz ve çalıştırıldınız.

    Artık deponuzda özelleştirmeniz için hazır çalışan bir YAML işlem hattı (azure-pipelines.yml) var!

  3. İşlem hattınızda değişiklik yapmaya hazır olduğunuzda İşlem Hatları sayfasından seçin ve ardından Dosyayı düzenleyinazure-pipelines.yml.

Dosya Kopyalama ve Derleme Yapıtı Yayımlama görevlerini ekleme

  1. İşlem hattınızı görevi içerecek şekilde güncelleştirin CopyFiles@2 . Bu, sanal makine ölçek kümenize dağıtabileceğiniz bir yapıt oluşturur.

      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  
    

Özel görüntü oluşturma ve Azure'a yükleme

Özel görüntünüz için bir kaynak grubuna, depolama hesabına ve paylaşılan görüntü galerisine ihtiyacınız vardır.

  1. az group create ile bir kaynak grubu oluşturun. Bu örnek, eastus2 konumunda myVMSSResourceGroupadlı bir kaynak grubu oluşturur:

    az group create --name myVMSSResourceGroup --location eastus2
    
  2. Yeni bir depolama hesabı oluşturun. Bu örnek, vmssstorageaccountadlı bir depolama hesabı oluşturur.

    az storage account create \
      --name vmssstorageaccount \
      --resource-group myVMSSResourceGroup \
      --location eastus2 \
      --sku Standard_LRS 
    
  3. Paylaşılan bir görüntü galerisi oluşturun.

    az sig create --resource-group myVMSSResourceGroup --gallery-name myVMSSGallery
    
  4. Kaynakta myVMSSGallery yeni bir görüntü galerisi oluşturun. Görüntü galerileriyle çalışma hakkında daha fazla bilgi edinmek için bkz. Portalı kullanarak Azure Paylaşılan Görüntü Galerisi oluşturma.

    az sig create --resource-group myVMSSResourceGroup --gallery-name myVMSSGallery
    
  5. Görüntü tanımı oluşturun. id gibi /subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>/providers/Microsoft.Compute/galleries/myVMSSGallery/images/MyImagegörünen yeni görüntünün kopyasını kopyalayın.

    az sig image-definition create -g myVMSSResourceGroup --gallery-name myVMSSGallery --gallery-image-definition MyImage --publisher GreatPublisher --offer GreatOffer --sku GreatSku --os-type linux
    

Yönetilen kimlik oluşturma

  1. Kaynak grubunuzda yönetilen kimlik oluşturun.

    az identity create -g myVMSSResourceGroup -n myVMSSIdentity
    
  2. Çıktıdan öğesini kopyalayın id. gibi id görünecektir /subscriptions/<SUBSCRIPTION ID>/resourcegroups/<RESOURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<USER ASSIGNED IDENTITY NAME>.

  3. Galeride görüntü galerinizi açın ve Katkıda Bulunan rolünü atayın myVMSSIdentity . Rol ataması eklemek için bu adımları izleyin.

Özel görüntü oluşturma

Özel görüntü oluşturmak için Azure VM Görüntü Oluşturucusu DevOps Görevini kullanabilirsiniz.

  1. AzureImageBuilderTask@1 Görevi YAML dosyanıza ekleyin. için <RESOURCE GROUP><USER ASSIGNED IDENTITY NAME> değerlerini <SUBSCRIPTION ID>kendi değerlerinizle değiştirin. ve storageAccountName değerlerinin galleryImageIdmanagedIdentity doğru olduğundan emin olun.

    - 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. İlk görüntünüzü oluşturmak için işlem hattını çalıştırın. İşlem hattı çalıştırması sırasında kaynakları yetkilendirmeniz gerekebilir.

  3. Azure portalında yeni görüntüye gidin ve Genel Bakış'ı açın. Yeni görüntüden yeni bir sanal makine ölçek kümesi oluşturmak için VMSS Oluştur'u seçin. Sanal makine ölçek kümesi adını olarak vmssScaleSetayarlayın. Azure portalında sanal makine ölçek kümeleri oluşturma hakkında daha fazla bilgi edinmek için bkz . Azure portalında sanal makine ölçek kümesi oluşturma.

Güncelleştirmeleri sanal makine ölçek kümesine dağıtma

Güncelleştirmeleri ölçek kümesine dağıtmak için işlem hattınıza bir Azure CLI görevi ekleyin. görevi işlem hattının sonuna ekleyin. değerini abonelik kimliğiniz ile değiştirin <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)'

Kaynakları temizleme

Azure portalına gidin ve kaynak grubunuzu myVMSSResourceGroupsilin.

Sonraki adımlar