Tutorial: Implantar aplicativos nos Aplicativos Spring do Azure usando o Jenkins e a CLI do Azure
Observação
Azure Spring Apps é o novo nome do serviço Azure Spring Cloud. Embora o serviço tenha um novo nome, você verá o nome antigo em alguns locais por um tempo enquanto trabalhamos para atualizar ativos como capturas de tela, vídeos e diagramas.
O Azure Spring Apps é um desenvolvimento de microsserviço totalmente gerenciado com descoberta de serviço interno e gerenciamento de configuração. O serviço facilita a implantação de aplicativos de microsserviço baseados no Spring Boot no Azure. Este tutorial demonstra como você pode usar a CLI do Azure no Jenkins para automatizar a integração e a entrega contínuas (CI/CD) para os Aplicativos Spring do Azure.
Neste tutorial, você concluirá estas tarefas:
- Provisionar uma instância de serviço e iniciar um aplicativo Java Spring
- Preparar seu servidor Jenkins
- Usar a CLI do Azure em um pipeline do Jenkins para compilar e implantar os aplicativos de microsserviço
Pré-requisitos
- Assinatura do Azure: caso você não tenha uma assinatura do Azure, crie uma conta gratuita antes de começar.
- Jenkins: Instalar o Jenkins em uma VM Linux
- Conta do GitHub: Se você não tiver uma conta do GitHub, crie uma conta gratuita antes de começar.
Provisionar uma instância de serviço e iniciar um aplicativo Java Spring
Usamos o Piggy Metrics como o aplicativo de serviço da Microsoft de exemplo e seguimos as mesmas etapas em Guia de início rápido: Iniciar um aplicativo Java Spring usando a CLI do Azure para provisionar a instância de serviço e configurar os aplicativos. Se você já passou pelo mesmo processo, pode pular para a próxima seção. Caso contrário, os comandos da CLI do Azure estão incluídos a seguir. Consulte Guia de início rápido: iniciar um aplicativo Java Spring usando a CLI do Azure para obter mais informações.
Seu computador local precisa atender ao mesmo pré-requisito do servidor de build do Jenkins. Verifique se os seguintes itens estão instalados para compilar e implantar os aplicativos de microsserviço:
- Git
- JDK 8
- Maven 3.0 ou posterior
- CLI do Azure instalada, versão 2.0.67 ou superior
Instale a extensão Azure Spring Apps:
az extension add --name spring
Crie um grupo de recursos para conter seu serviço Azure Spring Apps:
az group create --location eastus --name <resource group name>
Provisione uma instância do Azure Spring Apps:
az spring create -n <service name> -g <resource group name>
Crie fork do repositório do Piggy Metrics para a própria conta do GitHub. No computador local, clone seu repositório em um diretório chamado
source-code
:mkdir source-code git clone https://github.com/<your GitHub id>/piggymetrics
Configure o servidor de configuração. Lembre-se de substituir <sua ID do GitHub> pelo valor correto.
az spring config-server git set -n <your-service-name> --uri https://github.com/<your GitHub id>/piggymetrics --label config
Compile o projeto:
cd piggymetrics mvn clean package -D skipTests
Crie os três microsserviços: gateway, auth-service e account-service:
az spring app create --n gateway -s <service name> -g <resource group name> az spring app create --n auth-service -s <service name> -g <resource group name> az spring app create --n account-service -s <service name> -g <resource group name>
Implante os aplicativos:
az spring app deploy -n gateway -s <service name> -g <resource group name> --jar-path ./gateway/target/gateway.jar az spring app deploy -n account-service -s <service name> -g <resource group name> --jar-path ./account-service/target/account-service.jar az spring app deploy -n auth-service -s <service name> -g <resource group name> --jar-path ./auth-service/target/auth-service.jar
Atribua um ponto de extremidade público ao gateway:
az spring app update -n gateway -s <service name> -g <resource group name> --is-public true
Consulte o aplicativo de gateway para obter a URL, de modo que você possa verificar se o aplicativo está em execução.
az spring app show --name gateway | grep url
Navegue até a URL fornecida pelo comando anterior para executar o aplicativo PiggyMetrics.
Preparar o servidor Jenkins
Nesta seção, você preparará o servidor do Jenkins para executar um build, que é adequado para o teste. No entanto, devido a implicações de segurança, você deverá usar um agente de VM do Azure ou um agente de Contêiner do Azure para criar um agente no Azure e executar os builds.
Instalar plug-ins
Faça login no seu servidor Jenkins.
Selecione Gerenciar Jenkins.
Selecione Gerenciar plug-ins.
Na guia Disponível, selecione os seguintes plug-ins:
Se esses plug-ins não aparecerem na lista, verifique a guia Instalado para ver se já estão instalados.
Para instalar os plug-ins, selecione Baixar agora e instalar após a reinicialização.
Reinicie o servidor do Jenkins para concluir a instalação.
Adicionar suas credenciais de entidade de serviço do Azure ao repositório de credenciais do Jenkins
Você precisará de uma entidade de serviço do Azure para implantação no Azure. Para obter mais informações, confira a seção Criar uma entidade de serviço no tutorial Implantar no Serviço de Aplicativo do Azure. A saída de
az ad sp create-for-rbac
é semelhante a esta:{ "appId": "xxxxxx-xxx-xxxx-xxx-xxxxxxxxxxxx", "displayName": "xxxxxxxjenkinssp", "name": "http://xxxxxxxjenkinssp", "password": "xxxxxx-xxx-xxxx-xxx-xxxxxxxxxxxx", "tenant": "xxxxxx--xxx-xxxx-xxx-xxxxxxxxxxxx" }
No painel do Jenkins, selecione Credenciais>Sistema. Em seguida, selecione Credenciais globais (irrestrito).
Selecione Adicionar Credenciais.
Selecione Entidade de Serviço do Microsoft Azure como o tipo.
Forneça valores para os seguintes campos:
- ID da assinatura: ID de assinatura do Azure
- ID do cliente: Appid da entidade de serviço
- Segredo do cliente: senha da entidade de serviço
- ID do locatário: ID do locatário da conta da Microsoft
- Ambiente do Azure: selecione o valor apropriado para seu ambiente. Por exemplo, use Azure para o Azure Global
- ID: Definir como
azure_service_principal
. Usaremos essa ID em uma etapa posterior neste artigo - Descrição: esse valor é opcional, mas recomendado do ponto de vista da documentação/manutenção.
Instalar a extensão de mola do Maven e da CLI do Azure
O pipeline de exemplo usa o Maven para criar e a CLI do Azure para implantar na instância de serviço. Quando o Jenkins está instalado, ele cria uma conta do administrador chamada jenkins. Certifique-se de que o usuário jenkins tenha permissão para executar a extensão spring.
Conecte-se ao controlador do Jenkins via SSH.
Instale o Maven.
sudo apt-get install maven
Verifique se a CLI do Azure está instalada inserindo
az version
. Se a CLI do Azure não estiver instalada, consulte Instalando a CLI do Azure.Alterne para o usuário
jenkins
:sudo su jenkins
Instale a extensão spring:
az extension add --name spring
Criar um Jenkinsfile
Em seu próprio repositório - -
https://github.com/your_github_id/piggymetrics
crie um arquivo Jenkins na raiz.Atualize o arquivo conforme mostrado a seguir. Certifique-se de substituir os valores de nome do grupo de recursos e< nome>> do <serviço. Substitua azure_service_principal pela ID correta se você usar outro valor ao adicionar a credencial no Jenkins.
node { stage('init') { checkout scm } stage('build') { sh 'mvn clean package' } stage('deploy') { withCredentials([azureServicePrincipal('azure_service_principal')]) { // Log in to Azure sh ''' az login --service-principal -u $AZURE_CLIENT_ID -p $AZURE_CLIENT_SECRET -t $AZURE_TENANT_ID az account set -s $AZURE_SUBSCRIPTION_ID ''' // Set default resource group name and service name. Replace <resource group name> and <service name> with the right values sh 'az config set defaults.group=<resource group name>' sh 'az config set defaults.spring=<service name>' // Deploy applications sh 'az spring app deploy -n gateway --jar-path ./gateway/target/gateway.jar' sh 'az spring app deploy -n account-service --jar-path ./account-service/target/account-service.jar' sh 'az spring app deploy -n auth-service --jar-path ./auth-service/target/auth-service.jar' sh 'az logout' } } }
Salve e confirme a alteração.
Criar o trabalho
No painel do Jenkins, selecione Novo Item.
Forneça um nome, Deploy-PiggyMetrics, para o trabalho e selecione Pipeline. Clique em OK.
Selecione a guia Pipeline.
Para Definição, selecione Script de pipeline do SCM.
Para SCM, selecione Git.
Insira a URL do GitHub para seu repositório bifurcado:
https://github.com/<your GitHub id>/piggymetrics.git
.Para Especificador de ramificação (preto para 'qualquer'), selecione /Azure.
Em Caminho do script, selecione Jenkinsfile.
Selecione Salvar
Validar e executar o trabalho
Antes de executar o trabalho, edite o texto na caixa de entrada de login para inserir o ID de login.
Em seu repositório, abra
index.html
em/gateway/src/main/resources/static/
.enter your login
Pesquise e atualize esse texto paraenter login ID
.<input class="frontforms" id="frontloginform" name="username" placeholder="enter login ID" type="text" autocomplete="off"/>
Salve e confirme a alteração.
Execute o trabalho no Jenkins manualmente. No painel do Jenkins, selecione o trabalho
Deploy-PiggyMetrics
e, em seguida, selecione Criar agora.
Depois que o trabalho for concluído, navegue até o gateway
IP público do aplicativo e verifique se o aplicativo foi atualizado.
Limpar os recursos
Exclua os recursos criados neste artigo quando não forem mais necessários:
az group delete -y --no-wait -n <resource group name>