Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Note
Azure Spring Apps est le nouveau nom du service Azure Spring Cloud. Bien que le service ait un nouveau nom, vous verrez l’ancien nom dans certains endroits pendant un certain temps, car nous travaillons à mettre à jour des ressources telles que des captures d’écran, des vidéos et des diagrammes.
Azure Spring Apps est un développement de microservice entièrement géré avec la découverte de services et la gestion de la configuration intégrées. Le service facilite le déploiement d’applications de microservice basées sur Spring Boot sur Azure. Ce tutoriel montre comment utiliser Azure CLI dans Jenkins pour automatiser l’intégration et la livraison continues (CI/CD) pour Azure Spring Apps.
Dans ce tutoriel, vous allez effectuer les tâches suivantes :
- Approvisionner une instance de service et lancer une application Java Spring
- Préparer votre serveur Jenkins
- Utiliser Azure CLI dans un pipeline Jenkins pour générer et déployer les applications de microservice
Prerequisites
- Abonnement Azure : si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.
- Jenkins : Installer Jenkins sur une machine virtuelle Linux
- Compte GitHub : si vous n’avez pas de compte GitHub, créez un compte gratuit avant de commencer.
Approvisionner une instance de service et lancer une application Java Spring
Nous utilisons Piggy Metrics comme exemple d’application de service Microsoft et suivons les mêmes étapes dans le guide de démarrage rapide : Lancez une application Java Spring à l’aide d’Azure CLI pour approvisionner l’instance de service et configurer les applications. Si vous avez déjà effectué le même processus, vous pouvez passer à la section suivante. Sinon, les commandes Azure CLI incluses sont indiquées ci-dessous. Reportez-vous au guide de démarrage rapide : Lancer une application Java Spring à l’aide d’Azure CLI pour obtenir plus d’informations.
Votre ordinateur local doit respecter la même configuration requise que le serveur de build Jenkins. Vérifiez que les éléments suivants sont installés pour générer et déployer les applications de microservice :
- Git
- JDK 8
- Maven 3.0 ou ultérieur
- Azure CLI installé, version 2.0.67 ou ultérieure
Installez l’extension Azure Spring Apps :
az extension add --name springCréez un groupe de ressources pour contenir votre service Azure Spring Apps :
az group create --location eastus --name <resource group name>Provisionnez une instance d’Azure Spring Apps :
az spring create -n <service name> -g <resource group name>Faites un fork du dépôt Piggy Metrics sur votre propre compte GitHub. Dans votre ordinateur local, clonez votre dépôt dans un répertoire appelé
source-code:mkdir source-code git clone https://github.com/<your GitHub id>/piggymetricsConfigurez votre serveur de configuration. Veillez à remplacer <votre ID> GitHub par la valeur correcte.
az spring config-server git set -n <your-service-name> --uri https://github.com/<your GitHub id>/piggymetrics --label configConstruisez le projet :
cd piggymetrics mvn clean package -D skipTestsCréez les trois microservices : passerelle, authentification et service de compte :
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>Déployez les applications :
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.jarAttribuez un point de terminaison public à la passerelle :
az spring app update -n gateway -s <service name> -g <resource group name> --is-public trueInterrogez l’application de passerelle pour obtenir l’URL afin que vous puissiez vérifier que l’application est en cours d’exécution.
az spring app show --name gateway | grep urlAccédez à l’URL fournie par la commande précédente pour exécuter l’application PiggyMetrics.
Préparer le serveur Jenkins
Dans cette section, vous préparez le serveur Jenkins pour exécuter une build, ce qui est correct pour les tests. Toutefois, en raison de l’implication de sécurité, vous devez utiliser un agent de machine virtuelle Azure ou un agent de conteneur Azure pour faire tourner un agent dans Azure pour exécuter vos builds.
Installer des plug-ins
Connectez-vous à votre serveur Jenkins.
Sélectionnez Gérer Jenkins.
Sélectionnez Gérer les plug-ins.
Sous l’onglet Disponible , sélectionnez les plug-ins suivants :
Si ces plug-ins n’apparaissent pas dans la liste, cochez l’onglet Installé pour voir s’ils sont déjà installés.
Pour installer les plug-ins, sélectionnez Télécharger maintenant et installer après le redémarrage.
Redémarrez votre serveur Jenkins pour terminer l’installation.
Ajouter vos informations d’identification du principal de service Azure dans le magasin d’informations d’identification Jenkins
Vous avez besoin d’un principal de service Azure pour le déployer sur Azure. Pour plus d’informations, consultez la section Créer un principal de service dans le didacticiel Déployer sur Azure App Service. La sortie de
az ad sp create-for-rbacressemble à ceci :{ "appId": "xxxxxx-xxx-xxxx-xxx-xxxxxxxxxxxx", "displayName": "xxxxxxxjenkinssp", "name": "http://xxxxxxxjenkinssp", "password": "xxxxxx-xxx-xxxx-xxx-xxxxxxxxxxxx", "tenant": "xxxxxx--xxx-xxxx-xxx-xxxxxxxxxxxx" }Dans le tableau de bord Jenkins, sélectionnez Identifiants>Système. Ensuite, sélectionnez Informations d’identification globales (sans restriction).
Sélectionnez Ajouter des informations d’identification.
Sélectionnez Principal de service Microsoft Azure comme genre.
Fournissez des valeurs pour les champs suivants :
- ID d’abonnement : ID d’abonnement Azure
- ID client : ID de l'application du principal de service
- Clé secrète client : mot de passe du principal de service
- ID de locataire : ID de locataire du compte Microsoft
- Environnement Azure : sélectionnez la valeur appropriée pour votre environnement. Par exemple, utilisez Azure pour Azure Global
-
ID : défini sur
azure_service_principal. Nous utilisons cet ID dans une étape ultérieure de cet article - Description : Cette valeur est facultative, mais recommandée du point de vue de la documentation/maintenance.
Installer Maven et l’extension Spring d’Azure CLI
L’exemple de pipeline utilise Maven pour générer et Azure CLI pour effectuer le déploiement sur l’instance de service. Quand Jenkins est installé, il crée un compte d’administrateur nommé jenkins. Vérifiez que l’utilisateur jenkins dispose de l’autorisation d’exécuter l’extension spring.
Connectez-vous au contrôleur Jenkins via SSH.
Installez Maven.
sudo apt-get install mavenVérifiez que l’interface de ligne de commande Azure est installée en entrant
az version. Si l’interface de ligne de commande Azure n’est pas installée, consultez Installation d’Azure CLI.Basculez vers l’utilisateur
jenkins:sudo su jenkinsInstallez l’extension Spring :
az extension add --name spring
Créer un fichier Jenkinsfile
Dans votre propre dépôt :
https://github.com/your_github_id/piggymetricscréez un fichier Jenkins dans la racine.Mettez à jour le fichier comme suit. Veillez à remplacer les valeurs du nom< du groupe de ressources et du nom du> service.<> Remplacez azure_service_principal par l’ID approprié si vous utilisez une valeur différente lorsque vous avez ajouté les informations d’identification dans 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' } } }Enregistrez et validez la modification.
Créer le travail
Dans le tableau de bord Jenkins, sélectionnez Nouvel élément.
Fournissez un nom, Deploy-PiggyMetrics pour le travail et sélectionnez Pipeline. Cliquez sur OK.
Sélectionnez l’onglet Pipeline .
Pour la définition, sélectionnez Le script de pipeline à partir de SCM.
Pour SCM, sélectionnez Git.
Entrez l’URL GitHub de votre dépôt dupliqué :
https://github.com/<your GitHub id>/piggymetrics.git.Pour le spécificateur de branche (noir pour « any »), sélectionnez /Azure.
Pour le chemin de script, sélectionnez Jenkinsfile.
Cliquez sur Enregistrer
Valider et exécuter le travail
Avant d’exécuter le travail, modifiez le texte dans la zone d’entrée de connexion pour entrer l’ID de connexion.
Dans votre dépôt, ouvrez
index.htmldans/gateway/src/main/resources/static/.Recherchez
enter your loginet mettez à jour ce texte enenter login ID.<input class="frontforms" id="frontloginform" name="username" placeholder="enter login ID" type="text" autocomplete="off"/>Enregistrez et validez la modification.
Exécutez manuellement le travail dans Jenkins. Dans le tableau de bord Jenkins, sélectionnez le travail
Deploy-PiggyMetrics, puis sélectionnez Générer maintenant.
Une fois le travail terminé, accédez à l’adresse IP publique de l’application gateway et vérifiez que votre application a été mise à jour.
Nettoyer les ressources
Quand vous n’en avez plus besoin, supprimez les ressources créées dans cet article :
az group delete -y --no-wait -n <resource group name>