Tutorial: Implantar um aplicativo Java em um conjunto de dimensionamento de máquinas virtuais
Azure DevOps Services
Um conjunto de dimensionamento de máquinas virtuais permite implantar e gerenciar máquinas virtuais de dimensionamento automático idênticas.
VMs são criadas conforme necessário em um conjunto de escala. Você define regras para controlar como e quando as VMs são adicionadas ou removidas do conjunto de dimensionamento. Essas regras podem ser disparados com base em métricas como carga de CPU, utilização de memória ou tráfego de rede.
Nesse tutorial, você cria um aplicativo Java e o implanta em um conjunto de dimensionamento de máquinas virtuais. Você aprenderá como:
- Criar um conjunto de dimensionamento de máquinas virtuais
- Criar uma imagem de computador
- Implantar uma imagem personalizada em um conjunto de dimensionamento de máquinas virtuais
Pré-requisitos
Antes de começar, você precisa de:
- Uma conta do Azure com uma assinatura ativa. Crie uma conta gratuitamente.
- Uma organização ativa do Azure DevOps. Inscreva-se no Azure Pipelines.
- A tarefa DevOps do Construtor de Imagens de VM do Azure instalada para sua organização de DevOps.
- Um repositório GitHub bifurcado com o projeto de exemplo. Bifurque o repositório pipelines-vmss.
Configurar o pipeline do Java
Entre na organização do Azure DevOps e acesse seu projeto.
Vá para Pipelines e selecione Novo pipeline ou Criar pipeline se estiver criando seu primeiro pipeline.
Percorra as etapas do assistente selecionando primeiro o GitHub como o local do código-fonte.
Você pode ser redirecionado para o GitHub para então entrar. Nesse caso, insira suas credenciais do GitHub.
Quando a lista de repositórios for exibida, selecione o repositório.
Você poderá ser redirecionado ao GitHub para instalar o aplicativo do Azure Pipelines. Se sim, selecione Aprovar e instalar.
Quando a guia Configurar for exibida, selecione Maven.
Personalizar o pipeline
Quando o novo pipeline for exibido, observe o YAML para ver o que ele faz. Ao final, selecione Salvar e executar.
Você será solicitado a confirmar um novo arquivo azure-pipelines.yml em seu repositório. Depois de ficar satisfeito com a mensagem, selecione Salvar e executar novamente.
Se você quiser inspecionar seu pipeline em ação, selecione o trabalho de compilação.
Você acabou de criar e executar um pipeline que criamos automaticamente para você, pois seu código parecia ser uma boa correspondência para o modelo do Maven.
Agora você tem um pipeline YAML funcional (
azure-pipelines.yml
) em seu repositório que está pronto para personalização!Quando estiver pronto para fazer alterações no pipeline, selecione-o na página Pipelines e Edite o arquivo
azure-pipelines.yml
.
Adicionar as tarefas Copiar Arquivos e Publicar Artefato de Compilação
Atualize o pipeline para incluir a tarefa
CopyFiles@2
. Isso criará um artefato que você pode implantar no conjunto de dimensionamento de máquinas virtuais.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
Criar uma imagem personalizada e carregá-la no Azure
Você precisará de um grupo de recursos, uma conta de armazenamento e uma galeria de imagens compartilhadas para sua imagem personalizada.
Crie um grupo de recursos com az group create. Esse exemplo cria um grupo de recursos chamado myVMSSResourceGroup no local eastus2:
az group create --name myVMSSResourceGroup --location eastus2
Criar uma conta de armazenamento. Esse exemplo cria uma conta de armazenamento,
vmssstorageaccount
.az storage account create \ --name vmssstorageaccount \ --resource-group myVMSSResourceGroup \ --location eastus2 \ --sku Standard_LRS
Crie uma galeria de imagens compartilhadas.
az sig create --resource-group myVMSSResourceGroup --gallery-name myVMSSGallery
Crie uma nova galeria de imagens no recurso
myVMSSGallery
. Confira Criar um Galeria de Imagens Compartilhadas do Azure usando o portal para saber mais sobre como trabalhar com galerias de imagens.az sig create --resource-group myVMSSResourceGroup --gallery-name myVMSSGallery
Criar uma definição de imagem. Copie o
id
da nova imagem que se parece com/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
Criar uma identidade gerenciada
Crie uma identidade gerenciada em seu grupo de recursos.
az identity create -g myVMSSResourceGroup -n myVMSSIdentity
Na saída, copie o
id
. Oid
será parecido com/subscriptions/<SUBSCRIPTION ID>/resourcegroups/<RESOURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<USER ASSIGNED IDENTITY NAME>
.Abra sua galeria de imagens na galeria e atribua à
myVMSSIdentity
a função Colaborador. Siga estas etapas para adicionar uma atribuição de função.
Criar o agente personalizado
Para criar uma imagem personalizada, você pode usar a Tarefa DevOps do Construtor de Imagens de VM do Azure.
Adicione a tarefa
AzureImageBuilderTask@1
ao arquivo YAML. Substitua os valores de<SUBSCRIPTION ID>
,<RESOURCE GROUP>
,<USER ASSIGNED IDENTITY NAME>
pelos seus próprios. Verifique se os valores degalleryImageId
,managedIdentity
estorageAccountName
estão precisos.- 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'
Execute o pipeline para gerar sua primeira imagem. Talvez seja necessário autorizar recursos durante a execução do pipeline.
Vá para a nova imagem no portal do Azure e abra Visão geral. Selecione Criar VMSS para criar um novo conjunto de dimensionamento de máquinas virtuais a partir da nova imagem. Defina Nome do conjunto de dimensionamento de máquinas virtuais como
vmssScaleSet
. Confira Criar um conjunto de dimensionamento de máquinas virtuais no portal do Azure para saber mais sobre como criar conjuntos de dimensionamento de máquinas virtuais no portal do Azure.
Implantar atualizações no conjunto de dimensionamento de máquinas virtuais
Adicione uma tarefa da CLI do Azure ao pipeline para implantar atualizações no conjunto de dimensionamento. Adicione a tarefa no final do pipeline. Substitua <SUBSCRIPTION ID>
por sua ID da assinatura.
- 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)'
Limpar os recursos
Vá para o portal do Azure e exclua seu grupo de recursos, myVMSSResourceGroup
.
Próximas etapas
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de