Självstudie: Distribuera appar till Azure Spring Apps med Jenkins och Azure CLI

Kommentar

Azure Spring Apps är det nya namnet på Azure Spring Cloud-tjänsten. Även om tjänsten har ett nytt namn ser du det gamla namnet på vissa platser ett tag medan vi arbetar med att uppdatera tillgångar som skärmbilder, videor och diagram.

Azure Spring Apps är en fullständigt hanterad mikrotjänstutveckling med inbyggd tjänstidentifiering och konfigurationshantering. Tjänsten gör det enkelt att distribuera Spring Boot-baserade mikrotjänstprogram till Azure. Den här självstudien visar hur du kan använda Azure CLI i Jenkins för att automatisera kontinuerlig integrering och leverans (CI/CD) för Azure Spring Apps.

I den här självstudien får du utföra följande uppgifter:

  • Etablera en tjänstinstans och starta ett Java Spring-program
  • Förbereda Jenkins-servern
  • Använda Azure CLI i en Jenkins-pipeline för att skapa och distribuera mikrotjänstprogrammen

Förutsättningar

  • Azure-prenumeration: Om du inte har någon Azure-prenumeration kan du skapa ett kostnadsfritt konto innan du börjar.

Etablera en tjänstinstans och starta ett Java Spring-program

Vi använder Piggy Metrics som Microsoft-exempeltjänstprogram och följer samma steg i Snabbstart: Starta ett Java Spring-program med Hjälp av Azure CLI för att etablera tjänstinstansen och konfigurera programmen. Om du redan har gått igenom samma process kan du gå vidare till nästa avsnitt. I annat fall ingår i följande Azure CLI-kommandon. Läs snabbstart: Starta ett Java Spring-program med Hjälp av Azure CLI för att få mer information.

Den lokala datorn måste uppfylla samma krav som Jenkins-byggservern. Kontrollera att följande är installerade för att skapa och distribuera mikrotjänstprogrammen:

  1. Installera Azure Spring Apps-tillägget:

    az extension add --name spring
    
  2. Skapa en resursgrupp som ska innehålla din Azure Spring Apps-tjänst:

    az group create --location eastus --name <resource group name>
    
  3. Etablera en instans av Azure Spring Apps:

    az spring create -n <service name> -g <resource group name>
    
  4. Förgrena lagringsplatsen för Piggy Metrics till ditt eget GitHub-konto. På den lokala datorn klonar du lagringsplatsen i en katalog med namnet source-code:

    mkdir source-code
    git clone https://github.com/<your GitHub id>/piggymetrics
    
  5. Konfigurera konfigurationsservern. Se till att du ersätter <ditt GitHub-ID> med rätt värde.

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

    cd piggymetrics
    mvn clean package -D skipTests
    
  7. Skapa de tre mikrotjänsterna: gateway, autentiseringstjänst och kontotjänst:

    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. Distribuera programmen:

    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. Tilldela offentlig slutpunkt till gateway:

    az spring app update -n gateway -s <service name> -g <resource group name> --is-public true
    
  10. Fråga gatewayprogrammet för att hämta URL:en så att du kan kontrollera att programmet körs.

    az spring app show --name gateway | grep url
    
  11. Gå till url:en som angavs i föregående kommando för att köra PiggyMetrics-programmet.

Förbereda Jenkins-servern

I det här avsnittet förbereder du Jenkins-servern för att köra en version, vilket är bra för testning. Men på grund av säkerhetsaspekter bör du använda en Azure VM-agent eller Azure Container-agent för att starta en agent i Azure för att köra dina versioner.

Installera plugin-program

  1. Logga in på Jenkins-servern.

  2. Välj Hantera Jenkins.

  3. Välj Hantera plugin-program.

  4. På fliken Tillgänglig väljer du följande plugin-program:

    Om dessa plugin-program inte visas i listan markerar du fliken Installerad för att se om de redan är installerade.

  5. Om du vill installera plugin-programmen väljer du Ladda ned nu och installerar efter omstart.

  6. Starta om Jenkins-servern för att slutföra installationen.

Lägg till autentiseringsuppgifterna för Azure-tjänstens huvudnamn i Jenkins-arkivet för autentiseringsuppgifter

  1. Du behöver ett Huvudnamn för Azure-tjänsten för att distribuera till Azure. Mer information finns i avsnittet Skapa tjänstens huvudnamn i självstudien Distribuera till Azure App Service. Utdata från az ad sp create-for-rbac ser ut ungefär så här:

    {
        "appId": "xxxxxx-xxx-xxxx-xxx-xxxxxxxxxxxx",
        "displayName": "xxxxxxxjenkinssp",
        "name": "http://xxxxxxxjenkinssp",
        "password": "xxxxxx-xxx-xxxx-xxx-xxxxxxxxxxxx",
        "tenant": "xxxxxx--xxx-xxxx-xxx-xxxxxxxxxxxx"
    }
    
  2. På Jenkins-instrumentpanelen väljer du Autentiseringsuppgifter>System. Välj sedan Globala autentiseringsuppgifter (obegränsade).

  3. Välj Lägg till autentiseringsuppgifter.

  4. Välj Microsoft Azure-tjänstens huvudnamn som typ.

  5. Ange värden för följande fält:

    • Prenumerations-ID: Azure-prenumerations-ID
    • Klient-ID: Appid för tjänstens huvudnamn
    • Klienthemlighet: Lösenord för tjänstens huvudnamn
    • Klientorganisations-ID: Klient-ID för Microsoft-konto
    • Azure Environment: Välj lämpligt värde för din miljö. Du kan till exempel använda Azure för Azure Global
    • ID: Ange som azure_service_principal. Vi använder det här ID:t i ett senare steg i den här artikeln
    • Beskrivning: Det här värdet är valfritt, men rekommenderas ur dokumentations-/underhållssynpunkt.

Installera Maven- och Azure CLI-springtillägget

Exempelpipelinen använder Maven för att skapa och Azure CLI för att distribuera till tjänstinstansen. När Jenkins har installerats skapar det ett administratörskonto med namnet jenkins. Kontrollera att användaren jenkins har behörighet att köra spring-tillägget.

  1. Anslut till Jenkins-styrenheten via SSH.

  2. Installera Maven.

    sudo apt-get install maven
    
  3. Kontrollera att Azure CLI har installerats genom att ange az version. Om Azure CLI inte är installerat kan du läsa Installera Azure CLI.

  4. Växla till jenkins användaren:

    sudo su jenkins
    
  5. Installera fjädertillägget:

    az extension add --name spring
    

Skapa en Jenkins-fil

  1. I din egen lagringsplats skapar du https://github.com/your_github_id/piggymetrics en Jenkinsfile i roten.

  2. Uppdatera filen på följande sätt. Se till att du ersätter värdena för resursgruppens <namn> och <tjänstnamn.> Ersätt azure_service_principal med rätt ID om du använder ett annat värde när du lade till autentiseringsuppgifterna i 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. Spara och checka in ändringen.

Skapa jobbet

  1. På Jenkins-instrumentpanelen väljer du Nytt objekt.

  2. Ange ett namn, Deploy-PiggyMetrics för jobbet och välj Pipeline. Klicka på OK.

  3. Välj fliken Pipeline.

  4. För Definition väljer du Pipeline-skript från SCM.

  5. För SCM väljer du Git.

  6. Ange GitHub-URL:en för din förgrenade lagringsplats: https://github.com/&lt;your GitHub id&gt;/piggymetrics.git.

  7. För Grenspecificerare (svart för "any") väljer du /Azure.

  8. För Skriptsökväg väljer du Jenkinsfile.

  9. Välj Spara

Verifiera och köra jobbet

Innan du kör jobbet redigerar du texten i indatarutan för inloggning för att ange inloggnings-ID.

  1. Öppna i /gateway/src/main/resources/static/på lagringsplatsenindex.html.

  2. Sök enter your login efter och uppdatera texten till enter login ID.

    <input class="frontforms" id="frontloginform" name="username" placeholder="enter login ID" type="text" autocomplete="off"/>
    
  3. Spara och checka in ändringen.

  4. Kör jobbet i Jenkins manuellt. Välj jobbet Deploy-PiggyMetrics på Jenkins-instrumentpanelen och välj sedan Skapa nu.

När jobbet är klart går du till programmets gateway offentliga IP-adress och kontrollerar att programmet har uppdaterats.

Updated Piggy Metrics

Rensa resurser

Ta bort resurserna som skapas i den här artikeln när de inte längre behövs:

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

Nästa steg