Esercitazione: Distribuire app in App Spring di Azure usando Jenkins e l'interfaccia della riga di comando di Azure

Nota

Azure Spring Apps è il nuovo nome del servizio Azure Spring Cloud. Anche se il servizio ha un nuovo nome, il nome precedente verrà visualizzato in alcune posizioni per un po' mentre si lavora per aggiornare gli asset, ad esempio screenshot, video e diagrammi.

Azure Spring Apps è uno sviluppo di microservizi completamente gestito con l'individuazione dei servizi e la gestione della configurazione predefinita. Il servizio semplifica la distribuzione di applicazioni di microservizi basate su Spring Boot in Azure. Questa esercitazione illustra come usare l'interfaccia della riga di comando di Azure in Jenkins per automatizzare l'integrazione e il recapito continui (CI/CD) per App Spring di Azure.

In questa esercitazione si completeranno le attività seguenti:

  • Effettuare il provisioning di un'istanza del servizio e avviare un'applicazione Java Spring
  • Preparare il server Jenkins
  • Usare l'interfaccia della riga di comando di Azure in una pipeline Jenkins per compilare e distribuire le applicazioni di microservizi

Prerequisiti

  • Sottoscrizione di Azure: se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.

Effettuare il provisioning di un'istanza del servizio e avviare un'applicazione Java Spring

La metrica Piggy viene usata come applicazione di servizio Microsoft di esempio e viene seguita la stessa procedura descritta in Avvio rapido: Avviare un'applicazione Java Spring usando l'interfaccia della riga di comando di Azure per effettuare il provisioning dell'istanza del servizio e configurare le applicazioni. Se è già stato eseguito lo stesso processo, è possibile passare alla sezione successiva. In caso contrario, di seguito sono inclusi i comandi dell'interfaccia della riga di comando di Azure. Per altre informazioni, vedere Avvio rapido: Avviare un'applicazione Java Spring usando l'interfaccia della riga di comando di Azure.

Il computer locale deve soddisfare lo stesso prerequisito del server di compilazione Jenkins. Verificare che siano installati i componenti seguenti per compilare e distribuire le applicazioni di microservizi:

  1. Installare l'estensione Azure Spring Apps:

    az extension add --name spring
    
  2. Creare un gruppo di risorse per contenere il servizio Azure Spring Apps:

    az group create --location eastus --name <resource group name>
    
  3. Effettuare il provisioning di un'istanza di Azure Spring Apps:

    az spring create -n <service name> -g <resource group name>
    
  4. Creare una copia tramite fork del repository Piggy Metrics per il proprio account GitHub. Nel computer locale clonare il repository in una directory denominata source-code:

    mkdir source-code
    git clone https://github.com/<your GitHub id>/piggymetrics
    
  5. Configurare il server di configurazione. Assicurarsi di sostituire il <proprio ID GitHub> con il valore corretto.

    az spring config-server git set -n <your-service-name> --uri https://github.com/<your GitHub id>/piggymetrics --label config
    
  6. Compilare il progetto:

    cd piggymetrics
    mvn clean package -D skipTests
    
  7. Creare i tre microservizi 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. Distribuire le applicazioni:

    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. Assegnare un endpoint pubblico al gateway:

    az spring app update -n gateway -s <service name> -g <resource group name> --is-public true
    
  10. Eseguire una query sull'applicazione gateway per ottenere il relativo URL in modo da verificare se è in esecuzione.

    az spring app show --name gateway | grep url
    
  11. Passare all'URL specificato dal comando precedente per eseguire l'applicazione PiggyMetrics.

Preparare il server Jenkins

In questa sezione verrà preparato il server Jenkins per eseguire una compilazione corretta per i test. Tuttavia, per motivi di sicurezza, è necessario usare un agente di VM di Azure o un agente di contenitore di Azure per creare un agente in Azure che esegua le compilazioni.

Installare i plug-in

  1. Accedere al server Jenkins.

  2. Selezionare Manage Jenkins (Gestisci Jenkins).

  3. Selezionare Manage Plugins (Gestisci plug-in).

  4. Nella scheda Disponibili selezionare i plug-in seguenti:

    Se questi plug-in non sono inclusi nell'elenco, passare alla scheda Installati per verificare se sono già installati.

  5. Per installare i plug-in, selezionare Scarica ora e installa dopo il riavvio.

  6. Riavviare il server Jenkins per completare l'installazione.

Aggiungere le credenziali dell'entità servizio di Azure nell'archivio delle credenziali di Jenkins

  1. Per eseguire la distribuzione in Azure, è necessaria un'entità servizio di Azure. Per altre informazioni, vedere la sezione Creare l'entità servizio dell'esercitazione Eseguire la distribuzione in Servizio app di Azure. L'output di az ad sp create-for-rbac è simile al seguente:

    {
        "appId": "xxxxxx-xxx-xxxx-xxx-xxxxxxxxxxxx",
        "displayName": "xxxxxxxjenkinssp",
        "name": "http://xxxxxxxjenkinssp",
        "password": "xxxxxx-xxx-xxxx-xxx-xxxxxxxxxxxx",
        "tenant": "xxxxxx--xxx-xxxx-xxx-xxxxxxxxxxxx"
    }
    
  2. Nel dashboard di Jenkins selezionare Credentials>System (Credenziali > Sistema). Quindi, selezionare Global credentials(unrestricted) (Credenziali globali senza restrizioni).

  3. Selezionare Aggiungi credenziali.

  4. Selezionare Entità servizio di Microsoft Azure come tipo.

  5. Fornire i valori per i campi seguenti:

    • ID sottoscrizione: ID sottoscrizione di Azure
    • ID client: id appid dell'entità servizio
    • Segreto client: password dell'entità servizio
    • ID tenant: ID tenant dell'account Microsoft
    • Ambiente Azure: selezionare il valore appropriato per l'ambiente in uso. Usare ad esempio Azure per Azure globale
    • ID: impostare su azure_service_principal. L'ID verrà usato in un passaggio successivo dell'articolo
    • Descrizione: questo valore è facoltativo, ma consigliato dal punto di vista della documentazione/manutenzione.

Installare l'estensione Spring dell'interfaccia della riga di comando di Azure e Maven

La pipeline di esempio usa Maven per compilare e l'interfaccia della riga di comando di Azure per la distribuzione nell'istanza del servizio. Quando viene installato, Jenkins crea un account amministratore denominato jenkins. Assicurarsi che l'utente jenkins disponga dell'autorizzazione per eseguire l'estensione spring.

  1. Connessione al controller Jenkins tramite SSH.

  2. Installare Maven.

    sudo apt-get install maven
    
  3. Verificare che l'interfaccia della riga di comando di Azure sia installata immettendo az version. Se l'interfaccia della riga di comando di Azure non è installata, vedere Installazione dell'interfaccia della riga di comando di Azure.

  4. Passare all'utente jenkins:

    sudo su jenkins
    
  5. Installare l'estensione spring:

    az extension add --name spring
    

Creare un Jenkinsfile

  1. Nel repository: https://github.com/your_github_id/piggymetrics creare un file Jenkins nella radice.

  2. Aggiornare il file come segue. Assicurarsi di sostituire i valori del nome> del gruppo di risorse e <del nome> del <servizio. Sostituire azure_service_principal con l'ID corretto se è stato usato un valore diverso quando sono state aggiunte le credenziali in 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. Salvare la modifica ed eseguirne il commit.

Creare il processo

  1. Nel dashboard di Jenkins selezionare Nuovo elemento.

  2. Specificare il nome Deploy-PiggyMetrics per il processo e selezionare Pipeline. Fare clic su OK.

  3. Selezionare la scheda Pipeline.

  4. Per Definition selezionare Pipeline script from SCM.

  5. Per SCM selezionare Git.

  6. Immettere l'URL di GitHub per il repository con fork: https://github.com/&lt;your GitHub id&gt;/piggymetrics.git.

  7. Per Identificatore di ramo (nero per "any"), selezionare /Azure.

  8. Per Percorso script selezionare Jenkinsfile.

  9. Seleziona Salva

Convalidare ed eseguire il processo

Prima di eseguire il processo, modificare il testo nella casella di input dell'account di accesso per immettere l'ID di accesso.

  1. Nel repository aprire index.html in /gateway/src/main/resources/static/.

  2. enter your login Cercare e aggiornare il testo in enter login ID.

    <input class="frontforms" id="frontloginform" name="username" placeholder="enter login ID" type="text" autocomplete="off"/>
    
  3. Salvare la modifica ed eseguirne il commit.

  4. Eseguire manualmente il processo in Jenkins. Nel dashboard di Jenkins selezionare il processo Deploy-PiggyMetrics e quindi selezionare Compila adesso.

Al termine del processo, passare all'indirizzo IP pubblico dell'applicazione e verificare che l'applicazione gateway sia stata aggiornata.

Updated Piggy Metrics

Pulire le risorse

Quando non sono più necessarie, eliminare le risorse create in questo articolo:

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

Passaggi successivi