Tutorial: Bereitstellen einer Java-App in einer VM-Skalierungsgruppe
Azure DevOps Services
Mit einer VM-Skalierungsgruppe können Sie identische VMs mit automatischer Skalierung bereitstellen und verwalten.
Virtuelle Computer werden nach Bedarf in einer Skalierungsgruppe erstellt. Sie können Regeln definieren, um zu steuern, wie und wann der Skalierungsgruppe VMs hinzugefügt bzw. daraus entfernt werden. Diese Regeln können basierend auf Metriken wie CPU-Auslastung, Speicherauslastung oder Netzwerkdatenverkehr ausgelöst werden.
In diesem Tutorial erstellen Sie eine Java-App und stellen sie in einer VM-Skalierungsgruppe bereit. Folgendes wird vermittelt:
- Erstellen einer Skalierungsgruppe für virtuelle Computer
- Erstellen eines Computerimages
- Bereitstellen eines benutzerdefinierten Images in einer VM-Skalierungsgruppe
Voraussetzungen
Bevor Sie beginnen, benötigen Sie Folgendes:
- Ein Azure-Konto mit einem aktiven Abonnement. Sie können kostenlos ein Konto erstellen.
- Eine aktive Azure DevOps-Organisation. Registrieren Sie sich für Azure Pipelines.
- Installation von Azure VM Image Builder DevOps Task für Ihre DevOps-Organisation
- Geforktes GitHub-Repository mit dem Beispielprojekt. Forken Sie das Repository „pipelines-vmss“.
Einrichten der Java-Pipeline
Melden Sie sich bei Ihrer Azure DevOps-Organisation an, und wechseln Sie zu Ihrem Projekt.
Gehen Sie zu Pipelines und wählen Sie dann Neue Pipeline aus oder Pipeline erstellen, wenn Sie Ihre erste Pipeline erstellen.
Führen Sie die Schritte des Assistenten aus. Dabei wählen Sie zuerst GitHub als Speicherort Ihres Quellcodes aus.
Möglicherweise werden Sie zu GitHub weitergeleitet, um sich anzumelden. Geben Sie in diesem Fall Ihre Anmeldeinformationen für GitHub ein.
Wenn die Liste der Repositorys angezeigt wird, wählen Sie Ihr Repository aus.
Sie werden möglicherweise zu GitHub weitergeleitet, um die Azure Pipelines-App zu installieren. Wählen Sie in diesem Fall „Approve & Install“ (Genehmigen und installieren) aus.
Wenn die Registerkarte Konfigurieren angezeigt wird, wählen Sie Maven aus.
Anpassen der Pipeline
Wenn Ihre neue Pipeline angezeigt wird, sehen Sie sich den YAML-Code an, um herauszufinden, was er macht. Wenn Sie so weit sind, wählen Sie Speichern und ausführen aus.
Sie werden aufgefordert, eine neue azure-pipelines.yml-Datei in Ihr Repository zu committen. Sobald Sie mit der Nachricht zufrieden sind, klicken Sie erneut auf Speichern und ausführen.
Wenn Sie Ihre Pipeline in Aktion sehen möchten, wählen Sie den Buildauftrag aus.
Sie haben soeben eine Pipeline erstellt und ausgeführt, die automatisch für Sie erstellt wurde, da Ihr Code gut zur Maven-Vorlage zu passen schien.
Sie verfügen nun über eine funktionierende YAML-Pipeline (
azure-pipelines.yml
) in Ihrem Repository, die Sie anpassen können.Wenn Sie bereit sind, Änderungen an Ihrer Pipeline vorzunehmen, wählen Sie sie auf der Seite Pipelines aus, und bearbeiten Sie dann die
azure-pipelines.yml
-Datei.
Hinzufügen der Aufgaben zum Kopieren von Dateien und Veröffentlichen von Buildartefakten
Aktualisieren Sie Ihre Pipeline so, dass sie die Aufgabe
CopyFiles@2
enthält. Dadurch wird ein Artefakt erstellt, das Sie in Ihrer VM-Skalierungsgruppe bereitstellen können.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
Erstellen eines benutzerdefinierten Images und Hochladen in Azure
Sie benötigen eine Ressourcengruppe, ein Speicherkonto und einen freigegebenen Imagekatalog für Ihr benutzerdefiniertes Image.
Erstellen Sie mit az group create eine Ressourcengruppe. In diesem Beispiel wird eine Ressourcengruppe namens myVMSSResourceGroup und dem Speicherort eastus2 erstellt:
az group create --name myVMSSResourceGroup --location eastus2
Erstellen Sie ein neues Speicherkonto. In diesem Beispiel wird das Speicherkonto
vmssstorageaccount
erstellt.az storage account create \ --name vmssstorageaccount \ --resource-group myVMSSResourceGroup \ --location eastus2 \ --sku Standard_LRS
Erstellen Sie einen Katalog mit freigegebenen Images.
az sig create --resource-group myVMSSResourceGroup --gallery-name myVMSSGallery
Erstellen Sie einen neuen Imagekatalog in der
myVMSSGallery
-Ressource. Weitere Informationen zum Arbeiten mit Imagekatalogen finden Sie unter Erstellen einer Azure Shared Image Gallery-Instanz mithilfe des Portals.az sig create --resource-group myVMSSResourceGroup --gallery-name myVMSSGallery
Erstellen Sie eine Imagedefinition. Kopieren Sie die
id
des neuen Images, die wie folgt lautet:/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
Erstellen einer verwalteten Identität
Erstellen Sie eine verwaltete Identität in Ihrer Ressourcengruppe.
az identity create -g myVMSSResourceGroup -n myVMSSIdentity
Kopieren Sie aus der Ausgabe die
id
. Dieid
weist folgendes Format auf:/subscriptions/<SUBSCRIPTION ID>/resourcegroups/<RESOURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<USER ASSIGNED IDENTITY NAME>
.Öffnen Sie Ihren Imagekatalog im Katalog, und weisen Sie
myVMSSIdentity
die Rolle „Mitwirkender“ zu. Führen Sie die folgenden Schritte aus, um eine Rollenzuweisung hinzuzufügen.
Erstellen des benutzerdefinierten Images
Zum Erstellen eines benutzerdefinierten Images können Sie Azure VM Image Builder DevOps Task verwenden.
Fügen Sie Ihrer YAML-Datei die Aufgabe
AzureImageBuilderTask@1
hinzu. Ersetzen Sie die Werte für<SUBSCRIPTION ID>
,<RESOURCE GROUP>
und<USER ASSIGNED IDENTITY NAME>
durch Ihre eigenen Werte. Stellen Sie sicher, dass die WertegalleryImageId
,managedIdentity
undstorageAccountName
korrekt sind.- 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'
Führen Sie die Pipeline aus, um Ihr erstes Image zu generieren. Möglicherweise müssen Sie während der Pipelineausführung Ressourcen autorisieren.
Wechseln Sie im Azure-Portal zum neuen Image, und öffnen Sie Übersicht. Wählen Sie VMSS erstellen aus, um über das neue Image eine neue VM-Skalierungsgruppe zu erstellen. Legen Sie Name der VM-Skalierungsgruppe auf
vmssScaleSet
fest. Weitere Informationen zum Erstellen von VM-Skalierungsgruppen im Azure-Portal finden Sie unter Schnellstart: Erstellen einer VM-Skalierungsgruppe über das Azure-Portal.
Bereitstellen von Updates für die VM-Skalierungsgruppe
Fügen Sie Ihrer Pipeline eine Azure CLI-Aufgabe hinzu, um Updates für die Skalierungsgruppe bereitzustellen. Fügen Sie die Aufgabe am Ende der Pipeline hinzu. Ersetzen Sie <SUBSCRIPTION ID>
durch Ihre Abonnement-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)'
Bereinigen von Ressourcen
Navigieren Sie zum Azure-Portal, und löschen Sie die Ressourcengruppe myVMSSResourceGroup
.
Nächste Schritte
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für