教學課程:將 Java 應用程式部署至虛擬機擴展集
Azure DevOps Services
虛擬機擴展集可讓您部署和管理相同的自動調整虛擬機。
VM 會視需要在擴展集中建立。 您可以定義規則來控制從擴展集新增或移除 VM 的方式和時機。 您可以根據 CPU 負載、記憶體使用量或網路流量等計量來觸發這些規則。
在本教學課程中,您會建置 Java 應用程式,並將其部署至虛擬機擴展集。 您將學習如何:
- 建立虛擬機器擴展集
- 建置電腦映像
- 將自定義映像部署至虛擬機擴展集
必要條件
開始之前,您需要:
- 具有有效訂用帳戶的 Azure 帳戶。 免費建立帳戶。
- 作用中的 Azure DevOps 組織。 註冊 Azure Pipelines。
- 為 DevOps 組織安裝的 Azure VM 映射產生器 DevOps 工作。
- 具有範例專案的分支 GitHub 存放庫。 派 生 pipelines-vmss 存放庫。
設定Java管線
登入您的 Azure DevOps 組織,並移至您的專案。
移至 [管線],然後在建立第一個管線時選取 [ 新增管線 ] 或 [建立管線 ]。
先選取 GitHub 作為原始程式碼的位置,以執行精靈的步驟。
系統可能會將您重新導向至 GitHub 以進行登入。 若是如此,請輸入 GitHub 認證。
當您看到存放庫清單時,請選取您的存放庫。
系統可能會將您重新導向至 GitHub,以安裝 Azure Pipelines 應用程式。 如果是,請選取 [ 核准並安裝]。
出現 [設定 ] 索引標籤時,選取 [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
建立受控識別
在您的資源群組中建立 受控識別 。
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 映射產生器 DevOps 工作。
將工作
AzureImageBuilderTask@1
新增至 YAML 檔案。 將、<RESOURCE GROUP>
<USER ASSIGNED IDENTITY NAME>
的值<SUBSCRIPTION ID>
取代為您自己的值。 請務必確認galleryImageId
、managedIdentity
和storageAccountName
值正確無誤。- 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 入口網站 中的新映射,然後開啟 [概觀]。 選取 [建立 VMSS ],從新的映像建立新的虛擬機擴展集。 將[虛擬機延伸集名稱] 設定為
vmssScaleSet
。 請參閱在 Azure 入口網站 中建立虛擬機擴展集,以深入瞭解如何在 Azure 入口網站 中建立虛擬機擴展集。
將更新部署至虛擬機擴展集
將 Azure CLI 工作新增至管線,以將更新部署至擴展集。 在管線結尾新增工作。 將取代 <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 入口網站,並移除您的資源群組。 myVMSSResourceGroup
下一步
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應