Share via


Tutorial: Implantar aplicativos no Azure Spring Apps usando Jenkins e a CLI do Azure

Nota

Azure Spring Apps é o novo nome para o serviço Azure Spring Cloud. Embora o serviço tenha um novo nome, você verá o nome antigo em alguns lugares por um tempo enquanto trabalhamos para atualizar ativos, como capturas de tela, vídeos e diagramas.

O Azure Spring Apps é um desenvolvimento de microsserviços 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 contínua e a entrega (CI/CD) para o Azure Spring Apps.

Neste tutorial, você concluirá estas tarefas:

  • Provisionar uma instância de serviço e executar um aplicativo Java Spring
  • Prepare seu servidor Jenkins
  • Usar a CLI do Azure em um pipeline do Jenkins para criar e implantar os aplicativos de microsserviço

Pré-requisitos

  • Subscrição do Azure: se não tem uma subscrição do Azure, crie uma conta gratuita antes de começar.

Provisionar uma instância de serviço e executar um aplicativo Java Spring

Usamos o Piggy Metrics como o aplicativo de serviço 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, pule para a próxima seção. Caso contrário, incluídos a seguir estão os comandos da CLI do Azure. Consulte Guia de início rápido: inicie um aplicativo Java Spring usando a CLI do Azure para obter mais informações.

Sua máquina local precisa atender ao mesmo pré-requisito que o servidor de compilação Jenkins. Verifique se o seguinte está instalado para criar e implantar os aplicativos de microsserviço:

  1. Instale a extensão Azure Spring Apps:

    az extension add --name spring
    
  2. Crie um grupo de recursos para conter seu serviço Azure Spring Apps:

    az group create --location eastus --name <resource group name>
    
  3. Provisione uma instância do Azure Spring Apps:

    az spring create -n <service name> -g <resource group name>
    
  4. Fork o repositório Piggy Metrics para sua própria conta do GitHub. Em sua máquina local, clone seu repositório em um diretório chamado source-code:

    mkdir source-code
    git clone https://github.com/<your GitHub id>/piggymetrics
    
  5. Configure o servidor de configuração. Certifique-se de substituir <seu 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
    
  6. Construa o projeto:

    cd piggymetrics
    mvn clean package -D skipTests
    
  7. 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>
    
  8. 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
    
  9. Atribua ponto de extremidade público ao gateway:

    az spring app update -n gateway -s <service name> -g <resource group name> --is-public true
    
  10. Consulte o aplicativo de gateway para obter a url para que você possa verificar se o aplicativo está em execução.

    az spring app show --name gateway | grep url
    
  11. Navegue até a URL fornecida pelo comando anterior para executar o aplicativo PiggyMetrics.

Preparar o servidor Jenkins

Nesta seção, você prepara o servidor Jenkins para executar uma compilação, o que é bom para testes. No entanto, devido à implicação de segurança, você deve usar um agente de VM do Azure ou um agente de Contêiner do Azure para girar um agente no Azure para executar suas compilações.

Instalar plug-ins

  1. Inicie sessão no seu servidor Jenkins.

  2. Selecione Gerenciar Jenkins.

  3. Selecione Gerenciar plugins.

  4. 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 eles já estão instalados.

  5. Para instalar os plug-ins, selecione Baixar agora e instalar após a reinicialização.

  6. Reinicie o servidor Jenkins para concluir a instalação.

Adicionar sua credencial da Entidade de Serviço do Azure no repositório de credenciais Jenkins

  1. Você precisa de uma Entidade de Serviço do Azure para implantar no Azure. Para obter mais informações, consulte a seção Criar entidade de serviço no tutorial Implantar no Serviço de Aplicativo do Azure. A saída de é mais ou menos az ad sp create-for-rbac assim:

    {
        "appId": "xxxxxx-xxx-xxxx-xxx-xxxxxxxxxxxx",
        "displayName": "xxxxxxxjenkinssp",
        "name": "http://xxxxxxxjenkinssp",
        "password": "xxxxxx-xxx-xxxx-xxx-xxxxxxxxxxxx",
        "tenant": "xxxxxx--xxx-xxxx-xxx-xxxxxxxxxxxx"
    }
    
  2. No dashboard do Jenkins, selecione Credentials>System (Credenciais > Sistema). Em seguida, selecione Global credentials(unrestricted) (Credenciais globais (sem restrições).

  3. Selecione Adicionar credenciais.

  4. Selecione Entidade de Serviço do Microsoft Azure como tipo.

  5. Valores de fornecimento para os seguintes campos:

    • ID da assinatura: ID da assinatura do Azure
    • ID do cliente: Appid da entidade de serviço
    • Segredo do cliente: Senha da entidade de serviço
    • ID do inquilino: ID do locatário da conta da Microsoft
    • Ambiente do Azure: selecione o valor apropriado para o seu ambiente. Por exemplo, use o Azure para Azure Global
    • ID: Defina como azure_service_principal. Usamos esse ID em uma etapa posterior deste artigo
    • Descrição: Este valor é opcional, mas recomendado do ponto de vista da documentação/manutenção.

Instalar o Maven e a extensão de primavera 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 é instalado, ele cria uma conta de administrador chamada jenkins. Certifique-se de que o usuário jenkins tem permissão para executar a extensão spring.

  1. Conecte-se ao controlador Jenkins via SSH.

  2. Instale o Maven.

    sudo apt-get install maven
    
  3. 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.

  4. Mude para o jenkins utilizador:

    sudo su jenkins
    
  5. Instale a extensão spring:

    az extension add --name spring
    

Criar um arquivo Jenkins

  1. Em seu próprio repositório - - https://github.com/your_github_id/piggymetrics crie um Jenkinsfile na raiz.

  2. Atualize o arquivo da seguinte maneira. Certifique-se de substituir os valores de nome do grupo de recursos e< nome>> do <serviço. Substitua azure_service_principal pelo ID correto se você usar um valor diferente quando adicionou 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'
            }
          }
        }
    
  3. Salve e confirme a alteração.

Criar o trabalho

  1. No painel Jenkins, selecione Novo Item.

  2. Forneça um nome, Deploy-PiggyMetrics para o trabalho e selecione Pipeline. Clique em OK.

  3. Selecione o separador Pipeline.

  4. Em Definition (Definição), selecione Pipeline script from SCM (Script de pipeline do SCM).

  5. Em SCM, selecione Git.

  6. Digite o URL do GitHub para seu repositório bifurcado: https://github.com/&lt;your GitHub id&gt;/piggymetrics.git.

  7. Para Especificador de ramificação (preto para 'qualquer'), selecione /Azure.

  8. Em Caminho do script, selecione Jenkinsfile.

  9. Selecione Guardar

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.

  1. No seu repo, abra index.html em /gateway/src/main/resources/static/.

  2. Procure enter your login e atualize esse texto para enter login ID.

    <input class="frontforms" id="frontloginform" name="username" placeholder="enter login ID" type="text" autocomplete="off"/>
    
  3. Salve e confirme a alteração.

  4. Execute o trabalho no Jenkins manualmente. No painel Jenkins, selecione o trabalho Deploy-PiggyMetrics e, em seguida, selecione Compilar agora.

Após a conclusão do trabalho, navegue até o gateway IP público do aplicativo e verifique se o aplicativo foi atualizado.

Updated Piggy Metrics

Clean up resources (Limpar recursos)

Quando não for mais necessário, exclua os recursos criados neste artigo:

az group delete -y --no-wait -n <resource group name>

Próximos passos