Zelfstudie: Apps implementeren in Azure Spring Apps met behulp van Jenkins en de Azure CLI

Notitie

Azure Spring Apps is de nieuwe naam voor de Azure Spring Cloud-service. Hoewel de service een nieuwe naam heeft, ziet u de oude naam op sommige plaatsen terwijl we werken aan het bijwerken van assets, zoals schermopnamen, video's en diagrammen.

Azure Spring Apps is een volledig beheerde microserviceontwikkeling met ingebouwd servicedetectie- en configuratiebeheer. Met de service kunt u eenvoudig op Spring Boot gebaseerde microservicetoepassingen implementeren in Azure. Deze zelfstudie laat zien hoe u Azure CLI in Jenkins kunt gebruiken om continue integratie en levering (CI/CD) voor Azure Spring Apps te automatiseren.

In deze zelfstudie voert u de volgende taken uit:

  • Een service-exemplaar inrichten en een Java Spring-toepassing starten
  • Uw Jenkins-server voorbereiden
  • De Azure CLI in een Jenkins-pijplijn gebruiken om de microservicetoepassingen te bouwen en te implementeren

Vereisten

  • Azure-abonnement: als u nog geen abonnement op Azure hebt, maakt u een gratis Azure-account aan voordat u begint.

Een service-exemplaar inrichten en een Java Spring-toepassing starten

We gebruiken Piggy Metrics als voorbeeldservicetoepassing van Microsoft en volgen dezelfde stappen in quickstart: Een Java Spring-toepassing starten met behulp van de Azure CLI om het service-exemplaar in te richten en de toepassingen in te stellen. Als u al hetzelfde proces hebt doorlopen, kunt u doorgaan naar de volgende sectie. Anders zijn de Azure CLI-opdrachten opgenomen in het volgende. Raadpleeg quickstart: Een Java Spring-toepassing starten met behulp van de Azure CLI voor meer informatie.

Uw lokale computer moet voldoen aan dezelfde vereisten als de Jenkins-buildserver. Zorg ervoor dat het volgende is geïnstalleerd om de microservicetoepassingen te bouwen en te implementeren:

  1. Installeer de Azure Spring Apps-extensie:

    az extension add --name spring
    
  2. Maak een resourcegroep die uw Azure Spring Apps-service bevat:

    az group create --location eastus --name <resource group name>
    
  3. Een exemplaar van Azure Spring Apps inrichten:

    az spring create -n <service name> -g <resource group name>
    
  4. Fork de Piggy Metrics-opslagplaats naar uw eigen GitHub-account. Kloon uw opslagplaats op uw lokale computer in een map met de naam source-code:

    mkdir source-code
    git clone https://github.com/<your GitHub id>/piggymetrics
    
  5. Stel uw configuratieserver in. Zorg ervoor dat u uw GitHub-id> vervangt door <de juiste waarde.

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

    cd piggymetrics
    mvn clean package -D skipTests
    
  7. Maak de drie microservices: gateway, verificatieservice en accountservice:

    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. De toepassingen implementeren:

    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. Openbaar eindpunt toewijzen aan gateway:

    az spring app update -n gateway -s <service name> -g <resource group name> --is-public true
    
  10. Voer een query uit op de gatewaytoepassing om de URL op te halen, zodat u kunt controleren of de toepassing wordt uitgevoerd.

    az spring app show --name gateway | grep url
    
  11. Ga naar de URL die met de vorige opdracht is opgehaald om de PiggyMetrics-toepassing uit te voeren.

Jenkins-server voorbereiden

In deze sectie bereidt u de Jenkins-server voor om een build uit te voeren. Dit is prima voor testen. Vanwege beveiligingsimplicatie moet u echter een Azure VM-agent of Azure Container-agent gebruiken om een agent in Azure te maken om uw builds uit te voeren.

Invoegtoepassingen installeren

  1. Meld u aan bij uw Jenkins-server.

  2. Selecteer Jenkins beheren.

  3. Selecteer Invoegtoepassingen beheren.

  4. Selecteer op het tabblad Beschikbaar de volgende invoegtoepassingen:

    Als deze invoegtoepassingen niet worden weergegeven in de lijst, controleert u het tabblad Geïnstalleerd om te zien of deze al zijn geïnstalleerd.

  5. Als u de invoegtoepassingen wilt installeren, selecteert u Nu downloaden en installeert u deze na het opnieuw opstarten.

  6. Start de Jenkins-server opnieuw op om de installatie te voltooien.

Uw Azure Service Principal-referentie toevoegen in het Jenkins-referentiearchief

  1. U hebt een Azure-service-principal nodig om te implementeren in Azure. Zie de sectie Service-principal maken in de zelfstudie Implementeren naar Azure-app Service voor meer informatie. De uitvoer ziet az ad sp create-for-rbac er ongeveer als volgt uit:

    {
        "appId": "xxxxxx-xxx-xxxx-xxx-xxxxxxxxxxxx",
        "displayName": "xxxxxxxjenkinssp",
        "name": "http://xxxxxxxjenkinssp",
        "password": "xxxxxx-xxx-xxxx-xxx-xxxxxxxxxxxx",
        "tenant": "xxxxxx--xxx-xxxx-xxx-xxxxxxxxxxxx"
    }
    
  2. Selecteer Referenties>Systeem op het Jenkins-dashboard. Selecteer vervolgens Algemene referenties (onbeperkt).

  3. Selecteer Referenties toevoegen.

  4. Selecteer Microsoft Azure-service-principal als soort.

  5. Geef waarden op voor de volgende velden:

    • Abonnements-id: Azure-abonnements-id
    • Client-id: service-principal-appid
    • Clientgeheim: wachtwoord voor service-principal
    • Tenant-id: Tenant-id van Microsoft-account
    • Azure-omgeving: selecteer de juiste waarde voor uw omgeving. Gebruik bijvoorbeeld Azure voor Azure Global
    • Id: Instellen als azure_service_principal. We gebruiken deze id in een latere stap in dit artikel
    • Beschrijving: Deze waarde is optioneel, maar wordt aanbevolen vanuit het oogpunt van documentatie/onderhoud.

Maven en Azure CLI spring-extensie installeren

De voorbeeldpijplijn maakt gebruik van Maven om te bouwen en Azure CLI om te implementeren in het service-exemplaar. Wanneer Jenkins is geïnstalleerd, wordt er een beheerdersaccount gemaakt met de naam Jenkins. Zorg ervoor dat de jenkins van de gebruiker gemachtigd is om de spring-extensie uit te voeren.

  1. Verbinding maken via SSH naar de Jenkins-controller.

  2. Installeer Maven.

    sudo apt-get install maven
    
  3. Controleer of de Azure CLI is geïnstalleerd door deze in te voeren az version. Als de Azure CLI niet is geïnstalleerd, raadpleegt u De Azure CLI installeren.

  4. Overschakelen naar de jenkins gebruiker:

    sudo su jenkins
    
  5. Installeer de spring-extensie:

    az extension add --name spring
    

Een Jenkins-bestand maken

  1. Maak in uw eigen opslagplaats een https://github.com/your_github_id/piggymetricsJenkins-bestand in de hoofdmap.

  2. Werk het bestand als volgt bij. Zorg ervoor dat u de waarden van de naam> en< servicenaam> van <de resourcegroep vervangt. Vervang azure_service_principal door de juiste id als u een andere waarde gebruikt bij het toevoegen van de referentie 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. Sla de wijziging op en voer deze door.

De taak maken

  1. Selecteer Nieuw item op het Jenkins-dashboard.

  2. Geef een naam op, Deploy-PiggyMetrics voor de taak en selecteer Pipeline. Klik op OK.

  3. Selecteer het tabblad Pijplijn.

  4. Selecteer bij Definitie de optie Pijplijnscript uit SCM.

  5. Bij SCM selecteert u Git.

  6. Voer de GitHub-URL in voor uw geforkte opslagplaats: https://github.com/&lt;your GitHub id&gt;/piggymetrics.git.

  7. Voor Branch Specifier (zwart voor 'any') selecteert u /Azure.

  8. Selecteer Jenkinsfile voor scriptpad.

  9. Selecteer Opslaan

De taak valideren en uitvoeren

Voordat u de taak uitvoert, bewerkt u de tekst in het invoervak voor aanmelding om de aanmeldings-id in te voeren.

  1. Open index.html in /gateway/src/main/resources/static/uw opslagplaats.

  2. enter your login Zoek en werk die tekst bij naar enter login ID.

    <input class="frontforms" id="frontloginform" name="username" placeholder="enter login ID" type="text" autocomplete="off"/>
    
  3. Sla de wijziging op en voer deze door.

  4. Voer de taak handmatig uit in Jenkins. Selecteer de taak Deploy-PiggyMetrics op het Jenkins-dashboard en selecteer Nu bouwen.

Nadat de taak is voltooid, gaat u naar het openbare IP-adres van de gateway toepassing en controleert u of uw toepassing is bijgewerkt.

Updated Piggy Metrics

Resources opschonen

Verwijder de resources die in dit artikel zijn gemaakt wanneer u deze niet meer nodig hebt:

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

Volgende stappen