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.
- Jenkins: Installera Jenkins på en virtuell Linux-dator
- GitHub-konto: Om du inte har något GitHub-konto skapar du 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:
- Git
- JDK 8
- Maven 3.0 eller senare
- Azure CLI installerat, version 2.0.67 eller senare
Installera Azure Spring Apps-tillägget:
az extension add --name spring
Skapa en resursgrupp som ska innehålla din Azure Spring Apps-tjänst:
az group create --location eastus --name <resource group name>
Etablera en instans av Azure Spring Apps:
az spring create -n <service name> -g <resource group name>
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
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
Skapa projektet:
cd piggymetrics mvn clean package -D skipTests
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>
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
Tilldela offentlig slutpunkt till gateway:
az spring app update -n gateway -s <service name> -g <resource group name> --is-public true
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
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
Logga in på Jenkins-servern.
Välj Hantera Jenkins.
Välj Hantera plugin-program.
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.
Om du vill installera plugin-programmen väljer du Ladda ned nu och installerar efter omstart.
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
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" }
På Jenkins-instrumentpanelen väljer du Autentiseringsuppgifter>System. Välj sedan Globala autentiseringsuppgifter (obegränsade).
Välj Lägg till autentiseringsuppgifter.
Välj Microsoft Azure-tjänstens huvudnamn som typ.
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.
Anslut till Jenkins-styrenheten via SSH.
Installera Maven.
sudo apt-get install maven
Kontrollera att Azure CLI har installerats genom att ange
az version
. Om Azure CLI inte är installerat kan du läsa Installera Azure CLI.Växla till
jenkins
användaren:sudo su jenkins
Installera fjädertillägget:
az extension add --name spring
Skapa en Jenkins-fil
I din egen lagringsplats skapar du
https://github.com/your_github_id/piggymetrics
en Jenkinsfile i roten.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' } } }
Spara och checka in ändringen.
Skapa jobbet
På Jenkins-instrumentpanelen väljer du Nytt objekt.
Ange ett namn, Deploy-PiggyMetrics för jobbet och välj Pipeline. Klicka på OK.
Välj fliken Pipeline.
För Definition väljer du Pipeline-skript från SCM.
För SCM väljer du Git.
Ange GitHub-URL:en för din förgrenade lagringsplats:
https://github.com/<your GitHub id>/piggymetrics.git
.För Grenspecificerare (svart för "any") väljer du /Azure.
För Skriptsökväg väljer du Jenkinsfile.
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.
Öppna i
/gateway/src/main/resources/static/
på lagringsplatsenindex.html
.Sök
enter your login
efter och uppdatera texten tillenter login ID
.<input class="frontforms" id="frontloginform" name="username" placeholder="enter login ID" type="text" autocomplete="off"/>
Spara och checka in ändringen.
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.
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>