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.
- Jenkins: Installieren Von Jenkins auf einer Linux-VM
- GitHub-Konto: Wenn Sie nicht über ein GitHub-Konto verfügen, erstellen Sie ein kostenloses Konto , 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:
- Git
- JDK 8
- Maven 3.0 oder höher
- Installation der Azure-Befehlszeilenschnittstelle (Version 2.0.67 oder höher)
Installieren Sie die Azure Spring Apps-Erweiterung:
az extension add --name spring
Erstellen Sie eine Ressourcengruppe, die Ihren Azure Spring Apps-Dienst enthält:
az group create --location eastus --name <resource group name>
Bereitstellen einer Instanz von Azure Spring Apps:
az spring create -n <service name> -g <resource group name>
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
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
Erstellen Sie das Projekt:
cd piggymetrics mvn clean package -D skipTests
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>
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
Weisen Sie den öffentlichen Endpunkt dem Gateway zu:
az spring app update -n gateway -s <service name> -g <resource group name> --is-public true
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
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
Melden Sie sich bei Ihrem Jenkins-Server an.
Wählen Sie Manage Jenkins aus.
Wählen Sie Manage Plugins aus.
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.
Um die Plug-Ins zu installieren, wählen Sie "Jetzt herunterladen" und "Nach dem Neustart installieren" aus.
Starten Sie Ihren Jenkins-Server neu, um die Installation abzuschließen.
Hinzufügen Ihrer Anmeldeinformationen für den Azure-Dienstprinzipal im Jenkins-Anmeldeinformationsspeicher
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" }
Wählen Sie im Jenkins-Dashboard die Option Anmeldeinformationen>System aus. Wählen Sie anschließend Globale Anmeldeinformationen (uneingeschränkt) aus.
Wählen Sie Add Credentials (Anmeldeinformationen hinzufügen) aus.
Wählen Sie den Typ Microsoft Azure Service Principal (Microsoft Azure-Dienstprinzipal) aus.
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.
Stellen Sie eine SSH-Verbindung mit dem Jenkins-Controller her.
Installieren Sie Maven.
sudo apt-get install maven
Ü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.Wechseln Sie zum Benutzer
jenkins
:sudo su jenkins
Installieren Sie die Federerweiterung:
az extension add --name spring
Erstellen einer Jenkinsfile
Erstellen Sie in Ihrem eigenen Repository -
https://github.com/your_github_id/piggymetrics
eine Jenkinsfile im Stamm.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' } } }
Speichern und committen Sie die Änderung.
Erstellen des Auftrags
Wählen Sie im Jenkins-Dashboard " Neues Element" aus.
Geben Sie einen Namen (Deploy-PiggyMetrics) für den Auftrag an, und wählen Sie Pipeline aus. Klicken Sie auf OK.
Wählen Sie die Registerkarte Pipeline aus.
Wählen Sie als Definition die Option Pipeline script from SCM (Pipeline-Skript von SCM) aus.
Wählen Sie als SCM die Option Git aus.
Geben Sie die GitHub-URL für Ihr verzweigtes Repository ein:
https://github.com/<your GitHub id>/piggymetrics.git
.Wählen Sie für den Branch-Bezeichner (schwarz für 'any') /Azure aus.
Wählen Sie für den Skriptpfad Jenkinsfile aus.
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.
Öffnen Sie in Ihrem Repository
index.html
in/gateway/src/main/resources/static/
.enter your login
Suchen und aktualisieren Sie diesen Text inenter login ID
.<input class="frontforms" id="frontloginform" name="username" placeholder="enter login ID" type="text" autocomplete="off"/>
Speichern und committen Sie die Änderung.
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.
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>