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

Azure Spring Cloud ä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 Cloud.

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 Kody 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. Annars ingår Azure CLI-kommandona i följande. Mer bakgrundsinformation finns i Snabbstart: Starta ett Java Spring-program med Hjälp av Azure CLI.

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 Cloud tillägget:

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

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

    az spring-cloud create -n <service name> -g <resource group name>
    
  4. Fördring lagringsplatsen För dina GitHub mått. 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 ersätta < ditt GitHub-ID > med rätt värde.

    az spring-cloud 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änster: gateway,auth-serviceoch account-service:

    az spring-cloud app create --n gateway -s <service name> -g <resource group name>
    az spring-cloud app create --n auth-service -s <service name> -g <resource group name>
    az spring-cloud app create --n account-service -s <service name> -g <resource group name>
    
  8. Distribuera programmen:

    az spring-cloud app deploy -n gateway -s <service name> -g <resource group name> --jar-path ./gateway/target/gateway.jar
    az spring-cloud app deploy -n account-service -s <service name> -g <resource group name> --jar-path ./account-service/target/account-service.jar
    az spring-cloud 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-cloud 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-cloud app show --name gateway | grep url
    
  11. Gå till URL:en som angavs av föregående kommando för att köra Programmet SymmetryMetrics.

Förbereda Jenkins-servern

I det här avsnittet förbereder du Jenkins-servern för att köra en version, vilket är ok för testning. På grund av säkerhetsaspekten bör du dock använda en Azure VM-agent eller Azure Container-agent för att starta en agent i Azure för att köra dina byggen.

Installera plugin-program

  1. Logga in på Jenkins-servern. Välj Hantera Jenkins Manage Plugins (Hantera Jenkins-plugin-program).

  2. fliken Tillgänglig väljer du följande plugin-program:

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

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

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

Lägg till dina autentiseringsuppgifter för Azure-tjänstens huvudnamn i Jenkins-autentiseringsarkivet

  1. Du behöver azure-tjänstens huvudnamn för distribution till Azure. Mer information finns i avsnittet Skapa tjänstens huvudnamn i självstudien Distribuera Azure App Service tjänsthuvudnamn. 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 AutentiseringsuppgifterSystem. 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:Microsoft-konto klientorganisations-ID
    • Azure-miljö:Välj lämpligt värde för din miljö. Använd till exempel Azure för Azure Global
    • ID:Ange som . Vi använder detta ID i ett senare steg i den här artikeln
    • Beskrivning:Detta är valfritt, men rekommenderas.

Installera Maven- och Az CLI spring-cloud-tillägget

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

  1. Anslut jenkins-styrenheten via SSH.

  2. Installera Maven.

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

  4. Växla till jenkins användaren:

    sudo su jenkins
    
  5. Lägg till spring-cloud-tillägget:

    az extension add --name spring-cloud
    

Skapa en Jenkins-fil

  1. Skapa en Jenkinsfile i roten GitHub din egen lagringsplatsen (ditt https://github.com/< GitHub-id/GitHub metrics). >https://github.com/

  2. Uppdatera filen på följande sätt. Se till att ersätta värdena för resursgruppens namn > och>. Ersätt azure_service_principal med rätt ID om du använder ett annat värde när du lade till autentiseringssuppgifter i Jenkins.

        node {
          stage('init') {
            checkout scm
          }
          stage('build') {
            sh 'mvn clean package'
          }
          stage('deploy') {
            withCredentials([azureServicePrincipal('azure_service_principal')]) {
              // login 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-cloud=<service name>'
              // Deploy applications
              sh 'az spring-cloud app deploy -n gateway --jar-path ./gateway/target/gateway.jar'
              sh 'az spring-cloud app deploy -n account-service --jar-path ./account-service/target/account-service.jar'
              sh 'az spring-cloud app deploy -n auth-service --jar-path ./auth-service/target/auth-service.jar'
              sh 'az logout'
            }
          }
        }
    
  3. Spara och genomför ändringen.

Skapa jobbet

  1. På Jenkins-instrumentpanelen klickar du på Nytt objekt.

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

  3. Klicka på fliken Pipeline.

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

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

  6. Ange url GitHub adressen för den fördelade lagringsplatsen: < ditt GitHub-id > /GitHub metrics.git

  7. Kontrollera att Branch Specifier (svart för "any") är */Azure

  8. Behåll skriptsökvägen som Jenkinsfile

  9. Klicka på Spara

Verifiera och köra jobbet

Innan du kör jobbet uppdaterar vi texten i inloggningsrutan för att ange inloggnings-ID: t.

  1. Öppna i din egen index.html lagringsplatsen index.html

  2. Sök efter "ange din inloggning" och uppdatera till "ange inloggnings-ID"

    <input class="frontforms" id="frontloginform" name="username" placeholder="enter login ID" type="text" autocomplete="off"/>
    
  3. Genomför ändringarna

  4. Kör jobbet i Jenkins manuellt. På Jenkins-instrumentpanelen klickar du på jobbet Deploy-PatiMetrics och sedan på Build Now (Skapa nu).

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

Uppdaterade Tary Metrics

Rensa resurser

Ta bort resurserna som skapades 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