Tutorial: Bereitstellen von Apps in Azure Spring Cloud mithilfe von Jenkins und der Azure-BefehlszeilenschnittstelleTutorial: Deploy apps to Azure Spring Cloud using Jenkins and the Azure CLI

Azure Spring Cloud ist eine vollständig verwaltete Microserviceentwicklung mit integrierter Dienstermittlung und Konfigurationsverwaltung.Azure Spring Cloud is a fully managed microservice development with built-in service discovery and configuration management. Der Dienst vereinfacht die Bereitstellung Spring Boot-basierter Microserviceanwendungen in Azure.The service makes it easy to deploy Spring Boot-based microservice applications to Azure. In diesem Tutorial erfahren Sie, wie Sie die Azure-Befehlszeilenschnittstelle in Jenkins verwenden, um Continuous Integration und Continuous Delivery (CI/CD) für Azure Spring Cloud zu automatisieren.This tutorial demonstrates how you can use Azure CLI in Jenkins to automate continuous integration and delivery (CI/CD) for Azure Spring Cloud.

Dieses Tutorial umfasst folgende Aufgaben:In this tutorial, you'll complete these tasks:

  • Bereitstellen einer Dienstinstanz und Starten einer Java Spring-AnwendungProvision a service instance and launch a Java Spring application
  • Vorbereiten Ihres Jenkins-ServersPrepare your Jenkins server
  • Verwenden der Azure-Befehlszeilenschnittstelle in einer Jenkins-Pipeline, um die Microserviceanwendungen zu erstellen und bereitzustellenUse the Azure CLI in a Jenkins pipeline to build and deploy the microservice applications

In diesem Tutorial werden Kenntnisse im Zusammenhang mit grundlegenden Azure-Diensten, mit Azure Spring Cloud, mit Pipelines und Plug-Ins von Jenkins sowie mit GitHub vorausgesetzt.This tutorial assumes intermediate knowledge of core Azure services, Azure Spring Cloud, Jenkins pipelines and plug-ins, and GitHub.

VoraussetzungenPrerequisites

Hinweis

Azure Spring Cloud wird zurzeit als Public Preview angeboten.Azure Spring Cloud is currently offered as a public preview. Angebote der Public Preview ermöglichen Kunden das Experimentieren mit neuen Funktionen vor der offiziellen Veröffentlichung.Public preview offerings allow customers to experiment with new features prior to their official release. Funktionen und Dienste in der Public Preview sind nicht zur Verwendung in der Produktion bestimmt.Public preview features and services are not meant for production use. Weitere Informationen zur Unterstützung während der Vorschauphase finden Sie in den häufig gestellten Fragen. Sie können auch eine Supportanfrage einreichen, um weitere Informationen zu erhalten.For more information about support during previews, please review our FAQ or file a Support request to learn more.

  • Azure-Abonnement: Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.Azure subscription: If you don't have an Azure subscription, create a free account before you begin.

Bereitstellen einer Dienstinstanz und Starten einer Java Spring-AnwendungProvision a service instance and launch a Java Spring application

Wir verwenden Piggy Metrics als exemplarische Microsoft-Dienstanwendung und gehen wie unter Schnellstart: Starten einer Java Spring-Anwendung mit der Azure CLI beschrieben vor, um die Dienstinstanz bereitzustellen und die Anwendungen einzurichten.We use Piggy Metrics as the sample Microsoft service application and follow the same steps in Quickstart: Launch a Java Spring application using the Azure CLI to provision the service instance and set up the applications. Falls Sie diesen Prozess bereits durchlaufen haben, können Sie direkt mit dem nächsten Abschnitt fortfahren.If you have already gone through the same process, you can skip to the next section. Andernfalls finden Sie im Anschluss die Azure CLI-Befehle.Otherwise, included in the following are the Azure CLI commands. Weitere Hintergrundinformationen finden Sie unter Schnellstart: Starten einer Java Spring-Anwendung mit der Azure CLI.Refer to Quickstart: Launch a Java Spring application using the Azure CLI to get additional background information.

Ihr lokaler Computer muss die gleichen Voraussetzungen erfüllen wie der Jenkins-Buildserver.Your local machine needs to meet the same prerequisite as the Jenkins build server. Zum Erstellen und Bereitstellen der Microserviceanwendungen muss Folgendes installiert sein:Make sure the following are installed to build and deploy the microservice applications: * Git-ClientGit * JDK 8JDK 8 * Maven 3.0 oder höherMaven 3.0 or above * Installation der Azure-Befehlszeilenschnittstelle (Version 2.0.67 oder höher)Azure CLI installed, version 2.0.67 or higher

  1. Installieren Sie die Azure Spring Cloud-Erweiterung:Install the Azure Spring Cloud extension:

        az extension add --name spring-cloud
    
  2. Erstellen Sie eine Ressourcengruppe für Ihren Azure Spring Cloud-Dienst:Create a resource group to contain your Azure Spring Cloud service:

        az group create --location eastus --name <resource group name>
    
  3. Stellen Sie eine Instanz von Azure Spring Cloud bereit:Provision an instance of Azure Spring Cloud:

        az spring-cloud create -n <service name> -g <resource group name>
    
  4. Forken Sie das Repository Piggy Metrics zu Ihrem eigenen GitHub-Konto.Fork the Piggy Metrics repo to your own GitHub account. Klonen Sie das Repository auf Ihrem lokalen Computer in einem Verzeichnis mit dem Namen source-code:In your local machine, clone your repo in a directory called source-code:

        mkdir source-code
        git clone https://github.com/<your GitHub id>/piggymetrics
    
  5. Richten Sie Ihren Konfigurationsserver ein.Set up your configuration server. Ersetzen Sie „<your GitHub id>“ durch den korrekten Wert.Make sure you replace <your GitHub id> with the correct value.

        az spring-cloud config-server git set -n <your-service-name> --uri https://github.com/<your GitHub id>/piggymetrics --label config
    
  6. Erstellen Sie das Projekt:Build the project:

        cd piggymetrics
        mvn clean package -D skipTests
    
  7. Erstellen Sie die drei Microservices gateway, auth-service und account-service:Create the three microservices: gateway, auth-service, and 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. Stellen Sie die Anwendungen bereit:Deploy the applications:

        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. Weisen Sie den öffentlichen Endpunkt dem Gateway zu:Assign public endpoint to gateway:

        az spring-cloud app update -n gateway -s <service name> -g <resource group name> --is-public true
    
  10. Fragen Sie die URL der Gatewayanwendung ab, um überprüfen zu können, ob die Anwendung ausgeführt wird.Query the gateway application to get the url so that you can verify that the application is running.

    az spring-cloud app show --name gateway | grep url
    

    Navigieren Sie zu der URL, die mit dem vorherigen Befehl zurückgegeben wurde, um die PiggyMetrics-Anwendung auszuführen.Navigate to the URL provided by the previous command to run the PiggyMetrics application.

Vorbereiten des Jenkins-ServersPrepare Jenkins server

In diesem Abschnitt wird der Jenkins-Server für die Ausführung eines Builds vorbereitet. Dies ist zu Testzwecken ausreichend.In this section, you prepare the Jenkins server to run a build, which is fine for testing. Aus Sicherheitsgründen sollten Sie jedoch einen Azure-VM-Agent oder den Azure Container-Agent verwenden, um einen Agent zum Ausführen Ihrer Builds in Azure zu starten.However, because of security implication, you should use an Azure VM agent or Azure Container agent to spin up an agent in Azure to run your builds. Weitere Informationen finden Sie im Jenkins-Artikel Sicherheitsaspekte beim Erstellen auf Masterknoten (in englischer Sprache).For more information, see the Jenkins article on the security implications of building on master.

Installieren von Plug-InsInstall plug-ins

  1. Melden Sie sich bei Ihrem Jenkins-Server an.Sign in to your Jenkins server. Wählen Sie Manage Jenkins > Manage Plugins (Jenkins verwalten >Plug-Ins verwalten) aus.Choose Manage Jenkins > Manage Plugins.

  2. Wählen Sie auf der Registerkarte Available (Verfügbar) die folgenden Plug-Ins aus:On the Available tab, select the following plug-ins:

    Sollten diese Plug-Ins nicht in der Liste enthalten sein, überprüfen Sie auf der Registerkarte Installed (Installiert), ob sie bereits installiert sind.If these plug-ins don't appear in the list, check the Installed tab to see if they're already installed.

  3. Wählen Sie zum Installieren der Plug-Ins die Option Download now and install after restart (Jetzt herunterladen und nach Neustart installieren) aus.To install the plug-ins, choose Download now and install after restart.

  4. Starten Sie Ihren Jenkins-Server neu, um die Installation abzuschließen.Restart your Jenkins server to complete the installation.

Hinzufügen Ihrer Anmeldeinformationen für den Azure-Dienstprinzipal im Jenkins-AnmeldeinformationsspeicherAdd your Azure Service Principal credential in Jenkins credential store

  1. Für Bereitstellungen in Azure ist ein Azure-Dienstprinzipal erforderlich.You need an Azure Service Principal to deploy to Azure. Weitere Informationen finden Sie im Abschnitt Erstellen eines Dienstprinzipals des Bereitstellungstutorials für Azure App Service.For more information, see the Create service principal section in the Deploy to Azure App Service tutorial. Die Ausgabe von az ad sp create-for-rbac sieht in etwa wie folgt aus:The output from az ad sp create-for-rbac looks something like this:

    {
        "appId": "xxxxxx-xxx-xxxx-xxx-xxxxxxxxxxxx",
        "displayName": "xxxxxxxjenkinssp",
        "name": "http://xxxxxxxjenkinssp",
        "password": "xxxxxx-xxx-xxxx-xxx-xxxxxxxxxxxx",
        "tenant": "xxxxxx--xxx-xxxx-xxx-xxxxxxxxxxxx"
    }
    
  2. Wählen Sie im Jenkins-Dashboard die Option Anmeldeinformationen > System aus.On the Jenkins dashboard, select Credentials > System. Wählen Sie anschließend Globale Anmeldeinformationen (uneingeschränkt) aus.Then, select Global credentials(unrestricted).

  3. Wählen Sie Add Credentials (Anmeldeinformationen hinzufügen) aus.Select Add Credentials.

  4. Wählen Sie den Typ Microsoft Azure Service Principal (Microsoft Azure-Dienstprinzipal) aus.Select Microsoft Azure Service Principal as kind.

  5. Geben Sie Werte für Folgendes an: * Abonnement-ID: Verwenden Sie Ihre Azure-Abonnement-ID. * Client-ID: Verwenden Sie appId. * Clientgeheimnis: Verwenden Sie password. * Mandanten-ID: Verwenden Sie tenant. * Azure-Umgebung: Wählen Sie einen der vorgegebenen Werte aus.Supply values for: * Subscription ID: use your Azure subscription ID * Client ID: use appId * Client Secret: use password * Tenant ID: use tenant * Azure Environment: select a pre-set value. Verwenden Sie beispielsweise Azure für Azure Global. * ID: Verwenden Sie azure_service_principal.For example, use Azure for Azure Global * ID: set as azure_service_principal. Diese ID wird in einem späteren Schritt dieses Artikels verwendet. * Beschreibung: Optionales Feld.We use this ID in a later step in this article * Description: is an optional field. Es empfiehlt sich, einen aussagekräftigen Wert anzugeben.We recommend providing a meaningful value here.

Installieren von Maven und der Azure CLI-Erweiterung für Spring CloudInstall Maven and Az CLI spring-cloud extension

Die Beispielpipeline verwendet Maven zum Erstellen und die Azure-Befehlszeilenschnittstelle zum Bereitstellen der Dienstinstanz.The sample pipeline uses Maven to build and Az CLI to deploy to the service instance. Bei der Installation von Jenkins wird ein Administratorkonto namens jenkins erstellt.When Jenkins is installed, it creates an admin account named jenkins. Stellen Sie sicher, dass der Benutzer jenkins zum Ausführen der Spring Cloud-Erweiterung berechtigt ist.Ensure that the user jenkins has permission to run the spring-cloud extension.

  1. Stellen Sie eine SSH-Verbindung mit dem Jenkins-Master her.Connect to the Jenkins master via SSH.

  2. Installieren Sie Maven:Install Maven

        sudo apt-get install maven 
    
  3. Installieren Sie die Azure-Befehlszeilenschnittstelle.Install the Azure CLI. Weitere Informationen finden Sie unter Installieren der Azure CLI.For more information, see Installing the Azure CLI. Bei Verwendung des Jenkins-Masters in Azure ist die Azure-Befehlszeilenschnittstelle standardmäßig installiert.Azure CLI is installed by default if you use Jenkins Master on Azure.

  4. Wechseln Sie zum Benutzer jenkins:Switch to the jenkins user:

        sudo su jenkins
    
  5. Fügen Sie die Erweiterung spring-cloud hinzu:Add the spring-cloud extension:

        az extension add --name spring-cloud
    

Erstellen einer JenkinsfileCreate a Jenkinsfile

  1. Erstellen Sie in Ihrem eigenen Repository (https://github.com/&lt ;Ihre GitHub-ID> /piggymetrics), eine Jenkinsfile im Stammverzeichnis.In your own repo (https://github.com/<your GitHub id>/piggymetrics), create a Jenkinsfile in the root.

  2. Aktualisieren Sie die Datei wie folgt.Update the file as follows. Ersetzen Sie die Werte von <resource group name> und <service name> .Make sure you replace the values of <resource group name> and <service name>. Falls Sie beim Hinzufügen der Anmeldeinformationen in Jenkins einen anderen Wert verwendet haben, ersetzen Sie azure_service_principal durch die korrekte ID.Replace azure_service_principal with the right ID if you use a different value when you added the credential in 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 configure --defaults group=<resource group name>'
              sh 'az configure --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. Speichern und committen Sie die Änderung.Save and commit the change.

Erstellen des AuftragsCreate the job

  1. Klicken Sie auf dem Jenkins-Dashboard auf New Item (Neues Element).On the Jenkins dashboard, click New Item.

  2. Geben Sie einen Namen (Deploy-PiggyMetrics) für den Auftrag an, und wählen Sie Pipeline aus.Provide a name, Deploy-PiggyMetrics for the job and select Pipeline. Klicken Sie auf OK.Click OK.

  3. Klicken Sie dann auf die Registerkarte Pipeline.Click the Pipeline tab next.

  4. Wählen Sie als Definition die Option Pipeline script from SCM (Pipeline-Skript von SCM) aus.For Definition, select Pipeline script from SCM.

  5. Wählen Sie als SCM die Option Git aus.For SCM, select Git.

  6. Geben Sie die GitHub-URL für Ihr geforktes Repository ein: https://github.com/&lt ;Ihre GitHub-ID> /piggymetrics.gitEnter the GitHub URL for your forked repo: https://github.com/<your GitHub id>/piggymetrics.git

  7. Vergewissern Sie sich, dass Branch Specifier (black for 'any') (Branchspezifizierer (schwarz für „beliebig“)) auf * /Azure festgelegt ist.Make sure Branch Specifier (black for 'any') is */Azure

  8. Behalten Sie für Script Path (Skriptpfad) die Einstellung Jenkinsfile bei.Keep Script path as Jenkinsfile

  9. Klicken Sie unten auf der Seite auf Speichern.Click Save

Überprüfen und Ausführen des AuftragsValidate and run the job

Vor dem Ausführen des Auftrags ändern wir noch den Text im Eingabefeld für die Anmeldung in enter login ID (Anmelde-ID eingeben).Before running the job, let's update the text in the login input box to enter login ID.

  1. Öffnen Sie hierzu in Ihrem eigenen Repository index.html (unter /gateway/src/main/resources/static/ ).In your own repo, open index.html in /gateway/src/main/resources/static/

  2. Suchen Sie nach „enter your login“ (Anmeldename eingeben), und ändern Sie den Text in „enter login ID“ (Anmelde-ID eingeben).Search for "enter your login" and update to "enter login ID"

        <input class="frontforms" id="frontloginform" name="username" placeholder="enter login ID" type="text" autocomplete="off"/>
    
  3. Übergeben der ÄnderungenCommit the changes

  4. Führen Sie den Auftrag manuell in Jenkins aus.Run the job in Jenkins manually. Klicken Sie auf dem Jenkins-Dashboard auf den Auftrag Deploy-PiggyMetrics und anschließend auf Build Now (Jetzt erstellen).On the Jenkins dashboard, click the job Deploy-PiggyMetrics and then Build Now.

Navigieren Sie nach Abschluss des Auftrags zur öffentlichen IP-Adresse der Anwendung gateway, und vergewissern Sie sich, dass die Anwendung aktualisiert wurde.After the job is complete, navigate to the public IP of the gateway application and verify that your application has been updated.

Aktualisierte Version von Piggy Metrics

Bereinigen von RessourcenClean up resources

Löschen Sie die in diesem Artikel erstellten Ressourcen, wenn Sie sie nicht mehr benötigen:When no longer needed, delete the resources created in this article:

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

Nächste SchritteNext steps

In diesem Artikel haben Sie gelernt, wie Sie die Azure-Befehlszeilenschnittstelle in Jenkins verwenden, um Continuous Integration und Continuous Delivery (CI/CD) für Azure Spring Cloud zu automatisieren.In this article, you learned how to use Azure CLI in Jenkins to automate continuous integration and delivery (CI/CD) for Azure Spring Cloud.

Weitere Informationen zum Azure Jenkins-Anbieter finden Sie in der Dokumentation zu Jenkins in Azure.To learn more about Azure Jenkins provider, see the Jenkins on Azure site.