Samouczek: wdrażanie aplikacji Java w zestawie skalowania maszyn wirtualnych
Azure DevOps Services
Zestaw skalowania maszyn wirtualnych umożliwia wdrażanie identycznych, automatycznych maszyn wirtualnych i zarządzanie nimi.
Maszyny wirtualne są tworzone zgodnie z potrzebami w zestawie skalowania. Definiujesz reguły, aby kontrolować sposób i czas dodawania lub usuwania maszyn wirtualnych z zestawu skalowania. Reguły te mogą być wyzwalane na podstawie metryk, takich jak obciążenie procesora, użycie pamięci lub ruch sieciowy.
W tym samouczku utworzysz aplikację Java i wdrożysz ją w zestawie skalowania maszyn wirtualnych. Dowiedz się, jak odbywa się:
- Tworzenie zestawu skalowania maszyn wirtualnych
- Tworzenie obrazu maszyny
- Wdrażanie obrazu niestandardowego w zestawie skalowania maszyn wirtualnych
Wymagania wstępne
Przed rozpoczęciem potrzebne są następujące elementy:
- Konto platformy Azure z aktywną subskrypcją. Utwórz konto bezpłatnie.
- Aktywna organizacja usługi Azure DevOps. Utwórz konto w usłudze Azure Pipelines.
- Zadanie DevOps konstruktora obrazów maszyny wirtualnej platformy Azure zainstalowane dla organizacji DevOps.
- Rozwidlenie repozytorium GitHub z przykładowym projektem. Rozwidlenie repozytorium pipelines-vmss.
Konfigurowanie potoku języka Java
Zaloguj się do organizacji usługi Azure DevOps i przejdź do projektu.
Przejdź do obszaru Potoki, a następnie wybierz pozycję Nowy potok lub Utwórz potok , jeśli tworzysz pierwszy potok.
Wykonaj kroki kreatora, wybierając najpierw usługę GitHub jako lokalizację kodu źródłowego.
Być może nastąpi przekierowanie do usługi GitHub w celu zalogowania się. Jeśli tak, wprowadź poświadczenia usługi GitHub.
Po wyświetleniu listy repozytoriów wybierz repozytorium.
Możesz zostać przekierowany do usługi GitHub, aby zainstalować aplikację Azure Pipelines. Jeśli tak, wybierz pozycję Zatwierdź i zainstaluj.
Po wyświetleniu karty Konfigurowanie wybierz pozycję Maven.
Dostosowywanie potoku
Gdy pojawi się nowy potok, przyjrzyj się kodowi YAML, aby zobaczyć, co robi. Gdy wszystko będzie gotowe, wybierz pozycję Zapisz i uruchom.
Zostanie wyświetlony monit o zatwierdzenie nowego pliku azure-pipelines.yml do repozytorium. Po zapoznaniu się z komunikatem wybierz pozycję Zapisz i uruchom ponownie.
Jeśli chcesz obserwować działanie potoku, wybierz zadanie kompilacji.
Właśnie utworzono i uruchomiono potok, który automatycznie utworzyliśmy, ponieważ kod wydawał się być dobrym dopasowaniem szablonu maven .
Masz teraz działający potok YAML (
azure-pipelines.yml
) w repozytorium, który jest gotowy do dostosowania.Gdy wszystko będzie gotowe do wprowadzenia zmian w potoku, wybierz go na stronie Potoki , a następnie edytuj
azure-pipelines.yml
plik.
Dodawanie zadań kopiowania plików i publikowania artefaktu kompilacji
Zaktualizuj potok, aby uwzględnić
CopyFiles@2
zadanie. Spowoduje to utworzenie artefaktu, który można wdrożyć w zestawie skalowania maszyn wirtualnych.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
Tworzenie obrazu niestandardowego i przekazywanie go na platformę Azure
Musisz mieć grupę zasobów, konto magazynu i galerię obrazów udostępnionych dla niestandardowego obrazu.
Utwórz grupę zasobów za pomocą polecenia az group create. W tym przykładzie utworzono grupę zasobów o nazwie myVMSSResourceGroup w lokalizacji eastus2 :
az group create --name myVMSSResourceGroup --location eastus2
Utwórz nowe konto magazynu. W tym przykładzie zostanie utworzone konto magazynu.
vmssstorageaccount
az storage account create \ --name vmssstorageaccount \ --resource-group myVMSSResourceGroup \ --location eastus2 \ --sku Standard_LRS
Utwórz galerię obrazów udostępnionych.
az sig create --resource-group myVMSSResourceGroup --gallery-name myVMSSGallery
Utwórz nową galerię obrazów w zasobie
myVMSSGallery
. Zobacz Tworzenie galerii obrazów udostępnionych platformy Azure przy użyciu portalu , aby dowiedzieć się więcej na temat pracy z galeriami obrazów.az sig create --resource-group myVMSSResourceGroup --gallery-name myVMSSGallery
Utwórz definicję obrazu.
id
Skopiuj nowy obraz, który wygląda następująco:/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
Tworzenie tożsamości zarządzanej
Utwórz tożsamość zarządzaną w grupie zasobów.
az identity create -g myVMSSResourceGroup -n myVMSSIdentity
Z danych wyjściowych skopiuj element
id
. Elementid
będzie wyglądać następująco:/subscriptions/<SUBSCRIPTION ID>/resourcegroups/<RESOURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<USER ASSIGNED IDENTITY NAME>
.Otwórz galerię obrazów w galerii i przypisz
myVMSSIdentity
rolę Współautor. Wykonaj następujące kroki, aby dodać przypisanie roli.
Tworzenie obrazu niestandardowego
Aby utworzyć obraz niestandardowy, możesz użyć zadania DevOps konstruktora obrazów maszyny wirtualnej platformy Azure.
AzureImageBuilderTask@1
Dodaj zadanie do pliku YAML. Zastąp wartości ,<SUBSCRIPTION ID>
własnymi<RESOURCE GROUP>
<USER ASSIGNED IDENTITY NAME>
. Upewnij się, żegalleryImageId
managedIdentity
wartości i sąstorageAccountName
dokładne.- 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'
Uruchom potok, aby wygenerować pierwszy obraz. Może być konieczne autoryzowanie zasobów podczas uruchamiania potoku.
Przejdź do nowego obrazu w witrynie Azure Portal i otwórz pozycję Przegląd. Wybierz pozycję Utwórz zestaw skalowania maszyn wirtualnych , aby utworzyć nowy zestaw skalowania maszyn wirtualnych na podstawie nowego obrazu. Ustaw nazwę zestawu skalowania maszyn wirtualnych na
vmssScaleSet
wartość . Zobacz Tworzenie zestawu skalowania maszyn wirtualnych w witrynie Azure Portal , aby dowiedzieć się więcej na temat tworzenia zestawów skalowania maszyn wirtualnych w witrynie Azure Portal.
Wdrażanie aktualizacji w zestawie skalowania maszyn wirtualnych
Dodaj zadanie interfejsu wiersza polecenia platformy Azure do potoku, aby wdrożyć aktualizacje w zestawie skalowania. Dodaj zadanie na końcu potoku. Zastąp <SUBSCRIPTION ID>
ciąg identyfikatorem subskrypcji.
- 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)'
Czyszczenie zasobów
Przejdź do witryny Azure Portal i usuń grupę zasobów. myVMSSResourceGroup
Następne kroki
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla