Partager via


Tutoriel : Déployer des applications sur Azure Spring Apps à l’aide de Jenkins et d’Azure CLI

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.

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 :

  1. Installez l’extension Azure Spring Apps :

    az extension add --name spring
    
  2. Créez un groupe de ressources pour contenir votre service Azure Spring Apps :

    az group create --location eastus --name <resource group name>
    
  3. Provisionnez une instance d’Azure Spring Apps :

    az spring create -n <service name> -g <resource group name>
    
  4. 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>/piggymetrics
    
  5. Configurez 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 config
    
  6. Construisez le projet :

    cd piggymetrics
    mvn clean package -D skipTests
    
  7. Cré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>
    
  8. 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.jar
    
  9. Attribuez un point de terminaison public à la passerelle :

    az spring app update -n gateway -s <service name> -g <resource group name> --is-public true
    
  10. Interrogez 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 url
    
  11. Accé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

  1. Connectez-vous à votre serveur Jenkins.

  2. Sélectionnez Gérer Jenkins.

  3. Sélectionnez Gérer les plug-ins.

  4. 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.

  5. Pour installer les plug-ins, sélectionnez Télécharger maintenant et installer après le redémarrage.

  6. 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

  1. 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-rbac ressemble à ceci :

    {
        "appId": "xxxxxx-xxx-xxxx-xxx-xxxxxxxxxxxx",
        "displayName": "xxxxxxxjenkinssp",
        "name": "http://xxxxxxxjenkinssp",
        "password": "xxxxxx-xxx-xxxx-xxx-xxxxxxxxxxxx",
        "tenant": "xxxxxx--xxx-xxxx-xxx-xxxxxxxxxxxx"
    }
    
  2. Dans le tableau de bord Jenkins, sélectionnez Identifiants>Système. Ensuite, sélectionnez Informations d’identification globales (sans restriction).

  3. Sélectionnez Ajouter des informations d’identification.

  4. Sélectionnez Principal de service Microsoft Azure comme genre.

  5. 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.

  1. Connectez-vous au contrôleur Jenkins via SSH.

  2. Installez Maven.

    sudo apt-get install maven
    
  3. Vé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.

  4. Basculez vers l’utilisateur jenkins :

    sudo su jenkins
    
  5. Installez l’extension Spring :

    az extension add --name spring
    

Créer un fichier Jenkinsfile

  1. Dans votre propre dépôt : https://github.com/your_github_id/piggymetrics créez un fichier Jenkins dans la racine.

  2. 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'
            }
          }
        }
    
  3. Enregistrez et validez la modification.

Créer le travail

  1. Dans le tableau de bord Jenkins, sélectionnez Nouvel élément.

  2. Fournissez un nom, Deploy-PiggyMetrics pour le travail et sélectionnez Pipeline. Cliquez sur OK.

  3. Sélectionnez l’onglet Pipeline .

  4. Pour la définition, sélectionnez Le script de pipeline à partir de SCM.

  5. Pour SCM, sélectionnez Git.

  6. Entrez l’URL GitHub de votre dépôt dupliqué : https://github.com/&lt;your GitHub id&gt;/piggymetrics.git.

  7. Pour le spécificateur de branche (noir pour « any »), sélectionnez /Azure.

  8. Pour le chemin de script, sélectionnez Jenkinsfile.

  9. 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.

  1. Dans votre dépôt, ouvrez index.html dans /gateway/src/main/resources/static/.

  2. Recherchez enter your login et mettez à jour ce texte en enter login ID.

    <input class="frontforms" id="frontloginform" name="username" placeholder="enter login ID" type="text" autocomplete="off"/>
    
  3. Enregistrez et validez la modification.

  4. 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.

Mise à jour des métriques Piggy

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>

Étapes suivantes