paint-brush
Création d'un pipeline CI/CD avec AWS, K8S, Docker, Ansible, Git, Github, Apache Maven et Jenkinspar@zufarexplained
36,080 lectures
36,080 lectures

Création d'un pipeline CI/CD avec AWS, K8S, Docker, Ansible, Git, Github, Apache Maven et Jenkins

par Zufar Sunagatov46m2023/09/07
Read on Terminal Reader

Trop long; Pour lire

Découvrez comment créer un pipeline CI/CD avancé avec AWS, K8S, Docker, Ansible, Apache Maven, Git, Github et Jenkins avec Zufar Sunagatov. À la fin de ce didacticiel, vous obtiendrez un pipeline CI/CD moderne prêt à l'emploi, applicable à n'importe lequel de vos projets sur Github.
featured image - Création d'un pipeline CI/CD avec AWS, K8S, Docker, Ansible, Git, Github, Apache Maven et Jenkins
Zufar Sunagatov HackerNoon profile picture
0-item
1-item




Dans mon article précédent, j'ai plongé dans le monde fascinant des microservices - Modèles d'architecture de microservices, partie 1 : Modèles de décomposition . C'était le début de ma série complète d'articles sur les microservices et leurs modèles.


Bien que l'étape logique serait de continuer avec la partie 2 de cette série, j'ai décidé que la prochaine chose que j'aimerais explorer et vous parler est le processus vital de fourniture transparente de ces microservices à l'utilisateur final.


Aperçu du contenu

  • Motivation
  • [Module 1] : Serveur virtuel AWS EC2
  • [Module 2] : Serveur Jenkins
  • [Module 3] : Git et Github
  • [Module 4] : Apache Maven
  • [Module 5] : Docker
  • [Module 6] : Ansible
  • [Module 7] : Kubernetes
  • Conclusion
  • A propos de l'auteur



Motivation

CI/CD est une technique permettant de fournir des applications aux clients, obtenue en ajoutant l'automatisation aux différentes étapes du développement des applications. Je pense que comprendre le CI/CD (Intégration continue et déploiement continu) peut permettre aux développeurs de mieux comprendre comment les artefacts du projet backend existent au-delà des limites du référentiel du projet. Cette compréhension peut également créer un changement fondamental dans la perspective d'un développeur. Au lieu de simplement considérer leur travail comme des lignes de code, ils peuvent commencer à considérer le contexte plus large de leur projet comme un produit de valeur.


Dans cet article, nous visons à démystifier le processus CI/CD grâce à une application pratique. Nous vous guiderons à travers un didacticiel étape par étape, le décomposant module par module, où vous créerez manuellement un pipeline CI/CD. Pour ce faire, nous exploiterons la puissance des outils DevOps contemporains tels qu'AWS, Docker, Kubernetes, Ansible, Git, Apache Maven et Jenkins . Alors commençons ce voyage !


[Module 1] : Serveur virtuel AWS EC2

Ce module est dédié à la création d'une instance de serveur virtuel AWS EC2. Dans le cadre de cet article, vous allez configurer trois instances EC2 pour Jenkins, Ansible et Kubernetes. Pour l'instant, vous pouvez passer aux modules suivants et revoir ce module dans les sections « [module 2] : Jenkins », « [module 6] : Ansible » et « [module 7] : Kubernetes ».


Étape 1 : Créer un compte AWS

Accédez à https://aws.amazon.com.

Cliquez sur le bouton Créer un compte AWS .


La capture d'écran de la page Web principale d'AWS avec le pointeur vers le bouton « Créer un compte AWS »


Suivez les instructions sur la page Web de création de compte.


Étape 2 : Connectez-vous à votre compte AWS

Accédez à https://console.aws.amazon.com/console/home. Cliquez sur le bouton Se connecter .

La capture d'écran de la page Web principale d'AWS avec le pointeur vers le bouton « Connexion »


Entrez toutes les informations d'identification nécessaires sur cette page Web.


Étape 3 : Trouver le serveur virtuel EC2

Recherchez EC2 dans la zone de recherche.

La capture d'écran de la page Web AWS avec le pointeur vers le champ de recherche


Choisissez Serveur virtuel EC2 en cliquant sur Service EC2 .

La capture d'écran de la page Web AWS avec le pointeur vers le service AWS « EC2 »


Cliquez sur le bouton Lancer l'instance .

La capture d'écran de la page Web AWS avec le pointeur vers le bouton « Lancer l'instance »


Étape 4 : Configurer la section « Nom et balises »

Accédez à la section « Nom et tags » .

La capture d'écran de la page Web AWS avec le pointeur vers la section « Nom et balises »


Fournissez un nom pour une nouvelle instance de serveur virtuel AWS EC2 dans la section « Nom » .

La capture d'écran de la page Web AWS avec le pointeur vers la zone de saisie « Nom » dans la section « Nom et balises »


Vous pouvez également ajouter des balises supplémentaires pour votre serveur virtuel en cliquant sur « Ajouter des balises supplémentaires » .


Étape 5 : Configurer la section « Images d'application et de système d'exploitation (Amazon Machine Image) »


Accédez à la section « Images d'application et de système d'exploitation (Amazon Machine Image) » .

La capture d'écran de la page Web AWS avec le pointeur vers la section « Images d'application et de système d'exploitation (Amazon Machine Image) »


Pour jouer GRATUITEMENT avec le serveur virtuel :

  1. Sélectionnez le système d'exploitation de votre serveur virtuel - Amazon Linux .
  2. Dans la section Amazon Machine Image (AMI) , sélectionnez une machine avec la balise éligible au niveau gratuit .



Capture d'écran de la page Web AWS avec le pointeur vers les boutons « OS » et « Type de machine » dans la section « Images d'application et de système d'exploitation (Amazon Machine Image) »


Étape 6 : Configurer la section « Type d'instance »

Allez dans la section « Type d'instance » .

La capture d'écran de la page Web AWS avec le pointeur vers la section « Type d'instance »


Pour jouer GRATUITEMENT avec le serveur virtuel :

Sélectionnez un type avec la balise éligible à l'offre gratuite dans la section Type d'instance .

Pour moi, c'est t2.micro (Family: t2 1cCPU 1 GiB Memory Current Generation:true) .



La capture d'écran de la page Web AWS avec le pointeur vers la liste déroulante « Type d'instance » dans la section « Type d'instance »


Étape 7 : Configurer la section « Configurer le stockage »

Accédez à la section « Configurer le stockage » .

La capture d'écran de la page Web AWS avec le pointeur vers la section « Configurer le stockage »


Pour jouer GRATUITEMENT avec le serveur virtuel :

Ne modifiez pas les paramètres par défaut. Les clients éligibles au niveau gratuit peuvent obtenir 30 Go de stockage EBS à usage général (SSD) ou magnétique .



La capture d'écran de la page Web AWS avec le pointeur vers les configurations possibles de stockage dans la section « Configurer le stockage »


Étape 8 : Configurer la section « Paramètres réseau »

Accédez à la section « Paramètres réseau » .

La capture d'écran de la page Web AWS avec le pointeur vers la section « Paramètres réseau »


Vous devez configurer la sécurité de votre serveur virtuel. Pour faire ça,

  1. Cliquez sur le bouton « Créer un groupe de sécurité » .
  2. Ajoutez le nom de votre nouveau groupe de sécurité dans la section « Nom du groupe de sécurité » .
  3. Ajoutez une description de votre nouveau groupe de sécurité dans la section « Description » .

Par défaut, votre serveur virtuel est accessible via ( Type - SSH, Protocole - TCP, Port - 22 ). Si vous avez besoin de types de connexion supplémentaires, ajoutez-les en ajoutant des règles de groupe de sécurité entrantes supplémentaires.



La capture d'écran de la page Web AWS avec le pointeur vers « Groupe de sécurité » dans la section « Paramètres réseau »


Étape 9 : Configurer la section « Paire de clés (connexion) »

Rendez-vous dans la section « Bi-clé (Connexion) » .

La capture d'écran de la page Web AWS avec le pointeur vers la section "Ket pair (login)"


Créez une nouvelle paire de clés si vous ne l'avez pas encore créée.

La capture d'écran de la page Web AWS avec le pointeur vers « Nom de la paire de clés », « Type de paire de clés », « Format de fichier de clé privée » dans la section « Paire de clés (connexion) »


Si vous n'avez pas encore créé de « paire de clés » :

  1. Cliquez sur le bouton « Créer une nouvelle paire de clés » .
  2. Donnez un nom à votre nouvelle paire de clés dans la section « Nom de la paire de clés » .
  3. Sélectionnez le type de paire de clés RSA ou ED25519 . Je choisis le type RSA .
  4. Sélectionnez Format de fichier de clé privée. Choix de .pem et .ppk . Je choisis le format .pem .
  5. Cliquez sur le bouton « Créer une paire de clés » .
  6. Vous obtiendrez une fenêtre contextuelle qui vous invitera à télécharger le fichier de clé privée. Acceptez et téléchargez le fichier sur votre ordinateur.

Étape 10 : Lancer l'instance de serveur virtuel EC2


Lancez l'instance du serveur virtuel EC2 en cliquant sur le bouton « Lancer l'instance » .

La capture d'écran de la page Web AWS avec le pointeur vers le bouton « Lancer l'instance »


Une fois le processus de création de l'instance de serveur virtuel EC2 terminé, vous verrez ce qui suit.


La capture d'écran de la page Web AWS affichant une notification « Succès », indiquant la réussite du processus de création de l'instance de serveur virtuel EC2


Ensuite, vous devez vous rendre dans la section « Instances » en cliquant sur le bouton « Afficher toutes les instances » .


La capture d'écran de la page Web AWS avec le pointeur vers l'exécution de l'instance EC2

Vous pouvez maintenant voir que votre instance de serveur virtuel AWS EC2 est en cours d'exécution.



[Module 2] : Serveur Jenkins

Maintenant, configurons JenkinsServer sur l'instance de serveur virtuel EC2.

Étape 1 : Créer une instance de serveur virtuel AWS EC2

Vous avez besoin d'un serveur virtuel pour exécuter Jenkins.

Suivez les instructions de la section [Module 1] : AWS EC2 Virtual Server de ce didacticiel pour terminer cette étape et créer une instance de serveur virtuel EC2 portant le nom JenkinsServer.

N'oubliez pas d'ajouter une configuration de groupe de sécurité. Il permet à Jenkins et SSH de fonctionner respectivement sur les ports 8080 et 22 .


Utilisez le nom « JenkinsServer » pour distinguer votre instance de serveur virtuel EC2.

Créez le groupe de sécurité « CI_CD_Pipeline » et « CI_CD_Pipeline_Key_Pair » pour une nouvelle instance AWS EC2 « JenkinsServer » . Vous pouvez les réutiliser plus loin dans l'article.


Étape 2 : Connectez-vous à une instance de serveur virtuel AWS EC2

Accédez à la page d'accueil de la console AWSTableau de bord de la console de gestion EC2Instances.

Ensuite, vous devez choisir JenkinsServer puis cliquer sur le bouton « Connecter » .

La capture d'écran de la page Web AWS "Instances" avec le pointeur vers le bouton "Connecter"


Ensuite, vous verrez cette page Web. Vous devez à nouveau cliquer sur le bouton « Connecter » .

La capture d'écran de la page Web AWS « Connecter à l'instance » avec le pointeur vers le bouton « Connecter »


Vous pouvez maintenant voir le terminal en ligne de l'instance de serveur virtuel EC2.

La capture d'écran du terminal en ligne de l'instance AWS EC2 Virtual Server


Étape 3 : Téléchargez le référentiel Jenkins

Vous devez maintenant télécharger Jenkins sur votre instance de serveur virtuel EC2.

Suivez ces instructions :


  1. Accédez à la page Web de téléchargement de Jenkins.

  2. Vous pouvez voir les options de versions stables (LTS) et régulières (hebdomadaires). Choisissez l'option Red Hat/Fedora/Alma/Rocky/CentOS LTS.


Vous verrez cette page Web.

La capture d'écran de la page Web de téléchargement de Jenkins


  1. Copiez la commande « sudo get.. » et exécutez-la pour télécharger les fichiers Jenkins à partir du référentiel Jenkins sur Internet et enregistrez-les à l'emplacement spécifié sur votre instance de serveur virtuel EC2.
 sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo

Jenkins est maintenant téléchargé.


Étape 4 : Importer la clé Jenkins

Pour terminer l'installation de Jenkins, nous devons importer la clé Jenkins.

Pour importer la clé Jenkins, nous devons copier la commande « sudo rpm.. » et l'exécuter.


 sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key

De cette façon, le gestionnaire de packages « rpm » peut vérifier que les packages Jenkins que vous installez sont exactement ceux publiés par le projet Jenkins, et qu'ils n'ont pas été falsifiés ou corrompus.


Étape 5 : Installer Java

Pour exécuter Jenkins, nous devons installer Java sur notre instance de serveur virtuel EC2.

Pour installer Java , utilisez cette commande.


 sudo amazon-linux-extras install java-openjdk11 -y


Vérifiez si Java a été installé correctement à l'aide de cette commande :

 java -version


Vous verrez quelque chose comme ça.

La capture d'écran du terminal en ligne de l'instance de serveur virtuel AWS EC2 avec JDK 11 installé


Étape 6 : Installer fontconfig

Pour exécuter Jenkins, vous devez installer fontconfig sur notre instance de serveur virtuel EC2.

Utilisez cette commande.

 sudo yum install fontconfig java-11-openjdk -y


Fontconfig est une bibliothèque conçue pour fournir une configuration, une personnalisation et un accès aux applications à l'échelle du système. C'est requis par Jenkins car Jenkins possède des fonctionnalités qui restituent les polices.


Étape 7 : Installer Jenkins

Au cours des étapes précédentes, vous avez configuré votre instance de serveur virtuel EC2 pour utiliser un référentiel Jenkins spécifique, puis vous avez importé la clé GPG associée à ce référentiel. Maintenant, vous devez exécuter la commande qui recherchera tous les référentiels connus, y compris celui de Jenkins que vous avez ajouté, pour trouver le package Jenkins. Une fois qu'il aura trouvé le package Jenkins dans le référentiel Jenkins, il le téléchargera et l'installera.


Exécutons cette commande.

 sudo yum install jenkins -y


Étape 8 : Démarrez Jenkins

Vous pouvez démarrer Jenkins en utilisant cette commande.

 sudo systemctl start jenkins


Pour vérifier que Jenkins est en cours d'exécution, utilisez cette commande.

 sudo systemctl status jenkins


Vous verrez le résultat tel qu'il est sur la capture d'écran ci-dessous :

La capture d'écran du terminal en ligne de l'instance de serveur virtuel AWS EC2 avec Jenkins installé


Jenkins devrait maintenant être opérationnel.

Étape 9 : accéder à Jenkins

Pour accéder à l'application Jenkins, ouvrez n'importe quel navigateur Web et saisissez l'adresse IP publique ou le nom de domaine de votre instance EC2 suivi du port 8080.


 http://<your-ec2-ip>:8080


La première fois que vous accéderez à Jenkins, il sera verrouillé avec un mot de passe généré automatiquement.

La capture d'écran de Jenkins installé sur le serveur virtuel AWS EC2 avec le pointeur vers le mot de passe administrateur


Vous devez afficher ce mot de passe à l'aide de la commande suivante.

 sudo cat /var/lib/jenkins/secrets/initialAdminPassword


Copiez ce mot de passe, revenez à votre navigateur, collez-le dans le champ Mot de passe administrateur et cliquez sur « Continuer ».


Ensuite, vous pourrez voir cette page Web.


La capture d'écran de Jenkins installé sur le serveur virtuel AWS EC2 avec le pointeur vers la page Web « Personnaliser Jenkins »


Maintenant, vous pouvez utiliser votre serveur Jenkins.


Étape 10 : Créer un nouveau pipeline Jenkins

Maintenant que Jenkins fonctionne correctement, vous pouvez commencer à créer le pipeline Jenkins. Pour créer un pipeline Jenkins, vous devez créer un nouveau « projet Freestyle ». Pour créer un nouveau « projet Freestyle », vous devez accéder au tableau de bord Jenkins et cliquer sur le bouton « Nouvel élément » .


La capture d'écran de la page Web du tableau de bord Jenkins avec le pointeur vers le bouton "Nouvel élément"


Entrez le nom du « projet Freestyle » Github (le nom du « pipeline » sera utilisé plus loin) puis cliquez sur le bouton « OK » .


La capture d'écran de la page Web du nouvel élément Jenkins avec le pointeur vers la zone d'élément "Nom de l'élément"


Fournissez ensuite la description du pipeline.

La capture d'écran de la page Web de configuration du travail Jenkins avec le pointeur vers la zone de saisie "Description"


Cliquez ensuite sur les boutons « Appliquer » et « Enregistrer ». Après cela, cela signifie que vous avez créé les bases du pipeline qui va être construit dans ce tutoriel.



[Module 3] : Git et Github

Maintenant que Jenkins s'exécute sur l'instance de serveur virtuel AWS EC2, vous pouvez configurer Git avec le pipeline.

Git est un système de contrôle de version distribué (VCS) gratuit et open source conçu pour aider les équipes logicielles à suivre chaque modification du code dans un type spécial de base de données. Si une erreur est commise, les développeurs peuvent revenir en arrière et comparer les versions antérieures du code pour aider à corriger l'erreur tout en minimisant les perturbations pour tous les membres de l'équipe. VCS est particulièrement utile pour DevOps équipes car ils les aident à réduire le temps de développement et à augmenter les déploiements réussis [1].

Git, en tant que système de contrôle de version le plus populaire, nous permet d'extraire le dernier code du référentiel Github de votre projet vers votre instance de serveur virtuel EC2 sur laquelle votre Jenkins est installé.


Étape 1 : Installer Git

Utilisez cette commande pour installer Git.

 sudo yum install git -y


Vérifiez maintenant que Git fonctionne à l’aide de cette commande.

 git --version

Maintenant, Git fonctionne correctement sur l'instance de serveur virtuel EC2.


Étape 2 : Ouvrez le tableau de bord Jenkins

Comme Git fonctionne correctement sur l'instance de serveur virtuel EC2, nous pouvons maintenant intégrer Jenkins à Git.

Pour démarrer cette intégration, installons le plugin Jenkins Github.

Accédez à la section du tableau de bord Jenkins.


La capture d'écran du tableau de bord Jenkins


Étape 3 : Ouvrez le gestionnaire de plugins Jenkins

Cliquez sur le bouton « Gérer Jenkins » puis cliquez sur le bouton « Gérer les plugins » .

La capture d'écran du tableau de bord Jenkins avec le pointeur vers le bouton "Gérer les plugins"


Étape 4 : Trouver le plugin Github Jenkins

Cliquez sur le bouton « Plugins disponibles » .

La capture d'écran de la page Web de Jenkins Plugin Manager avec le pointeur vers le bouton "Plugins disponibles"


Recherchez la zone de recherche du plugin Github .


La capture d'écran de la page Web de Jenkins Plugin Manager avec le pointeur vers le plugin "Github"


Sélectionnez le plug-in Github .


Étape 5 : Installer le plugin Github Jenkins

Sélectionnez le plug-in Github . Et puis cliquez sur le bouton « Installer sans redémarrage » .


La capture d'écran de la page Web de Jenkins Plugin Manager avec le pointeur vers le bouton "Installer sans redémarrer"


Attendez la fin du téléchargement du plugin Github.


La capture d'écran de la page Web de Jenkins Plugin Manager avec le téléchargement du plugin Github


Oui! Le plugin Jenkins Github est installé.


Étape 6 : Configurer le plugin Github Jenkins

Maintenant que le plugin GitHub Jenkins est installé, vous pouvez configurer ce plugin pour enfin intégrer Jenkins à Git. Pour ce faire, vous devez revenir à la page principale en cliquant sur le bouton « Revenir à la page d'accueil ».


La capture d'écran de la page Web de Jenkins Plugin Manager avec le pointeur vers le bouton "Retour à la page d'accueil"


Ensuite, sur la page principale, vous devez cliquer sur le bouton « Gérer Jenkins » puis cliquer sur le bouton « Configuration globale de l'outil » .


La capture d'écran de la page Web de Jenkins Plugin Manager avec le pointeur vers le bouton "Configuration globale de l'outil"


Ensuite, sur la page Web Global Tool Configuration, vous devez accéder à la section Git.


La capture d'écran de la page Web de configuration globale de Jenkins avec le pointeur vers les zones de saisie "Nom" et "Chemin d'accès à l'exécutable Git".


Dans la section Git, vous devez configurer Git en fournissant le nom et le chemin d'accès à Git sur l'ordinateur.


Cliquez ensuite sur les boutons « Appliquer » et « Enregistrer » **.**


Ici, vous avez terminé de configurer le plugin Jenkins Github.


Étape 7 : Intégrer Git dans le pipeline

Maintenant que le plugin Jenkins Github est installé et configuré, vous pouvez désormais utiliser ce plugin dans votre pipeline. Cela permettra à votre pipeline que vous avez créé dans le module 2 d'extraire le code de votre projet du référentiel GitHub spécifié.


Eh bien, pour intégrer ce plugin dans votre pipeline, vous devez vous rendre dans la section Gestion du code source et choisir Git dans votre pipeline. Ensuite, vous devez fournir l'URL du référentiel de votre projet. Si le référentiel de votre projet est public sur Github, vous n'avez pas besoin de fournir d'informations d'identification. Si le référentiel du projet est privé sur Github, vous devez fournir des informations d'identification.


La capture d'écran de la page Web de configuration du travail Jenkins avec les paramètres « Gestion du code source »


Vous pouvez utiliser mon projet avec la prochaine URL du référentiel : https://github.com/Sunagatov/Hello.git .

Copiez-le et collez-le simplement dans l'entrée « URL du référentiel » . Cliquez ensuite sur les boutons « Appliquer » et « Enregistrer » pour terminer l'intégration de Git avec le pipeline.


Étape 8 : Tester Git intégré au pipeline

Vous pouvez désormais utiliser votre pipeline mis à jour pour extraire un projet de Github. Pour ce faire, vous devez cliquer sur le bouton **« Construire maintenant »**. En conséquence, vous verrez une build réussie dans l’historique des builds.


La capture d'écran de la page Web de Jenkins avec des pointeurs vers le bouton « Construire maintenant » et la section « Historique de construction »



Ouvrez la première build à partir de l’historique des builds.

La capture d'écran de Jenkins Pull_Code_From_Github_Job avec un résultat de travail réussi


Vous pouvez maintenant voir le résultat réussi du premier build. Si vous ouvrez votre terminal AWS EC2. Vous pouvez vérifier que le pipeline fonctionne bien.


Utilisez simplement cette commande.

 cd /var/lib/jenkins/workspace/{your pipeline name}


De cette façon, vous pouvez voir que votre projet de Github a été transféré vers votre instance de serveur virtuel AWS EC2.


La capture d'écran du projet Github téléchargée dans le terminal d'instance EC2



[Module 4] : Apache Maven

Apache Maven est un outil d'automatisation de build et de gestion de projet largement utilisé dans le développement de logiciels. Il rationalise le processus de compilation, de test et de packaging du code en gérant les dépendances du projet et en fournissant un cycle de vie de construction cohérent. Maven utilise des fichiers de configuration basés sur XML (fichiers POM) pour définir la structure, les dépendances et les tâches du projet, permettant ainsi aux développeurs de gérer et de déployer efficacement des projets logiciels complexes.


Maintenant que vous avez intégré Git dans le pipeline, vous pouvez améliorer davantage le pipeline en incorporant Apache Maven, qui vous permet de créer, tester et empaqueter votre projet. Pour ce faire, vous devez installer Apache Maven sur votre instance de serveur virtuel AWS EC2 sur laquelle Jenkins et Git ont été installés.


Étape 1 : Téléchargez Apache Maven

Pour télécharger Apache Maven, allez dans le répertoire «/opt» .

 cd /opt


Et puis utilisez cette commande.

 sudo wget https://dlcdn.apache.org/maven/maven-3/3.9.4/binaries/apache-maven-3.9.4-bin.tar.gz


Cette commande téléchargera la dernière version officielle d'Apache Maven (vérifiez la dernière version sur le site officiel d'Apache Maven). Pour trouver la dernière version officielle d'Apache Maven, utilisez le lien https://maven.apache.org/download.cgi .


Étape 2 : Extraire Apache Maven de l’archive

Utilisez cette commande pour extraire Apache Maven de l'archive téléchargée :

 sudo tar -xvzf apache-maven-*.tar.gz


Étape 3 : ajoutez JAVA_HOME et M2_HOME

Accédez au dossier racine à l’aide de cette commande.

 cd ~


Modifiez le fichier .bash_profile à l'aide de cette commande.

 vi .bash_profile


Ajoutez les variables JAVA_HOME et M2_HOME.


Attribuez le chemin d'accès au JDK11 pour JAVA_HOME et le chemin d'accès au répertoire maven pour la variable M2_HOME .


Pour trouver le chemin du JDK, utilisez cette commande.

 sudo find / -name java 



La capture d'écran de la page Web du terminal d'instance AWS EC2 Virtual Server avec le fichier .bash_profile


Comment utiliser VIM

  • Pour éditer le fichier, appuyez sur la touche du clavier « I » pour insérer des données.
  • Pour enregistrer le fichier, appuyez sur le bouton du clavier « esc » et entrez « :w ».
  • Pour quitter le fichier, appuyez sur le bouton du clavier « esc » et entrez « :q » .

Enregistrez les modifications.


Ensuite, exécutez cette commande pour actualiser les variables système.

 source .bash_profile


Pour vérifier $PATH , utilisez cette commande.

 echo $PATH


Pour vérifier Apache Maven , utilisez cette commande.

 mvn -v


Si vous avez tout fait correctement, vous pourrez visualiser la version d'Apache Maven.

La capture d'écran de la page Web du terminal d'instance AWS EC2 Virtual Server avec la version d'Apache Maven


Étape 4 : Installer le plug-in Apache Maven Jenkins

Étant donné qu'Apache Maven peut être utilisé sur une instance EC2, vous pouvez installer le plugin Apache Maven pour l'intégrer au pipeline.


Pour y parvenir, suivez ces étapes :

  1. Accédez à « Tableau de bord » → « Gérer Jenkins » → « Gérer les plugins » → « Disponible ».
  2. Dans le champ de recherche, saisissez « Maven » .
  3. Choisissez le plugin « Maven Integration » .


La capture d'écran de Jenkins installé sur le serveur virtuel AWS EC2 avec le pointeur vers le plugin Maven


Attendez la fin du processus de téléchargement.


Et puis cliquez sur le bouton « Revenir à la page d'accueil » .

La capture d'écran de Jenkins installé sur le serveur virtuel AWS EC2 avec le pointeur vers le processus de téléchargement du plugin Maven


Étape 5 : Configurer le plugin Apache Maven Jenkins

Avec l'installation réussie du plugin Apache Maven Jenkins, vous pouvez désormais utiliser ce plugin dans le pipeline que vous avez créé et mis à jour dans les modules 2 et 3.


Pour ce faire, procédez comme suit :

  1. Allez dans « Tableau de bord » → « Gérer Jenkins » → « Configuration globale des outils » → « JDK »
  2. Cliquez sur le bouton « Ajouter JDK ».
  3. Décochez « Installer automatiquement ».



La capture d'écran de Jenkins installé sur AWS EC2 Virtual Server avec le pointeur vers la configuration JDK



Allez ensuite dans la section « Maven » . Cliquez sur le bouton « Ajouter Maven » . Décochez « Installer automatiquement ».

Ajoutez ensuite le nom et le chemin MAVEN_HOME .



La capture d'écran de Jenkins installé sur le serveur virtuel AWS EC2 avec le pointeur vers la configuration d'Apache Maven



Cliquez sur les boutons « Appliquer » et « Enregistrer » .

Ici, vous avez terminé de configurer le plugin Apache Maven Jenkins.


Étape 6 : Intégrer Apache Maven dans le pipeline

Maintenant que le plugin Apache Maven GitHub est installé et configuré, vous pouvez désormais utiliser Apache Maven dans votre pipeline. Cela permettra à votre pipeline que vous avez créé dans le « [module 2] : Jenkins Server » de construire le code de votre projet pour créer un artefact jar.


Pour intégrer Apache Maven dans le pipeline, vous devez suivre ces étapes :

  1. Accédez à « Tableau de bord » → « CI_CD_Pipeline » → « Configurer » → « Étapes de construction ».
  2. Cliquez sur le bouton « Ajouter une étape de construction » .
  3. Choisissez l’option « Invoquer des cibles Maven de niveau supérieur » .
  4. Choisissez « Apache-Maven » comme « Version Maven ».
  5. Ajoutez la commande « clean package » à l’entrée « Objectifs » .
  6. Cliquez sur le bouton « Avancé » .
  7. Ajoutez « pom.xml » à l'entrée « POM » .



La capture d'écran de la section « Étapes de construction » dans la configuration du pipeline avec des pointeurs vers les boutons « Appliquer » et « Enregistrer »



Enfin, vous devez cliquer sur les boutons « Appliquer » et « Enregistrer » pour terminer l'intégration d'Apache Maven avec le pipeline.

Étape 7 : Testez Apache Maven intégré au pipeline

Vous pouvez désormais utiliser votre pipeline mis à jour pour créer votre projet Github. Pour ce faire, vous devez cliquer sur le bouton **« Construire maintenant »**. En conséquence, vous verrez un résultat de travail réussi dans l’historique de construction.

Si vous ouvrez votre terminal AWS EC2. Vous pouvez vérifier que le pipeline fonctionne bien.


Utilisez simplement cette commande.

 cd /var/lib/jenkins/workspace/{your pipeline name}/target


De cette façon, vous pouvez voir l'artefact JAR, indiquant la réussite de la construction de votre projet à partir de GitHub.



[Module 5] : Docker

Créons maintenant une nouvelle instance EC2 avec le nom « Ansible Server » sur laquelle vous allez installer Docker et Ansible.


Étape 1 : lancer une instance de serveur virtuel AWS EC2

Utilisez les instructions de la section « Lancer une instance de serveur virtuel AWS EC2 » de ce didacticiel pour terminer cette étape. N'oubliez pas d'ajouter une configuration de groupe de sécurité. Il permet à Docker et SSH de fonctionner respectivement sur les ports 8080 et 22.


Étape 2 : Connectez-vous à une instance de serveur virtuel AWS EC2

Cliquez sur le bouton « Connecter ».

La capture d'écran de la page Web AWS avec le pointeur vers le bouton « Connecter »


Vous pouvez maintenant voir le terminal en ligne de l'instance de serveur virtuel EC2.

La capture d'écran du terminal en ligne de l'instance AWS EC2 Virtual Server


 sudo chown ansible-admin:ansible-admin /opt/docker


Étape 3 : Installez Docker sur le serveur virtuel Ansible EC2.

Vous devez maintenant installer Docker sur votre instance Ansible EC2. Pour ce faire, vous devez créer un nouveau dossier Docker.

 sudo mkdir /opt/docker


Ensuite, installez Docker en exécutant la commande suivante.

 sudo yum install docker -y


Étape 4 : Ajouter l'utilisateur actuel au groupe Docker sur le serveur virtuel Ansible EC2

Vous devez ajouter l'utilisateur actuel « ansible-admin » au groupe Docker sur le serveur virtuel EC2 « AnsibleServer » pour accorder les privilèges d'administrateur Docker.


 sudo usermod -a -G docker ansible-admin


Vous devrez vous déconnecter et vous reconnecter pour que ces modifications prennent effet.


Ensuite, vous pouvez exécuter la commande suivante

 id ansible-admin


pour voir que le nouvel utilisateur Docker existe.


La capture d'écran de l'instance Ansible EC2 avec le pointeur vers l'utilisateur Docker


Étape 5 : Lancer Docker

Maintenant que Docker est installé sur l'instance Ansible EC2, vous pouvez le lancer en exécutant la commande suivante.

 sudo systemctl start docker


Une fois Docker démarré, vous pouvez exécuter la commande suivante

 sudo systemctl status docker


pour voir que Docker est actif et fonctionne maintenant.

La capture d'écran de l'instance Ansible EC2 avec le statut du docker actif


Étape 6 : Créer un fichier Docker

Dans la version finale du pipeline, le processus impliquera la création d'une nouvelle image Docker à partir de votre projet GitHub et sa transmission vers Docker Hub. Pour ce faire, votre projet GitHub doit contenir un Dockerfile.


Si vous avez utilisé le projet « Hello » qui était proposé dans le module « [Module 3] : Git et Github » , alors vous n'avez pas besoin de créer un nouveau Dockerfile car ce référentiel de projet contenait déjà Dockerfile.


 FROM eclipse-temurin:17-jre-jammy ENV HOME=/opt/app WORKDIR $HOME ADD hello-0.0.1-SNAPSHOT.jar $HOME ENTRYPOINT ["java", "-jar", "/opt/app/hello-0.0.1-SNAPSHOT.jar" ]


Si vous avez utilisé votre propre référentiel de projet et qu'il ne contenait pas de Dockerfile, vous devrez créer un nouveau Dockerfile.


Pour créer un nouveau Dockerfile, exécutez la commande suivante, qui créera le nouveau fichier.

 sudo touch Dockerfile


Vous pouvez ensuite remplir ce fichier avec une séquence de commandes décrivant comment créer un environnement d'application conteneurisé. Ces commandes incluent des actions telles que la copie de fichiers dans l'image, l'installation de logiciels, la définition de variables d'environnement et la configuration du conteneur.


Pour remplir le Dockerfile avec ces commandes, exécutez la commande suivante.

 vim Dockerfile

Le Dockerfile est prêt à être utilisé.


Étape 7 : Connectez-vous à Docker

Maintenant que votre Dockerfile est prêt à être utilisé, copiez l'artefact JAR de votre projet à partir de l'instance EC2 **"JenkinsServer"** et collez-le sur l'instance EC2 "AnsibleServer" . Il est important de noter que ce transfert sera davantage automatisé à travers le pipeline.

En complétant cette étape, vous serez prêt à tester votre Dockerfile ainsi que l'environnement Docker que vous avez configuré.


Avant de commencer les tests, assurez-vous de vous authentifier sur Dockerhub. Exécutez la commande suivante.

 docker login


Cette commande vous demandera de fournir vos informations de connexion Dockerhub, y compris votre nom d'utilisateur et votre mot de passe.

La capture d'écran d'une connexion Docker réussie dans l'instance EC2 "AnsibleServer"


Avec cela, vous avez terminé le processus de connexion à Docker et êtes maintenant prêt à procéder aux tests.

Étape 8 : tester l'environnement Docker et Dockerfile

Une fois votre connexion réussie à Dockerhub terminée, vous êtes maintenant prêt à commencer à tester le Dockerfile que vous avez préparé.


Exécutez cette commande pour créer une image Docker.

 docker build -t hello:latest .


Ensuite, exécutez la commande suivante pour établir une balise qui facilitera le téléchargement de l'image sur Dockerhub :

 docker tag hello:latest zufarexplainedit/hello:latest


Enfin, procédez au transfert de l'image Docker vers Dockerhub en exécutant cette commande.

 docker push zufarexplainedit/hello:latest


En suivant ces étapes, accédez à votre compte Dockerhub pour vérifier si vous pouvez voir une nouvelle image ou non.

La capture d'écran du compte Dockerhub avec la nouvelle image ajoutée


Vous devriez maintenant constater que l'image a été effectivement ajoutée. Ce résultat confirme la réussite de l'installation de l'environnement Docker et que votre Dockerfile est correct.



[Module 6] : Ansible

Configurons maintenant le serveur Ansible sur l'instance de serveur virtuel EC2.


Étape 1 : Créer une instance de serveur virtuel AWS EC2

Vous avez besoin d'un serveur virtuel pour exécuter Ansible.


Suivez les instructions de la section [Module 1] : AWS EC2 Virtual Server de ce didacticiel pour terminer cette étape et créer une instance de serveur virtuel EC2 pour Ansible.

N'oubliez pas d'ajouter une configuration de groupe de sécurité. Il permet à Ansible et SSH de fonctionner respectivement sur les ports 8080 et 22 .


Utilisez le nom « AnsibleServer » pour distinguer votre instance de serveur virtuel EC2.

Vous pouvez réutiliser le groupe de sécurité « CI_CD_Pipeline » et « CI_CD_Pipeline_Key_Pair » pour une nouvelle instance EC2 « AnsibleServer » .


Étape 2 : Connectez-vous à une instance de serveur virtuel AWS EC2

Accédez à la page d'accueil de la console AWS → Tableau de bord de la console de gestion EC2 → Instances → AnsibleServer.


Cliquez ensuite sur le bouton « Connecter » .

La capture d'écran de la page Web AWS avec le pointeur vers le bouton « Connecter »


Ensuite, vous verrez cette page Web. Vous devez à nouveau cliquer sur le bouton « Connecter » .


La capture d'écran de la page Web AWS « Connecter à l'instance » avec le pointeur vers le bouton « Connecter »


Vous pouvez maintenant voir le terminal en ligne de l'instance de serveur virtuel EC2.

La capture d'écran du terminal en ligne de l'instance AWS EC2 Virtual Server


Configurons maintenant Ansible Server sur l'instance de serveur virtuel EC2.

Étape 3 : Modifiez le nom d'hôte de l'instance de serveur virtuel AWS EC2 « AnsibleServer »

La première chose que vous devez faire lorsque vous souhaitez configurer AnsibleServer sur une instance de serveur virtuel EC2 est de modifier son nom d'hôte.


Faisons-le. Exécutez cette commande pour ouvrir le fichier de nom d'hôte :

 sudo vi /etc/hostname


Vous devriez voir quelque chose comme ceci :

La capture d'écran de l'instance de serveur virtuel AWS EC2 avec le fichier de nom d'hôte


Remplacez ce nom d'hôte par « ansible-server ». Ensuite, redémarrez-le.

 sudo init 6 



La capture d'écran du terminal d'instance AWS EC2 Virtual Server avec le pointeur vers le nom d'hôte


Étape 4 : Ajouter et configurer un nouvel utilisateur dans l'instance de serveur virtuel AWS EC2 « AnsibleServer »

Ajoutons maintenant un nouvel utilisateur ansible-admin à l'instance de serveur virtuel AWS EC2.

Pour ce faire, utilisez cette commande :


 sudo useradd ansible-admin


Ensuite, définissez le mot de passe pour l'utilisateur ansible-admin .

 sudo passwd ansible-admin


Vous devez également configurer les privilèges utilisateur en modifiant le fichier sudoers .

 sudo visudo


Ajoutez « ansible-admin ALL=(ALL) ALL » à ce fichier sudoers .

La capture d'écran du terminal d'instance AWS EC2 Virtual Server avec le pointeur vers les privilèges d'administrateur


Vous devez également modifier le fichier /etc/ssh/sshd_config pour activer l'authentification par mot de passe.

 sudo vi /etc/ssh/sshd_config 


La capture d'écran du terminal d'instance AWS EC2 Virtual Server avec le pointeur vers les paramètres d'administration


Ensuite, vous devez recharger le service pour confirmer ces modifications.

 sudo service sshd reload


À la suite de l'exécution de cette commande, vous verrez :


La capture d'écran du terminal d'instance AWS EC2 Virtual Server avec le pointeur vers le résultat du rechargement sshd


Vous pouvez maintenant utiliser cette commande pour éviter d'ajouter sudo pour toutes les autres commandes.

 sudo su - ansible-admin


Étape 5 : Générer une clé dans une instance de serveur virtuel AWS EC2

Vous envisagez de gérer des serveurs distants tels que les instances de serveur virtuel K8s EC2 plus loin dans cet article. C'est pourquoi vous devez configurer des clés SSH.

 ssh-keygen


À la suite de l'exécution de cette commande, vous verrez :

La capture d'écran du terminal d'instance AWS EC2 Virtual Server avec le pointeur vers le résultat ssh-keygen


Les clés SSH sont désormais générées et prêtes à être utilisées.

Étape 6 : Installer Ansible

Vous pouvez maintenant installer Ansible sur votre instance de serveur virtuel EC2 « AnsibleServer » .

Faisons-le.


Exécutez cette commande pour installer Ansible.

 sudo amazon-linux-extras install ansible2


Pour vérifier Ansible, utilisez cette commande :

 ansible --version


À la suite de l'exécution de cette commande, vous verrez :

La capture d'écran du terminal d'instance AWS EC2 Virtual Server avec le pointeur vers sudo yum install ansible result


Étape 7 : Installez le plug-in Jenkins « Publier via SSH » sur l'instance JenkinsServer EC2

Comme Ansible est installé sur votre instance de serveur virtuel EC2 « AnsibleServer » , vous pouvez configurer Jenkins pour l'intégrer à Ansible. Vous devez installer le plugin « Publier via SSH » pour intégrer Jenkins à l'instance de serveur virtuel EC2 sur laquelle Ansible est installé et à d'autres instances de serveur virtuel EC2 sur lesquelles Kubernetes est installé.


Allez dans « Tableau de bord » → « Gérer Jenkins »« Configurer le système »« Plugins disponibles » .

Saisissez ensuite « Publier via SSH » dans le champ de recherche.


La capture d'écran de Jenkins installé sur le serveur virtuel AWS EC2 avec le pointeur vers la page Web « Plugins disponibles »


Cliquez sur le bouton « Installer sans redémarrage » . Attendez la fin du processus de téléchargement.


La capture d'écran de Jenkins installé sur le serveur virtuel AWS EC2 avec le pointeur vers la page Web « Progression du téléchargement »



Le plugin « Publier via SSH » est désormais installé sur l'instance de serveur virtuel Jenkins EC2.


Étape 8 : Configurer le plugin Jenkins « Publier via SSH »

Avec l'installation réussie du plugin Apache Maven Jenkins, vous pouvez désormais utiliser ce plugin dans le pipeline que vous avez créé et mis à jour dans les modules 2 et 3.


Pour ce faire, procédez comme suit :


Allez dans « Tableau de bord »« Gérer Jenkins »« Configurer le système »« Publier via SSH » .

La capture d'écran du terminal d'instance AWS EC2 Virtual Server avec le plugin "Publish over SSH"


Entrez toutes les données requises telles qu'elles figurent sur la capture d'écran, y compris le nom d'hôte, le nom d'utilisateur et la clé privée (ou le mot de passe le cas échéant).


La capture d'écran du terminal d'instance AWS EC2 Virtual Server avec le plugin "Publish over SSH"


Cliquez ensuite sur les boutons « Appliquer » et « Enregistrer » .


Ici, vous avez terminé de configurer le plugin Jenkins « Publier via SSH » .


Ensuite, cliquez sur « Tester la configuration » pour valider que le plugin fonctionne correctement.



La capture d'écran du plugin "Publish over SSH" avec le bouton "Test Configuration"


Sur le côté gauche, vous pouvez voir que l'état de configuration du plugin de test est « Succès ». Cela signifie que la configuration du plugin est correcte.


Étape 9 : Créer un nouveau répertoire Docker dans AnsibleServer

Vous devez créer un nouveau dossier sur l'instance AnsibleServer EC2 où le JAR du projet sera stocké. Ce pot sera utilisé ultérieurement pour créer une image Docker.


Commençons.


Accédez au dossier « /opt » dans l’instance AnsibleServer EC2.

 cd /opt


Créez-y un nouveau dossier « docker » .

 sudo mkdir docker


Donnez des privilèges à ce dossier « docker » .

 sudo chown ansible-admin:ansible-admin docker


Maintenant, vérifiez les privilèges du dossier « docker » en exécutant cette commande.

 ll


Vous pouvez voir que le dossier « docker » est accessible avec l'utilisateur « ansible-admin » .


La capture d'écran du dossier "docker" dans l'instance EC2 "AnsibleServer"


Étape 10 : Intégrez le plugin Github « Publier via SSH » dans le pipeline


Maintenant que le plugin Github « Publier via SSH » est installé et configuré, vous pouvez maintenant l'intégrer dans le pipeline que vous avez créé dans le « [module 2] : Jenkins Server » pour transférer un artefact jar de projet de « JenkinsServer » vers "AnsibleServeur" .


Eh bien, pour intégrer le plugin Github « Publier via SSH » dans le pipeline, vous devez suivre ces étapes :


  1. Accédez à « Tableau de bord » → « CI_CD_Pipeline » → « Configurer » → « Actions post-build ».
  2. Cliquez sur le bouton « Ajouter une action post-construction » .
  3. Choisissez l’option « Envoyer les artefacts de build via SSH » .
  4. Ajoutez « AnsibleServer » dans l'entrée « Nom » dans la section « Serveur SSH » **.**
  5. Ajoutez « target/*.jar » dans l'entrée « Fichiers sources » dans la section « Ensemble de transfert » **.**
  6. Ajoutez « cible/ » dans l'entrée « Supprimer le préfixe » dans la section « Ensemble de transfert » **.**
  7. Ajoutez « //opt/docker/ » dans l'entrée « Répertoire distant » dans la section « Transfer Set » **.**
  8. Pour l'instant, mettez simplement une chaîne vide dans l'entrée « Commande Exec » sous la section « Transfer Set ».



La capture d'écran de la section « Envoyer l'artefact de build via SSH » dans la configuration du pipeline


Enfin, vous devez cliquer sur les boutons « Appliquer » et « Enregistrer » pour terminer l'intégration du plugin « Publier via SSH » avec le pipeline.


Étape 11 : Testez le plugin Github « Publier via SSH » intégré au pipeline

Vous pouvez désormais utiliser votre pipeline mis à jour pour transférer un artefact jar de projet de « JenkinsServer » vers « AnsibleServer » . Pour ce faire, vous devez cliquer sur le bouton « Construire maintenant » . En conséquence, vous verrez un résultat de travail réussi dans l’historique de construction.


Si vous ouvrez votre terminal AWS EC2 « AnsibleServer » . Vous pouvez vérifier que le pipeline fonctionne bien.

Utilisez simplement cette commande.


 cd /opt/docker


De cette façon, vous pouvez voir l'artefact JAR, indiquant la réussite de la construction de votre projet à partir de GitHub.

La capture d'écran du répertoire /opt/docker avec l'artefact jar du projet


Étape 12 : Configurer les hôtes Ansible

Lorsque vous exécutez un playbook Ansible, vous spécifiez les hôtes sur lesquels il doit s'exécuter. Vous pouvez le faire de deux manières :


  1. Spécifiez les hôtes directement dans le playbook : dans votre playbook, vous pouvez définir le paramètre hosts sur une liste d'adresses IP ou de noms d'hôtes.
  2. Utiliser un fichier d'inventaire : Ansible vous permet de définir une liste d'hôtes dans un fichier d'inventaire et de référencer ce fichier lors de l'exécution de votre playbook. Le fichier d'inventaire par défaut est /etc/ansible/hosts .


En modifiant /etc/ansible/hosts , vous pouvez facilement gérer des groupes d'hôtes sans avoir à écrire leurs adresses IP à chaque fois que vous exécutez un playbook.


Découvrons l'hôte de l'instance AnsibleServer EC2 en exécutant la commande suivante.

 sudo ifconfig 


La capture d'écran du paramètre d'interface réseau de l'instance AnsibleServer EC2


Après avoir découvert l'hôte de l'instance AnsibleServer EC2, vous pouvez l'ajouter au fichier hôtes Ansible en exécutant la commande suivante.


 sudo vi /etc/ansible/hosts


Vous pouvez également ajouter « [ansible] » comme référence

La capture d'écran du fichier d'hôtes Ansible


Si vous gérez un cluster de serveurs et que vous souhaitez appliquer un playbook à chacun d'entre eux, au lieu de spécifier l'adresse IP de chaque serveur dans le playbook, vous pouvez simplement ajouter tous les serveurs à un groupe dans le fichier d'inventaire, puis spécifier le groupe dans le playbook.


Étape 13 : Configurer l'authentification SSH sans mot de passe sur localhost pour Ansible

Ansible est conçu pour automatiser les tâches sur des serveurs distants. L'authentification SSH sans mot de passe permet à Ansible de se connecter à ces serveurs sans avoir besoin de saisir manuellement un mot de passe.

Exécutez cette commande pour créer une connexion sécurisée de votre ordinateur à un autre ordinateur (comme celui à l'adresse IP 172.31.34.41), en utilisant la clé SSH de l'utilisateur ansible-admin.


 sudo ssh-copy-id -i /home/{your user name}/.ssh/id_rsa.pub {your user name}@{your host address}


Dans mon cas, cela ressemble à ceci.

 sudo ssh-copy-id -i /home/ansible-admin/.ssh/id_rsa.pub [email protected] 


La capture d'écran du résultat réussi de l'installation de l'authentification SSH sans mot de passe


Vous pouvez maintenant voir « Nombre de clé(s) ajoutée(s) : 1 » . Cela signifie que l'installation de l'authentification SSH sans mot de passe a été terminée avec succès.

Étape 14 : Créer un nouveau playbook Ansible pour les tâches Docker

Maintenant qu'Ansible est configuré et prêt à fonctionner, vous pouvez créer un nouveau playbook Ansible pour votre pipeline. Ce playbook permettra à Ansible de créer et d'envoyer une nouvelle image Docker à Dockerhub.

Voici comment procéder :


  1. Commencez par créer un nouveau fichier playbook Ansible. Utilisez simplement cette commande.
 touch hello-app.yml


  1. Ensuite, modifiez le nouveau fichier hello-app.yml . Ouvrez-le pour le modifier avec cette commande.
 vi hello-app.yml


  1. Dans le fichier, tapez les éléments suivants.
 --- - hosts: ansible user: root tasks: - name: create docker image command: docker build -t hello:latest . args: chdir: /opt/docker - name: create tag to push image onto dockerhub command: docker tag hello:latest zufarexplainedit/hello:latest - name: push docker image onto dockerhub command: docker push zufarexplainedit/hello:latest

Le playbook Ansible pour les tâches Docker est prêt à être utilisé.

Étape 13 : Testez le playbook Ansible avec les tâches Docker

Avec Ansible, Ansible playbook, AnsibleServer et JenkinsServer tous correctement configurés, il est temps de tester le playbook Ansible.


Accédez à l’emplacement de votre playbook Ansible.

 cd /opt/docker


Ensuite, exécutez la commande suivante.

 sudo -u ansible-admin ansible-playbook /opt/docker/hello-app.yml


Une fois terminé, vous verrez le résultat de l’exécution réussie de votre playbook Ansible.

La capture d'écran du résultat de l'exécution réussie du playbook ansible pour les tâches Docker


De plus, prenez un moment pour visiter votre compte Dockerhub et vérifiez si une nouvelle image est désormais visible.


La capture d'écran du compte Dockerhub avec la nouvelle image ajoutée


Vous devriez voir l'image nouvellement ajoutée. Ce résultat confirme que votre playbook Ansible est correct.


Étape 14 : Intégrer les tâches Ansible Docker dans le pipeline

Maintenant que le plugin Github « Publier via SSH » , Ansible et Docker sont installés et configurés, vous pouvez désormais tous les intégrer dans le pipeline que vous avez créé dans le « [module 2] : Jenkins Server » pour transférer un artefact jar de projet. de « JenkinsServer » à « AnsibleServer » , puis créez une nouvelle image Docker à partir de votre projet, puis transférez cette image Docker sur Dockerhub.


Pour y parvenir, vous devez suivre ces étapes :

  1. Accédez à « Tableau de bord » → « CI_CD_Pipeline » → « Configurer » → « Actions post-build » → « Envoyer des artefacts de build via SSH » .
  2. Ajoutez la commande « sudo -u ansible-admin ansible-playbook /opt/docker/hello-app.yml » dans l'entrée « Commande Exec » .


La capture d'écran de la section « Envoyer l'artefact de build via SSH » dans la configuration du pipeline


Enfin, cliquez sur les boutons « Appliquer » et « Enregistrer » pour terminer l'intégration des tâches Ansible Docker avec le pipeline.

Étape 15 : Testez « Playbook Ansible avec tâches Docker » intégré au pipeline

Vous pouvez maintenant tester votre pipeline mis à niveau pour transférer de manière transparente un artefact jar de projet de « JenkinsServer » vers « AnsibleServer » , puis créer une nouvelle image Docker à partir de votre projet, puis transférer cette image Docker sur Dockerhub. Pour ce faire, vous devez cliquer sur le bouton « Construire maintenant » . En conséquence, vous verrez un résultat de travail réussi dans l’historique de construction.


De plus, prenez un moment pour visiter votre compte Dockerhub et vérifiez si une nouvelle image est désormais visible.


La capture d'écran du compte Dockerhub avec la nouvelle image ajoutée


Vous devriez voir l'image nouvellement ajoutée. Ce résultat confirme que votre playbook Ansible avec les tâches Docker a été intégré avec succès dans le pipeline.


[Module 7] : Kubernetes

Configurons maintenant les K8 sur l'instance EC2. Vous allez créer une nouvelle instance EC2 et installer leur outil de ligne de commande kubectl pour interagir davantage avec un cluster Kubernetes .


Étape 1 : lancer une instance de serveur virtuel AWS EC2

Utilisez les instructions de la section « Lancer une instance de serveur virtuel AWS EC2 » de ce didacticiel pour terminer cette étape.


N'oubliez pas d'ajouter une configuration de groupe de sécurité. Il permet à tous les outils et SSH de fonctionner respectivement sur les ports 8080 et 22 .


Utilisez le nom « K8sServer » pour distinguer votre instance de serveur virtuel EC2.

Vous pouvez réutiliser le groupe de sécurité « CI_CD_Pipeline » et « CI_CD_Pipeline_Key_Pair » pour une nouvelle instance EC2 « K8sServer » .


Étape 2 : Connectez-vous à une instance de serveur virtuel AWS EC2

Cliquez sur le bouton « Connecter ».

La capture d'écran de la page Web AWS avec le pointeur vers le bouton « Connecter »


Vous pouvez maintenant voir le terminal en ligne de l'instance de serveur virtuel EC2.

La capture d'écran du terminal en ligne de l'instance AWS EC2 Virtual Server


Étape 3 : Modifiez le nom d'hôte de l'instance de serveur virtuel AWS EC2 « KubernetesServer »

La première chose que vous devez faire lorsque vous souhaitez configurer KuberenetesServer sur une instance de serveur virtuel EC2 est de modifier son nom d'hôte.


Faisons-le. Exécutez cette commande pour ouvrir le fichier de nom d'hôte :

 sudo vi /etc/hostname


Vous devriez voir quelque chose comme ça.

La capture d'écran de l'instance de serveur virtuel AWS EC2 avec le fichier de nom d'hôte


Remplacez ce nom d'hôte par « kubernetes-server », puis redémarrez-le.

 sudo init 6


Votre nom d'hôte a été modifié.

La capture d'écran du terminal d'instance AWS EC2 Virtual Server avec le pointeur vers le nom d'hôte


Étape 4 : Vérifiez la version de l'AWS CLI

Utilisez cette commande pour vérifier la version AWS .

 aws --version


De cette façon, vous pouvez voir votre version actuelle d'Aws-cli.

La capture d'écran du terminal en ligne de l'instance de serveur virtuel AWS EC2 avec le résultat de la commande de version aws


Si vous voyez la version aws-cli/1.18 , vous devez télécharger la dernière version.


Étape 5 : Mettre à jour l'AWS CLI

Maintenant que vous avez découvert que vous disposez d'une ancienne version d'Aws-cli sur votre instance EC2, vous devez la mettre à jour. Pour cela, accédez à AWS → Documentation → AWS Command Line Interface → Guide de l'utilisateur pour la version 2.


La capture d'écran de la page Web de l'instance de serveur virtuel AWS EC2 avec le guide de l'utilisateur pour la version 2


Copiez-collez la commande curl .


Tout d'abord, exécutez cette commande pour télécharger awscli version 2.

 curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"

Attendez que le processus de téléchargement commence.


Vous devriez voir quelque chose comme ça.

La capture d'écran du terminal en ligne de l'instance de serveur virtuel AWS EC2 avec le téléchargement du résultat aws version 2


Deuxièmement, vous devez exécuter cette commande pour décompresser l'archive awscli version 2.

 unzip awscliv2.zip


Troisièmement, vous devez exécuter cette commande pour installer awscli version 2.

 sudo ./aws/install


Ensuite, rechargez le terminal en ligne de l'instance de serveur virtuel Kubernetes EC2.


Ensuite, utilisez cette commande pour vérifier la version AWS

 aws --version


Vous pouvez voir que aws cli a aws-cli/2.

La capture d'écran du terminal en ligne de l'instance de serveur virtuel AWS EC2 avec le résultat de la commande de version AWS


Étape 6 : Installer Kubectl

Kubectl est un outil de ligne de commande fondamental pour interagir avec n'importe quel cluster Kubernetes, quelle que soit l'infrastructure sous-jacente. Il vous permet de gérer les ressources, de déployer des applications, de configurer la mise en réseau, d'accéder aux journaux et d'effectuer diverses autres tâches au sein d'un cluster Kubernetes.


Vous devez maintenant installer l'outil de ligne de commande kubectl pour interagir davantage avec un cluster Kubernetes. Pour cela, vous devez accéder à AWSDocumentationAmazon EKSGuide de l'utilisateurInstallation ou mise à jour de kubectlLinux .


Ou cliquez simplement sur le lien https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html .


La capture d'écran du guide de l'utilisateur AWS EKS



Tout d’abord, exécutez cette commande pour télécharger kubectl.

 curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.27.1/2023-04-19/bin/linux/amd64/kubectl


Attendez le processus de téléchargement.


Vous verrez quelque chose comme ça.

La capture d'écran du terminal en ligne de l'instance de serveur virtuel AWS EC2 avec le téléchargement du résultat kubectl


Donnez la permission à kubectl.

 chmod +x kubectl


Déplacez kubectl vers le dossier /usr/local/bin.

 sudo mv kubectl /usr/local/bin


Vérifiez la version de kubectl.

 kubectl version --output=yaml


Étape 7 : Installer eksctl

Eksctl est un autre outil de ligne de commande spécifiquement adapté au service Amazon EKS. Eksctl peut être utilisé pour créer des clusters AWS EKS, gérer des groupes de nœuds et effectuer des tâches spécifiques à EKS, telles que l'intégration avec des rôles IAM et d'autres services AWS en supprimant une grande partie de la configuration et de la gestion de l'infrastructure AWS.


Exécutez la commande pour télécharger kubectl.

 curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp


Déplacez eksctl vers le dossier /usr/local/bin.

 sudo mv /tmp/eksctl /usr/local/bin


Vérifiez la version d'eksctl.

 eksctl version


Tu devrais voir la version

La capture d'écran du terminal en ligne de l'instance AWS EC2 Virtual Server avec la version eksctl


Étape 8 : Créer un rôle IAM pour eksctl

Vous devez créer un rôle IAM et l'attacher à votre instance EC2 « KubernetesServer » .

Pour ce faire, vous devez trouver EC2 dans la zone de recherche.


Choisissez EC2 Virtual Server en cliquant sur le lien https://us-east-1.console.aws.amazon.com/ec2/ .

La capture d'écran de la page Web AWS avec le pointeur vers "IAM"


Accédez au tableau de bord IAMRôles .

La capture d'écran de la page Web AWS avec le pointeur vers « Rôles IAM »


Cliquez sur le bouton « Créer un rôle » sur la page Web des rôles IAM .


Choisissez ensuite « Service AWS », « EC2 ». Et cliquez sur le bouton « Suivant » .

La capture d'écran de la page Web AWS avec le pointeur vers « Configuration des rôles IAM »


Ensuite, recherchez « AmazonEC2FullAccess » , « AmazonEC2FullAccess » , « IAMFullAccess » et « AWSCloudFormationFullAccess » dans la zone de recherche, puis cliquez sur le bouton « Ajouter des autorisations » .


Et puis cliquez sur le bouton « Suivant » .

La capture d'écran de la page Web AWS avec le pointeur vers l'autorisation AdministratorAccess

Tapez ensuite « Eksctl_Role » dans l’entrée « Nom du rôle » .

Et cliquez sur le bouton « Créer un rôle » .

La capture d'écran de la page Web AWS avec le pointeur vers la configuration du rôle d'autorisation


Le rôle est enfin créé.


Étape 9 : Connectez le rôle IAM à eksctl

Accédez à la page Web de l'instance AWS EC2. Choisissez « KuberbetesServer ». Cliquez ensuite sur « Actions »« Sécurité »« Modifier le rôle IAM ».


La capture d'écran de la page Web AWS avec le pointeur vers le bouton KubernetesServer Security



Choisissez « Eksctl_Role » , puis cliquez sur le bouton « Mettre à jour le rôle IAM » .


La capture d'écran de la page Web AWS avec le pointeur vers le rôle IAM Elsctl_Role


Votre rôle IAM est désormais connecté à votre outil « EKS_Server » et eksctl.

Étape 10 : Créer un cluster eksctl


Un cluster Amazon EKS (Elastic Kubernetes Service) est un environnement Kubernetes géré sur AWS, automatisant des tâches d'infrastructure complexes telles que la configuration, la mise à l'échelle et la maintenance. Il est essentiel car il fournit une plate-forme efficace, sécurisée et optimisée pour AWS pour le déploiement, la gestion et la mise à l'échelle d'applications conteneurisées, rationalisant les opérations et permettant aux développeurs de se concentrer sur le codage plutôt que sur la gestion de l'infrastructure sous-jacente.


Il est maintenant temps de configurer votre cluster EKS.


Pour y parvenir, suivez ces étapes :


  1. Modifiez la commande suivante avec vos informations spécifiques.
 eksctl create cluster --name cluster-name \ --region region-name \ --node-type instance-type \ --nodes-min 2 \ --nodes-max 2 \ --zones <AZ-1>,<AZ-2>


Par exemple, dans mon cas, cela ressemble à ceci.

 eksctl create cluster --name zufarexplainedit \ --region eu-north-1 \ --node-type t3.micro


  1. Exécutez la commande modifiée et attendez patiemment la fin du processus de création du cluster. Vous remarquerez que l'état du cluster EKS est indiqué comme « création » sur la page Web AWS CloudFormation.


La capture d'écran de la page Web AWS avec le pointeur vers AWS CloudFormation où vous pouvez voir l'état de « création » du cluster EKS


La procédure de création de cluster prend généralement environ 20 minutes. Une fois terminé, le terminal affichera le résultat du processus.


La capture d'écran de la page Web AWS avec le pointeur vers le terminal AWS EC2 où vous pouvez voir le résultat de la création du cluster EKS


De plus, vous pouvez vérifier l'état de création réussie du cluster EKS sur la page Web AWS CloudFormation.


La capture d'écran de la page Web AWS avec le pointeur vers AWS CloudFormation où vous pouvez voir le résultat de la création du cluster EKS


Étape 11 : Créer un fichier yaml de déploiement Kubernetes

Un fichier YAML de déploiement Kubernetes est un script de configuration écrit au format YAML qui définit comment gérer et maintenir une application ou un service spécifique au sein d'un cluster Kubernetes. Il encapsule les instructions permettant d'orchestrer le déploiement, la mise à l'échelle, la mise à jour et la surveillance des conteneurs exécutant l'application. Ce fichier comprend des détails tels que l'image du conteneur, le nombre souhaité de répliques, les limites de ressources, les variables d'environnement, les paramètres réseau, etc. Lorsqu'il est appliqué à un cluster Kubernetes, le fichier YAML de déploiement garantit l'état souhaité de l'application, en gérant automatiquement la création, la mise à l'échelle et la récupération des conteneurs pour maintenir le niveau souhaité de disponibilité et de fiabilité.


Maintenant que le cluster Kubernetes, eksctl et kubectl sont installés et configurés, vous pouvez créer un fichier yaml de déploiement Kubernetes.


Vous pouvez le faire en exécutant la commande suivante.

 touch hello-app-deployment.yaml


Ensuite, modifiez ce fichier en exécutant la commande suivante.

 vi hello-app-deployment.yaml


Ajoutez ce contenu au hello-app-deployment.yaml.

 apiVersion: apps/v1 kind: Deployment metadata: name: zufarexplainedit-hello-app labels: app: hello-app spec: replicas: 2 selector: matchLabels: app: hello-app template: metadata: labels: app: hello-app spec: containers: - name: hello-app image: zufarexplainedit/hello imagePullPolicy: Always ports: - containerPort: 8080 strategy: type: RollingUpdate rollingUpdate: maxSurge: 1 maxUnavailable: 1


Hello-app-deployment.yaml est maintenant créé et prêt à être utilisé.


Étape 12 : Créer le fichier yaml du service Kubernetes

Un fichier YAML du service Kubernetes est un script de configuration écrit au format YAML qui définit une abstraction réseau pour un ensemble de pods, permettant d'y accéder de manière cohérente au sein d'un cluster Kubernetes. Ce fichier décrit comment le service doit être découvert, accessible et équilibré en charge par d'autres services ou clients externes. Il comprend des spécifications telles que le type de service (ClusterIP, NodePort, LoadBalancer), les numéros de port, les sélecteurs pour identifier les pods, etc. Lorsqu'il est appliqué à un cluster Kubernetes, le fichier Service YAML crée une adresse IP et un port virtuels qui acheminent le trafic vers les pods appropriés, en faisant abstraction des modifications de pod sous-jacentes et en fournissant un point de terminaison stable pour la communication, permettant une connectivité transparente et une mise à l'échelle dynamique.


Une fois le cluster Kubernetes, eksctl et kubectl installés et configurés, vous pouvez créer le fichier yaml du service Kubernetes.


Pour ce faire, vous devez créer un fichier yaml du service Kubernetes en exécutant la commande suivante.

 touch hello-app-service.yaml


Ensuite, modifiez ce fichier en exécutant la commande suivante.

 vi hello-app-service.yaml


Ajoutez ce contenu au hello-app-deployment.yaml.

 apiVersion: v1 kind: Service metadata: name: zufarexplainedit-hello-app-service labels: app: hello-app spec: selector: app: hello-app ports: - port: 8080 targetPort: 8080 type: LoadBalancer

Hello-app-service.yaml est maintenant créé et prêt à être utilisé.


Étape 13 : Testez le cluster Kubernetes à l'aide de kubectl

Une fois votre cluster Kubernetes EKS installé et configuré avec succès, et votre service Kubernetes et vos fichiers de déploiement prêts, il est temps de tester les choses à l'aide des commandes kubectl.


  1. Appliquer le déploiement.

    Utilisez la commande suivante pour appliquer la configuration de déploiement.

 kubectl apply -f hello-app-deployment.yaml

Cela créera un déploiement avec le nombre spécifié de réplicas et une stratégie de mise à jour continue, garantissant la disponibilité et la gérabilité de votre application.


2. Appliquer le service.

Ensuite, appliquez la configuration du service.

 kubectl apply -f hello-app-service.yaml

Cela mettra en place un service de type LoadBalancer, exposant votre application à Internet.

Notez que le provisionnement du LoadBalancer et l'acquisition d'une adresse IP externe peuvent prendre un certain temps.


  1. Vérifiez l'état de LoadBalancer.

    Surveillez l'état de votre service en utilisant.

 kubectl get service zufarexplainedit-hello-app-service

Lorsqu'une IP externe est attribuée, vous êtes presque prêt à accéder à votre application.


  1. Accédez à votre candidature.

    À l’aide d’un navigateur Web, saisissez l’adresse IP externe attribuée suivie de :8080. Après un bref instant, la page se chargera, affichant le message « HelloWorld ». Gardez à l’esprit que le chargement initial peut prendre quelques secondes.


    La capture d'écran de la page Web de l'application Hello


Nettoyer avec les commandes kubectl

Lorsque vous avez besoin de ranger les ressources dans votre environnement Kubernetes, vous pouvez utiliser les commandes kubectl suivantes pour supprimer efficacement les déploiements, les pods et les services.


1. Supprimez tous les déploiements .

Pour supprimer tous les déploiements, vous pouvez utiliser la commande suivante.

 kubectl delete deployments --all

Cette action garantit qu'aucune instance de déploiement active n'est laissée dans votre cluster.


2. Supprimez tous les modules .

Si vous devez supprimer tous les pods, qu'ils soient gérés par un déploiement ou non, vous pouvez utiliser la commande suivante.

 kubectl delete pods --all

La suppression des pods peut vous aider à réinitialiser l'état de votre cluster ou à préparer de nouveaux déploiements.


3. Supprimez tous les services .

Pour nettoyer les services qui exposent vos applications au réseau, vous pouvez utiliser la commande suivante.

 kubectl delete services --all

La suppression de services peut impliquer des temps d'arrêt, alors réfléchissez aux implications avant de continuer.

Suppression d'un cluster Amazon EKS

Pour supprimer toutes les ressources associées au cluster Amazon EKS spécifié créé avec eksctl , y compris les nœuds de travail, les composants réseau et d'autres ressources, vous pouvez utiliser la commande suivante.

 eksctl delete cluster --name {your cluster name} --region {your region name}

Pour moi c'est.

 eksctl delete cluster --name zufarexplainedit --region eu-north-1

Assurez-vous d'être certain d'arrêter le cluster, car cette action est irréversible et entraînera une perte de données.



Étape 14 : Ajouter et configurer un nouvel utilisateur dans l'instance de serveur virtuel AWS EC2 « KubernetesServer »

Ajoutons maintenant un nouvel utilisateur ansible-admin à l'instance de serveur virtuel AWS EC2 « KubernetesServer » .


Pour ce faire, utilisez cette commande.

 sudo useradd ansible-admin


Ensuite, définissez le mot de passe pour l'utilisateur ansible-admin .

 sudo passwd ansible-admin


Vous devez également configurer les privilèges utilisateur en modifiant le fichier sudoers .

 sudo visudo


Ajoutez « ansible-admin ALL=(ALL) ALL » à ce fichier sudoers .

La capture d'écran du terminal d'instance AWS EC2 Virtual Server avec le pointeur vers les privilèges d'administrateur


Vous devez également modifier le fichier /etc/ssh/sshd_config pour activer l'authentification par mot de passe.

 sudo vi /etc/ssh/sshd_config 


La capture d'écran du terminal d'instance AWS EC2 Virtual Server avec le pointeur vers les paramètres d'administration


Ensuite, vous devez recharger le service pour apporter ces modifications.

 sudo service sshd reload


À la suite de l'exécution de cette commande, vous verrez :

La capture d'écran du terminal d'instance AWS EC2 Virtual Server avec le pointeur vers le résultat du rechargement sshd


Vous pouvez maintenant utiliser cette commande pour éviter d'ajouter sudo pour toutes les autres commandes.

 sudo su - ansible-admin


Étape 15 : Générer une clé dans une instance de serveur virtuel AWS EC2

Vous envisagez de gérer des serveurs distants tels que l'instance de serveur virtuel K8s EC2 plus loin dans cet article. C'est pourquoi vous devez configurer des clés SSH.


 ssh-keygen


À la suite de l'exécution de cette commande, vous verrez :

La capture d'écran du terminal d'instance AWS EC2 Virtual Server avec le pointeur vers le résultat ssh-keygen


Les clés SSH sont désormais générées et prêtes à être utilisées.

Étape 16 : Configurer l'authentification SSH sans mot de passe sur localhost pour Ansible

Ansible est conçu pour automatiser les tâches sur des serveurs distants. L'authentification SSH sans mot de passe permet à Ansible de se connecter à ces serveurs sans avoir besoin de saisir manuellement un mot de passe.

Exécutez cette commande pour créer une connexion sécurisée de votre ordinateur à un autre ordinateur (comme celui à l'adresse IP 172.31.34.41), en utilisant la clé SSH de l'utilisateur ansible-admin.


 sudo ssh-copy-id -i /home/{your user name}/.ssh/id_rsa.pub {your user name}@{your host address}


Dans mon cas, cela ressemble à ceci.

 sudo ssh-copy-id -i /home/ansible-admin/.ssh/id_rsa.pub [email protected] 


La capture d'écran du résultat réussi de l'installation de l'authentification SSH sans mot de passe


Vous pouvez maintenant voir « Nombre de clé(s) ajoutée(s) : 1 » . Cela signifie que l'installation de l'authentification SSH sans mot de passe a été terminée avec succès.


Étape 17 : Configurer les hôtes Ansible dans l'instance AnsibleServer EC2

Lorsque vous exécutez un playbook Ansible, vous spécifiez les hôtes sur lesquels il doit s'exécuter. Dans cette étape, vous devez spécifier l'hôte de l'instance KubernetesServer EC2. Pour ce faire, vous devez répéter les mêmes étapes que celles que vous avez suivies dans « [Module 6] : Ansible ».


Découvrons l'hôte de l'instance KubernetesServer EC2 en exécutant la commande suivante.

 sudo ifconfig 


La capture d'écran du fichier "ifconfig"


Après avoir trouvé l'hôte de l'instance KubernetesServer EC2, vous pouvez l'ajouter au fichier d'hôtes Ansible en exécutant la commande suivante.

 sudo vi /etc/ansible/hosts 


La capture d'écran des fichiers "hosts" avec les hôtes ansible et kubernetes


Vous pouvez également ajouter « [kubernetes] » comme référence

Étape 18 : Créer un nouveau playbook Ansible pour les tâches Kubernetes

Maintenant que Kubernetes est configuré et prêt à fonctionner, vous pouvez créer un nouveau playbook Ansible avec des tâches Kubernetes pour votre pipeline. Ce playbook permettra à Ansible d'exécuter votre application sur le cluster Kubernetes avec les commandes kubectl.


Voici comment procéder :


  1. Commencez par créer un nouveau fichier playbook Ansible. Utilisez simplement cette commande.
 touch kubernetes-hello-app.yml


  1. Ensuite, modifiez le nouveau fichier hello-app.yml . Ouvrez-le pour le modifier avec cette commande.
 vi kubernetes-hello-app.yml


  1. Dans le fichier, tapez ce qui suit :
 --- - hosts: kubernetes tasks: - name: deploy regapp on kubernetes command: kubectl apply -f hello-app-deployment.yaml - name: create service for regapp command: kubectl apply -f hello-app-service.yaml - name: update deployment with new pods if image updated in docker hub command: kubectl rollout restart deployment.apps/zufarexplainedit-hello-app

Le playbook Ansible pour les tâches Kubernetes est prêt à être utilisé.


Étape 19 : Intégrez un nouveau playbook Ansible pour les tâches Kubernetes avec Jenkins

Maintenant que Kubernetes, Ansible et Ansible playbook pour les tâches Kubernetes sont tous configurés et prêts à fonctionner, vous pouvez l'intégrer à Jenkins.


  1. Accédez à JenkinsServer → Tableau de bord Jenkins → Nouvel élément.

  2. Créez un nouveau projet Jenkins Freestyle avec le nom « CD-Job ».


    La capture d'écran d'un nouveau projet freestyle de Jenkins "CD-Job"


  3. Cliquez sur le bouton « OK ».

  4. Accédez à la section « Actions post-construction ».

  5. Cliquez sur le bouton « Ajouter une action post-construction ».

  6. Choisissez l’option « Envoyer les artefacts de build via SSH ».

  7. Choisissez « AnsibleServer » comme serveur SSH.

  8. Ajoutez cette commande à l’entrée « commande exécutable ».


 sudo -u ansible-admin ansible-playbook /opt/docker/kubernetes-hello-app.yml


  1. Cliquez sur les boutons « Appliquer » et « Enregistrer ».

  2. Accédez au tableau de bord Jenkins → « CI_CD_Pipeline » → Configurer → section « Actions post-build ».

  3. Cliquez sur le bouton « Ajouter une action post-construction ».

  4. Choisissez l’option « Construire d’autres projets ».

  5. Allez dans la section « Construire d’autres projets ».

  6. Choisissez l’option « Déclencher uniquement si la construction est stable ».

  7. Ajoutez « CD-Job » à l’entrée « Projet à construire ».



    La capture d'écran de la section "Construire d'autres projets"


  8. Cliquez sur les boutons « Appliquer » et « Enregistrer ».


Vous pouvez désormais considérer que le pipeline est complètement terminé et prêt à être utilisé.


Étape 20 : Test de la version finale du pipeline

Il est maintenant temps de tester la version finale du pipeline.


Accédez à Jenkins → Tableau de bord Jenkins → « CI_CD_Pipeline ».


Cliquez sur le bouton "Construire maintenant".


Pour voir les résultats, consultez les journaux de la console de build.


La capture d'écran des journaux de la console de build


Vous remarquerez que le "CD-Job" a été déclenché dans les journaux de la console de build et que le statut final est marqué comme SUCCÈS.

4

De plus, vous pouvez vous rendre sur Dockerhub pour confirmer l'ajout de la nouvelle image Docker.

Et enfin, vous pouvez accéder à votre application à l'aide d'un navigateur Web. Saisissez l'adresse IP externe attribuée suivie de ":8080". Après un bref instant, la page se chargera, affichant le message « HelloWorld ».


Conclusion

Bravo pour la mise en place de ce pipeline CI/CD moderne !

Vous avez fait un travail formidable et vous êtes un véritable héros !


Merci pour tous vos efforts!




A propos de l'auteur

Zufar Sunagatov est un ingénieur logiciel senior expérimenté, passionné par la conception de systèmes logiciels modernes.


Zufar Sunagatov