Tutorial: Bereitstellen von Apps in Azure Spring Apps mithilfe von Jenkins und der Azure CLI

Hinweis

Azure Spring Apps ist der neue Name für den Azure Spring Cloud-Dienst. Obwohl der Dienst umbenannt wurde, wird der alte Name noch an einigen Stellen verwendet, solange wir Ressourcen wie Screenshots, Videos und Diagramme aktualisieren.

Azure Spring Apps ist eine vollständig verwaltete Microservice-Entwicklung mit integrierter Dienstermittlung und Konfigurationsverwaltung. Der Dienst vereinfacht die Bereitstellung Spring Boot-basierter Microserviceanwendungen in Azure. In diesem Lernprogramm wird veranschaulicht, wie Sie azure CLI in Jenkins verwenden können, um die kontinuierliche Integration und Bereitstellung (CI/CD) für Azure Spring Apps zu automatisieren.

Dieses Tutorial umfasst folgende Aufgaben:

  • Bereitstellen einer Dienstinstanz und Starten einer Java Spring-Anwendung
  • Vorbereiten Ihres Jenkins-Servers
  • Verwenden der Azure-Befehlszeilenschnittstelle in einer Jenkins-Pipeline, um die Microserviceanwendungen zu erstellen und bereitzustellen

Voraussetzungen

  • Azure-Abonnement: Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.

Bereitstellen einer Dienstinstanz und Starten einer Java Spring-Anwendung

Wir verwenden Piggy Metrics als Beispiel-Microsoft-Dienstanwendung und führen die gleichen Schritte in der Schnellstartanleitung aus: Starten Sie eine Java Spring-Anwendung mit der Azure CLI , um die Dienstinstanz bereitzustellen und die Anwendungen einzurichten. Wenn Sie denselben Prozess bereits durchlaufen haben, können Sie zum nächsten Abschnitt springen. Andernfalls finden Sie im Anschluss die Azure CLI-Befehle. Informationen finden Sie in der Schnellstartanleitung: Starten Sie eine Java Spring-Anwendung mit der Azure CLI , um weitere Informationen zu erhalten.

Ihr lokaler Computer muss die gleichen Voraussetzungen erfüllen wie der Jenkins-Buildserver. Zum Erstellen und Bereitstellen der Microserviceanwendungen muss Folgendes installiert sein:

  1. Installieren Sie die Azure Spring Apps-Erweiterung:

    az extension add --name spring
    
  2. Erstellen Sie eine Ressourcengruppe, die Ihren Azure Spring Apps-Dienst enthält:

    az group create --location eastus --name <resource group name>
    
  3. Bereitstellen einer Instanz von Azure Spring Apps:

    az spring create -n <service name> -g <resource group name>
    
  4. Forken Sie das Repository Piggy Metrics zu Ihrem eigenen GitHub-Konto. Klonen Sie das Repository auf Ihrem lokalen Computer in einem Verzeichnis mit dem Namen source-code:

    mkdir source-code
    git clone https://github.com/<your GitHub id>/piggymetrics
    
  5. Richten Sie Ihren Konfigurationsserver ein. Ersetzen Sie „<your GitHub id>“ durch den korrekten Wert.

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

    cd piggymetrics
    mvn clean package -D skipTests
    
  7. Erstellen Sie die drei Microservices gateway, auth-service und account-service:

    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. Stellen Sie die Anwendungen bereit:

    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. Weisen Sie den öffentlichen Endpunkt dem Gateway zu:

    az spring 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.

    az spring app show --name gateway | grep url
    
  11. Navigieren Sie zu der URL, die mit dem vorherigen Befehl zurückgegeben wurde, um die PiggyMetrics-Anwendung auszuführen.

Vorbereiten des Jenkins-Servers

In diesem Abschnitt wird der Jenkins-Server für die Ausführung eines Builds vorbereitet. Dies ist zu Testzwecken ausreichend. 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.

Installieren von Plug-Ins

  1. Melden Sie sich bei Ihrem Jenkins-Server an.

  2. Wählen Sie Manage Jenkins aus.

  3. Wählen Sie Manage Plugins aus.

  4. Wählen Sie auf der Registerkarte Available (Verfügbar) die folgenden Plug-Ins aus:

    Sollten diese Plug-Ins nicht in der Liste enthalten sein, überprüfen Sie auf der Registerkarte Installed (Installiert), ob sie bereits installiert sind.

  5. Um die Plug-Ins zu installieren, wählen Sie "Jetzt herunterladen" und "Nach dem Neustart installieren" aus.

  6. Starten Sie Ihren Jenkins-Server neu, um die Installation abzuschließen.

Hinzufügen Ihrer Anmeldeinformationen für den Azure-Dienstprinzipal im Jenkins-Anmeldeinformationsspeicher

  1. Für Bereitstellungen in Azure ist ein Azure-Dienstprinzipal erforderlich. Weitere Informationen finden Sie im Abschnitt Erstellen eines Dienstprinzipals des Bereitstellungstutorials für Azure App Service. Die Ausgabe von az ad sp create-for-rbac sieht in etwa wie folgt aus:

    {
        "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. Wählen Sie anschließend Globale Anmeldeinformationen (uneingeschränkt) aus.

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

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

  5. Geben Sie Werte für die folgenden Felder ein:

    • Abonnement-ID: Azure-Abonnement-ID
    • Client-ID: Dienstprinzipal-Appid
    • Geheimer Clientschlüssel: Dienstprinzipalkennwort
    • Mandanten-ID: Microsoft-Kontomandanten-ID
    • Azure-Umgebung: Wählen Sie den geeigneten Wert für Ihre Umgebung aus. Verwenden Sie beispielsweise Azure für Azure Global.
    • ID: Als festgelegt als azure_service_principal. Wir verwenden diese ID in einem späteren Schritt in diesem Artikel.
    • Beschreibung: Dieser Wert ist optional, wird jedoch aus sicht einer Dokumentation/Standard Tenance empfohlen.

Installieren von Maven und Azure CLI Spring Extension

Die Beispielpipeline verwendet Maven zum Erstellen und Azure CLI für die Bereitstellung in der Dienstinstanz. Bei der Installation von Jenkins wird ein Administratorkonto namens jenkins erstellt. Stellen Sie sicher, dass der Benutzer jenkins über die Berechtigung zum Ausführen der Federerweiterung verfügt.

  1. Stellen Sie eine SSH-Verbindung mit dem Jenkins-Controller her.

  2. Installieren Sie Maven.

    sudo apt-get install maven
    
  3. Überprüfen Sie, ob die Azure CLI installiert ist, indem Sie az version eingeben. Wenn die Azure CLI nicht installiert ist, lesen Sie die Installation der Azure CLI.

  4. Wechseln Sie zum Benutzer jenkins:

    sudo su jenkins
    
  5. Installieren Sie die Federerweiterung:

    az extension add --name spring
    

Erstellen einer Jenkinsfile

  1. Erstellen Sie in Ihrem eigenen Repository - https://github.com/your_github_id/piggymetrics eine Jenkinsfile im Stamm.

  2. Aktualisieren Sie die Datei wie folgt. Stellen Sie sicher, dass Sie die Werte des Ressourcengruppennamens> und <des< Dienstnamens> ersetzen. Falls Sie beim Hinzufügen der Anmeldeinformationen in Jenkins einen anderen Wert verwendet haben, ersetzen Sie azure_service_principal durch die korrekte ID.

        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. Speichern und committen Sie die Änderung.

Erstellen des Auftrags

  1. Wählen Sie im Jenkins-Dashboard " Neues Element" aus.

  2. Geben Sie einen Namen (Deploy-PiggyMetrics) für den Auftrag an, und wählen Sie Pipeline aus. Klicken Sie auf OK.

  3. Wählen Sie die Registerkarte Pipeline aus.

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

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

  6. Geben Sie die GitHub-URL für Ihr verzweigtes Repository ein: https://github.com/&lt;your GitHub id&gt;/piggymetrics.git.

  7. Wählen Sie für den Branch-Bezeichner (schwarz für 'any') /Azure aus.

  8. Wählen Sie für den Skriptpfad Jenkinsfile aus.

  9. Wählen Sie Speichern aus.

Überprüfen und Ausführen des Auftrags

Bearbeiten Sie vor dem Ausführen des Auftrags den Text im Anmeldeeingabefeld, um die Anmelde-ID einzugeben.

  1. Öffnen Sie in Ihrem Repository index.html in /gateway/src/main/resources/static/.

  2. enter your login Suchen und aktualisieren Sie diesen Text in enter login ID.

    <input class="frontforms" id="frontloginform" name="username" placeholder="enter login ID" type="text" autocomplete="off"/>
    
  3. Speichern und committen Sie die Änderung.

  4. Führen Sie den Auftrag manuell in Jenkins aus. Wählen Sie im Jenkins-Dashboard den Auftrag Deploy-PiggyMetrics und dann " Jetzt erstellen" aus.

Navigieren Sie nach Abschluss des Auftrags zur öffentlichen IP der gateway Anwendung, und stellen Sie sicher, dass Ihre Anwendung aktualisiert wurde.

Updated Piggy Metrics

Bereinigen von Ressourcen

Löschen Sie die in diesem Artikel erstellten Ressourcen, wenn Sie sie nicht mehr benötigen:

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

Nächste Schritte