Zelfstudie: Apps implementeren Azure Spring Cloud jenkins en de Azure CLI

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

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, maak dan een gratis account aan voordat u begint.

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

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

Uw lokale computer moet voldoen aan dezelfde vereiste 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 Cloud extensie:

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

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

    az spring-cloud create -n <service name> -g <resource group name>
    
  4. Fork de Piggy Metrics-repo naar uw eigen GitHub account. Kloon uw repo 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 < de id GitHub vervangen door de juiste > waarde.

    az spring-cloud 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,auth-serviceen 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. De toepassingen implementeren:

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

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

    az spring-cloud 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 op het uitvoeren van een build. Dit is prima om te testen. Vanwege beveiligingsrisico's 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.

In plug-ins installeren

  1. Meld u aan bij uw Jenkins-server. Kies Manage Jenkins Manage Plugins.

  2. Selecteer op het tabblad Beschikbaar de volgende in plug-ins:

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

  3. Als u de in plug-ins wilt installeren, kiest u Nu downloaden en installeert u na het opnieuw opstarten.

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

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

  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 informatie. De uitvoer van az ad sp create-for-rbac ziet er als volgende 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 ReferentiesSysteem op het Jenkins-dashboard. Selecteer vervolgens Algemene referenties (onbeperkt).

  3. Selecteer Referenties toevoegen.

  4. Selecteer Microsoft Azure Service-principal als soort.

  5. Waarden voor de volgende velden op te geven:

    • Abonnements-id:Azure-abonnements-id
    • Client-id:appid van service-principal
    • Clientgeheim:Wachtwoord van service-principal
    • Tenant-id:Microsoft-account tenant-id
    • Azure-omgeving:selecteer de juiste waarde voor uw omgeving. Gebruik bijvoorbeeld Azure voor Azure Global
    • Id:stel in als . We gebruiken deze id in een latere stap in dit artikel
    • Beschrijving:dit is optioneel, maar wordt aanbevolen.

Maven en Az CLI spring-cloud-extensie installeren

De voorbeeldpijplijn maakt gebruik van Maven om te bouwen en Az CLI om te implementeren in het service-exemplaar. Wanneer Jenkins is geïnstalleerd, wordt er een beheerdersaccount met de naam jenkins gemaakt. Zorg ervoor dat de gebruiker jenkins toestemming heeft om de Spring-Cloud-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 in te az version invoeren. Zie Azure CLI installeren als de Azure CLI niet is geïnstalleerd.

  4. Schakel over naar de jenkins gebruiker:

    sudo su jenkins
    
  5. Voeg de spring-cloudextensie toe:

    az extension add --name spring-cloud
    

Een Jenkinsfile maken

  1. Maak in uw eigen repo https://github.com/< (uw GitHub > id /piggymetrics) een https://github.com/ in de hoofdmap.

  2. Werk het bestand als volgt bij. Zorg ervoor dat u de waarden van resourcegroepnaam en >> Vervang azure_service_principal door de juiste id als u een andere waarde gebruikt toen u de referentie in Jenkins hebt toegevoegd.

        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. Sla de wijziging op en sla deze door.

De taak maken

  1. Klik op het Jenkins-dashboard op Nieuw item.

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

  3. Klik nu op het tabblad Pijplijn.

  4. Selecteer bij Definitie de optie Pijplijnscript uit SCM.

  5. Bij SCM selecteert u Git.

  6. Voer de GitHub-URL voor uw gevorkte repo in: < uw GitHub > id /piggymetrics.git

  7. Zorg ervoor dat Vertakkings specificer (zwart voor 'any') */Azure is

  8. Scriptpad behouden als Jenkinsfile

  9. Klik op Opslaan.

De taak valideren en uitvoeren

Voordat u de taak gaat uitvoeren, werken we de tekst in het invoervak voor aanmelding bij om de aanmeldings-id in te voeren.

  1. Open in uw eigen repo index.html in index.html

  2. Zoek naar 'voer uw aanmelding in' en werk bij naar 'aanmeldings-id invoeren'

    <input class="frontforms" id="frontloginform" name="username" placeholder="enter login ID" type="text" autocomplete="off"/>
    
  3. De wijzigingen door te voeren

  4. Voer de taak handmatig uit in Jenkins. Klik op het Jenkins-dashboard op de taak Deploy-PiggyMetrics en vervolgens op Build Now.

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

Bijgewerkte metrische Piggy-gegevens

Resources opschonen

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

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

Volgende stappen