Dans mon article précédent, j'ai plongé dans le monde fascinant des microservices - . C'était le début de ma série complète d'articles sur les microservices et leurs modèles. Modèles d'architecture de microservices, partie 1 : Modèles de décomposition 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 et . Alors commençons ce voyage ! qu'AWS, Docker, Kubernetes, Ansible, Git, Apache Maven Jenkins [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 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 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. Choisissez Serveur virtuel EC2 en cliquant sur . Service EC2 Cliquez sur le bouton . Lancer l'instance Étape 4 : Configurer la section « Nom et balises » Accédez à la section . « Nom et tags » Fournissez un nom pour une nouvelle instance de serveur virtuel AWS EC2 dans la section . « Nom » 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) » Pour jouer avec le serveur virtuel : GRATUITEMENT Sélectionnez le système d'exploitation de votre serveur virtuel - . Amazon Linux Dans la section , sélectionnez une machine avec la . Amazon Machine Image (AMI) balise éligible au niveau gratuit Étape 6 : Configurer la section « Type d'instance » Allez dans la section . « Type d'instance » Pour jouer avec le serveur virtuel : GRATUITEMENT Sélectionnez un type avec la dans la section . balise éligible à l'offre gratuite Type d'instance Pour moi, c'est . t2.micro (Family: t2 1cCPU 1 GiB Memory Current Generation:true) Étape 7 : Configurer la section « Configurer le stockage » Accédez à la section . « Configurer le stockage » Pour jouer avec le serveur virtuel : GRATUITEMENT 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 Étape 8 : Configurer la section « Paramètres réseau » Accédez à la section . « Paramètres réseau » Vous devez configurer la sécurité de votre serveur virtuel. Pour faire ça, Cliquez sur le bouton . « Créer un groupe de sécurité » Ajoutez le nom de votre nouveau groupe de sécurité dans la section . « Nom du groupe de sécurité » Ajoutez une description de votre nouveau groupe de sécurité dans la section . « Description » Par défaut, votre serveur virtuel est accessible via ( ). 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. Type - SSH, Protocole - TCP, Port - 22 Étape 9 : Configurer la section « Paire de clés (connexion) » Rendez-vous dans la section . « Bi-clé (Connexion) » Créez une nouvelle paire de clés si vous ne l'avez pas encore créée. Si vous n'avez pas encore créé : de « paire de clés » Cliquez sur le bouton . « Créer une nouvelle paire de clés » Donnez un nom à votre nouvelle paire de clés dans la section . « Nom de la paire de clés » Sélectionnez le type de paire de clés ou . Je choisis le type . RSA ED25519 RSA Sélectionnez Format de fichier de clé privée. Choix de et . Je choisis le format . .pem .ppk .pem Cliquez sur le bouton . « Créer une paire de clés » 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 » Une fois le processus de création de l'instance de serveur virtuel EC2 terminé, vous verrez ce qui suit. Ensuite, vous devez vous rendre dans la section en cliquant sur le bouton . « Instances » « Afficher toutes les instances » 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 de ce didacticiel pour terminer cette étape et créer une instance de serveur virtuel EC2 portant le nom JenkinsServer. [Module 1] : AWS EC2 Virtual Server N'oubliez pas d'ajouter une configuration de groupe de sécurité. Il permet à et de fonctionner respectivement sur les ports et . Jenkins SSH 8080 22 Utilisez le nom pour distinguer votre instance de serveur virtuel EC2. « JenkinsServer » Créez le groupe de sécurité et pour une nouvelle instance AWS EC2 . Vous pouvez les réutiliser plus loin dans l'article. « CI_CD_Pipeline » « CI_CD_Pipeline_Key_Pair » « JenkinsServer » É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. Ensuite, vous devez choisir puis cliquer sur le bouton . JenkinsServer « Connecter » Ensuite, vous verrez cette page Web. Vous devez à nouveau cliquer sur le bouton . « Connecter » Vous pouvez maintenant voir le terminal en ligne de l'instance de serveur virtuel EC2. É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 : Accédez à de téléchargement de Jenkins. la page Web Vous pouvez voir les options de versions stables (LTS) et régulières (hebdomadaires). Choisissez l'option LTS. Red Hat/Fedora/Alma/Rocky/CentOS Vous verrez cette page Web. Copiez la commande 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 get.. » 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 et l'exécuter. « sudo rpm.. » sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key De cette façon, le gestionnaire de packages 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. « rpm » Étape 5 : Installer Java Pour exécuter Jenkins, nous devons installer sur notre instance de serveur virtuel EC2. Java Pour installer , utilisez cette commande. Java sudo amazon-linux-extras install java-openjdk11 -y Vérifiez si a été installé correctement à l'aide de cette commande : Java java -version Vous verrez quelque chose comme ça. Étape 6 : Installer fontconfig Pour exécuter Jenkins, vous devez installer sur notre instance de serveur virtuel EC2. fontconfig 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 : 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. 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. 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 » Entrez le nom du « projet Freestyle » Github (le nom du « pipeline » sera utilisé plus loin) puis cliquez sur le bouton . « OK » Fournissez ensuite la du pipeline. 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) 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 équipes car ils les aident à réduire le temps de développement et à augmenter les déploiements réussis [1]. gratuit et open source DevOps 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. Étape 3 : Ouvrez le gestionnaire de plugins Jenkins Cliquez sur le bouton puis cliquez sur le bouton . « Gérer Jenkins » « Gérer les plugins » Étape 4 : Trouver le plugin Github Jenkins Cliquez sur le bouton . « Plugins disponibles » Recherchez la zone de recherche du plugin . Github Sélectionnez le plug-in . Github Étape 5 : Installer le plugin Github Jenkins Sélectionnez le plug-in . Et puis cliquez sur le bouton . Github « Installer sans redémarrage » Attendez la fin du 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 ». Ensuite, sur la page principale, vous devez cliquer sur le bouton puis cliquer sur le bouton . « Gérer Jenkins » « Configuration globale de l'outil » Ensuite, sur la page Web Global Tool Configuration, vous devez accéder à la section 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 et **.** « Appliquer » « 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. 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 « . Cliquez ensuite sur les boutons et pour terminer l'intégration de Git avec le pipeline. URL du référentiel » « Appliquer » « Enregistrer » É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. Ouvrez la première build à partir de l’historique des builds. 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. [Module 4] : 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. Apache Maven 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 à l'aide de cette commande. .bash_profile vi .bash_profile Ajoutez les variables et M2_HOME. JAVA_HOME Attribuez le chemin d'accès au JDK11 pour et le chemin d'accès au répertoire maven pour la variable . JAVA_HOME M2_HOME Pour trouver le chemin du JDK, utilisez cette commande. sudo find / -name java Comment utiliser VIM Pour le fichier, appuyez sur la touche du clavier pour insérer des données. éditer « I » Pour le fichier, appuyez sur le bouton du clavier « esc » et entrez « :w ». enregistrer Pour le fichier, appuyez sur le bouton du clavier et entrez . quitter « esc » « :q » Enregistrez les modifications. Ensuite, exécutez cette commande pour actualiser les variables système. source .bash_profile Pour vérifier , utilisez cette commande. $PATH echo $PATH Pour vérifier , utilisez cette commande. Apache Maven mvn -v Si vous avez tout fait correctement, vous pourrez visualiser 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 : Accédez à « Tableau de bord » → « Gérer Jenkins » → « Gérer les plugins » → « Disponible ». Dans le champ de recherche, saisissez . « Maven » Choisissez le plugin . « Maven Integration » Attendez la fin du processus de téléchargement. Et puis cliquez sur le bouton . « Revenir à la page d'accueil » É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 : Allez dans « Tableau de bord » → « Gérer Jenkins » → « Configuration globale des outils » → « JDK » Cliquez sur le bouton « Ajouter JDK ». Décochez « Installer automatiquement ». Allez ensuite dans la section . Cliquez sur le bouton . Décochez « Maven » « Ajouter Maven » « Installer automatiquement ». Ajoutez ensuite et le chemin . le nom MAVEN_HOME Cliquez sur les boutons et . « Appliquer » « 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 : Accédez à « Tableau de bord » → « CI_CD_Pipeline » → « Configurer » → « Étapes de construction ». Cliquez sur le bouton . « Ajouter une étape de construction » Choisissez l’option . « Invoquer des cibles Maven de niveau supérieur » Choisissez comme « Apache-Maven » « Version Maven ». Ajoutez la commande à l’entrée . « clean package » « Objectifs » Cliquez sur le bouton . « Avancé » Ajoutez « pom.xml » à l'entrée . « POM » Enfin, vous devez cliquer sur les boutons et pour terminer l'intégration d'Apache Maven avec le pipeline. « Appliquer » « Enregistrer » É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 « 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. Lancer une instance de serveur virtuel AWS EC2 » Étape 2 : Connectez-vous à une instance de serveur virtuel AWS EC2 Cliquez sur le bouton « Connecter ». Vous pouvez maintenant voir le terminal en ligne de l'instance de serveur virtuel EC2. 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 au groupe Docker sur le serveur virtuel EC2 pour accorder les privilèges d'administrateur Docker. « ansible-admin » « AnsibleServer » 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. É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. É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 qui était proposé dans le module « , alors vous n'avez pas besoin de créer un nouveau Dockerfile car ce référentiel de projet contenait déjà Dockerfile. « Hello » [Module 3] : Git et Github » 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 . Il est important de noter que ce transfert sera davantage automatisé à travers le pipeline. "AnsibleServer" 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. Avec cela, vous avez terminé le processus de connexion à et êtes maintenant prêt à procéder aux tests. Docker tester l'environnement Docker et Dockerfile Étape 8 : 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. 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 de ce didacticiel pour terminer cette étape et créer une instance de serveur virtuel EC2 pour Ansible. [Module 1] : AWS EC2 Virtual Server N'oubliez pas d'ajouter une configuration de groupe de sécurité. Il permet à et de fonctionner respectivement sur les ports et . Ansible SSH 8080 22 Utilisez le nom pour distinguer votre instance de serveur virtuel EC2. « AnsibleServer » Vous pouvez réutiliser le groupe de sécurité et pour une nouvelle instance EC2 . « CI_CD_Pipeline » « CI_CD_Pipeline_Key_Pair » « 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 » Ensuite, vous verrez cette page Web. Vous devez à nouveau cliquer sur le bouton . « Connecter » Vous pouvez maintenant voir le terminal en ligne de l'instance de serveur virtuel EC2. 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 : Remplacez ce nom d'hôte par Ensuite, redémarrez-le. « ansible-server ». sudo init 6 Étape 4 : Ajouter et configurer un nouvel utilisateur dans l'instance de serveur virtuel AWS EC2 « AnsibleServer » Ajoutons maintenant un nouvel utilisateur à l'instance de serveur virtuel AWS EC2. ansible-admin 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 à ce fichier . « ansible-admin ALL=(ALL) ALL » sudoers Vous devez également modifier le fichier pour activer l'authentification par mot de passe. /etc/ssh/sshd_config sudo vi /etc/ssh/sshd_config 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 : 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 : 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 : É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 , vous pouvez configurer Jenkins pour l'intégrer à Ansible. Vous devez installer le plugin 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 est installé. « AnsibleServer » « Publier via SSH » Kubernetes Allez dans → « → → . « Tableau de bord » Gérer Jenkins » « Configurer le système » « Plugins disponibles » Saisissez ensuite dans le champ de recherche. « Publier via SSH » Cliquez sur le bouton . Attendez la fin du processus de téléchargement. « Installer sans redémarrage » 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 » 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). Cliquez ensuite sur les boutons et . « Appliquer » « 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. 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 dans l’instance AnsibleServer EC2. « /opt » 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 en exécutant cette commande. « docker » ll Vous pouvez voir que le dossier est accessible avec l'utilisateur . « docker » « ansible-admin » dans Étape 10 : Intégrez le plugin Github « Publier via SSH » le pipeline Maintenant que le plugin Github 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 « vers . « Publier via SSH » JenkinsServer » "AnsibleServeur" Eh bien, pour intégrer le plugin Github dans le pipeline, vous devez suivre ces étapes : « Publier via SSH » Accédez à « Tableau de bord » → « CI_CD_Pipeline » → « Configurer » → « Actions post-build ». Cliquez sur le bouton . « Ajouter une action post-construction » Choisissez l’option . « Envoyer les artefacts de build via SSH » Ajoutez dans l'entrée dans la section **.** « AnsibleServer » « Nom » « Serveur SSH » Ajoutez dans l'entrée dans la section **.** « target/*.jar » « Fichiers sources » « Ensemble de transfert » Ajoutez dans l'entrée dans la section **.** « cible/ » « Supprimer le préfixe » « Ensemble de transfert » Ajoutez dans l'entrée dans la section **.** « //opt/docker/ » « Répertoire distant » « Transfer Set » Pour l'instant, mettez simplement une chaîne vide dans l'entrée « Commande Exec » sous la section « Transfer Set ». Enfin, vous devez cliquer sur les boutons et pour terminer l'intégration du plugin avec le pipeline. « Appliquer » « Enregistrer » « Publier via SSH » É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 « vers . Pour ce faire, vous devez cliquer sur le bouton . En conséquence, vous verrez un résultat de travail réussi dans l’historique de construction. JenkinsServer » « AnsibleServer » « Construire maintenant » Si vous ouvrez votre terminal AWS EC2 . Vous pouvez vérifier que le pipeline fonctionne bien. « AnsibleServer » 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. É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 : dans votre playbook, vous pouvez définir le paramètre sur une liste d'adresses IP ou de noms d'hôtes. Spécifiez les hôtes directement dans le playbook : hosts 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 . Utiliser un fichier d'inventaire : /etc/ansible/hosts En modifiant , vous pouvez facilement gérer des groupes d'hôtes sans avoir à écrire leurs adresses IP à chaque fois que vous exécutez un playbook. /etc/ansible/hosts Découvrons l'hôte de l'instance AnsibleServer EC2 en exécutant la commande suivante. sudo ifconfig 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 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. l'authentification SSH sans mot de passe sur localhost pour Ansible Étape 13 : Configurer 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 ansible-admin@172.31.34.41 Vous pouvez maintenant voir . Cela signifie que l'installation de l'authentification SSH sans mot de passe a été terminée avec succès. « Nombre de clé(s) ajoutée(s) : 1 » É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 : Commencez par créer un nouveau fichier playbook Ansible. Utilisez simplement cette commande. touch hello-app.yml Ensuite, modifiez le nouveau fichier . Ouvrez-le pour le modifier avec cette commande. hello-app.yml vi hello-app.yml 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. De plus, prenez un moment pour visiter votre compte Dockerhub et vérifiez si une nouvelle image est désormais visible. Vous devriez voir l'image nouvellement ajoutée. Ce résultat confirme que votre playbook Ansible est correct. dans Étape 14 : Intégrer les tâches Ansible Docker le pipeline Maintenant que le plugin Github , 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 « à , puis créez une nouvelle image Docker à partir de votre projet, puis transférez cette image Docker sur Dockerhub. « Publier via SSH » JenkinsServer » « AnsibleServer » Pour y parvenir, vous devez suivre ces étapes : Accédez à « Tableau de bord » → « CI_CD_Pipeline » → « Configurer » → « Actions post-build » → « Envoyer des artefacts de build via SSH » . Ajoutez la commande dans l'entrée . « sudo -u ansible-admin ansible-playbook /opt/docker/hello-app.yml » « Commande Exec » Enfin, cliquez sur les boutons et pour terminer l'intégration des tâches Ansible Docker avec le pipeline. « Appliquer » « Enregistrer » » É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 « vers , 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 . En conséquence, vous verrez un résultat de travail réussi dans l’historique de construction. JenkinsServer » « AnsibleServer » « Construire maintenant » De plus, prenez un moment pour visiter votre compte Dockerhub et vérifiez si une nouvelle image est désormais visible. 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 « de ce didacticiel pour terminer cette étape. Lancer une instance de serveur virtuel AWS EC2 » N'oubliez pas d'ajouter une configuration de groupe de sécurité. Il permet à et de fonctionner respectivement sur les ports et . tous les outils SSH 8080 22 Utilisez le nom pour distinguer votre instance de serveur virtuel EC2. « K8sServer » Vous pouvez réutiliser le groupe de sécurité et pour une nouvelle instance EC2 . « CI_CD_Pipeline » « CI_CD_Pipeline_Key_Pair » « K8sServer » Étape 2 : Connectez-vous à une instance de serveur virtuel AWS EC2 Cliquez sur le bouton « Connecter ». Vous pouvez maintenant voir le terminal en ligne de l'instance de serveur virtuel EC2. É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. Remplacez ce nom d'hôte par puis redémarrez-le. « kubernetes-server », sudo init 6 Votre nom d'hôte a été modifié. É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. Si vous voyez la version , vous devez télécharger la dernière version. aws-cli/1.18 É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. 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. 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. Étape 6 : Installer 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. Kubectl Vous devez maintenant installer l'outil de ligne de commande kubectl pour interagir davantage avec un cluster Kubernetes. Pour cela, vous devez accéder à → → → → ou → . AWS Documentation Amazon EKS Guide de l'utilisateur Installation mise à jour de kubectl Linux Ou cliquez simplement sur le lien . https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html 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. 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 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. Eksctl 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 É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/ Accédez au → . tableau de bord IAM Rôles Cliquez sur le bouton sur la page Web des rôles . « Créer un rôle » IAM Choisissez ensuite Et cliquez sur le bouton . « Service AWS », « EC2 ». « Suivant » Ensuite, recherchez , , et dans la zone de recherche, puis cliquez sur le bouton . « AmazonEC2FullAccess » « AmazonEC2FullAccess » « IAMFullAccess » « AWSCloudFormationFullAccess » « Ajouter des autorisations » Et puis cliquez sur le bouton . « Suivant » Tapez ensuite dans l’entrée . « Eksctl_Role » « Nom du rôle » Et cliquez sur le bouton . « Créer un rôle » 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 Cliquez ensuite sur → → « KuberbetesServer ». « Actions » « Sécurité » « Modifier le rôle IAM ». Choisissez , puis cliquez sur le bouton . « Eksctl_Role » « Mettre à jour le rôle IAM » Votre rôle IAM est désormais connecté à votre outil et eksctl. « EKS_Server » Étape 10 : Créer un cluster eksctl 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. Un cluster Amazon EKS (Elastic Kubernetes Service) Il est maintenant temps de configurer votre cluster EKS. Pour y parvenir, suivez ces étapes : 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 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 sur la page Web AWS CloudFormation. « création » 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. De plus, vous pouvez vérifier l'état de création réussie sur la page Web AWS CloudFormation. du cluster EKS Étape 11 : Créer 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é. Un fichier YAML de déploiement Kubernetes 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 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. Un fichier YAML du service Kubernetes 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. 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. 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. 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. 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 , y compris les nœuds de travail, les composants réseau et d'autres ressources, vous pouvez utiliser la commande suivante. eksctl 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 à l'instance de serveur virtuel AWS EC2 . ansible-admin « 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 à ce fichier . « ansible-admin ALL=(ALL) ALL » sudoers Vous devez également modifier le fichier pour activer l'authentification par mot de passe. /etc/ssh/sshd_config sudo vi /etc/ssh/sshd_config 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 : 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 EC2 plus loin dans cet article. C'est pourquoi vous devez configurer des clés SSH. K8s ssh-keygen À la suite de l'exécution de cette commande, vous verrez : Les clés SSH sont désormais générées et prêtes à être utilisées. l'authentification SSH sans mot de passe sur localhost pour Ansible Étape 16 : Configurer 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 ansible-admin@172.31.34.41 Vous pouvez maintenant voir . Cela signifie que l'installation de l'authentification SSH sans mot de passe a été terminée avec succès. « Nombre de clé(s) ajoutée(s) : 1 » É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 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 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 : Commencez par créer un nouveau fichier playbook Ansible. Utilisez simplement cette commande. touch kubernetes-hello-app.yml Ensuite, modifiez le nouveau fichier . Ouvrez-le pour le modifier avec cette commande. hello-app.yml vi kubernetes-hello-app.yml 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. Accédez à JenkinsServer → Tableau de bord Jenkins → Nouvel élément. Créez un nouveau projet Jenkins Freestyle avec le nom « CD-Job ». Cliquez sur le bouton « OK ». Accédez à la section « Actions post-construction ». Cliquez sur le bouton « Ajouter une action post-construction ». Choisissez l’option « Envoyer les artefacts de build via SSH ». Choisissez « AnsibleServer » comme serveur SSH. Ajoutez cette commande à l’entrée « commande exécutable ». sudo -u ansible-admin ansible-playbook /opt/docker/kubernetes-hello-app.yml Cliquez sur les boutons « Appliquer » et « Enregistrer ». Accédez au tableau de bord Jenkins → « CI_CD_Pipeline » → Configurer → section « Actions post-build ». Cliquez sur le bouton « Ajouter une action post-construction ». Choisissez l’option « Construire d’autres projets ». Allez dans la section « Construire d’autres projets ». Choisissez l’option « Déclencher uniquement si la construction est stable ». Ajoutez « CD-Job » à l’entrée « Projet à construire ». 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. 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 est un ingénieur logiciel senior expérimenté, passionné par la conception de systèmes logiciels modernes. Zufar Sunagatov Développement de systèmes distribués hautes performances utilisant Java, Kotlin, AWS, Docker et Kubernetes pour des entreprises comme Citi (Londres), MTS (Moscou) et autres ( ). vous pouvez suivre le profil LinkedIn de Zufar pour plus d'informations J'ai fondé Ice Latte, une place de marché en ligne open source (vous pouvez rejoindre l'équipe de Zufar et contribuer à son projet sur GitHub : ). https://github.com/Sunagatov/Online-Store Création de la communauté ZufarExplainedIT pour partager ses connaissances et son expérience avec d'autres (vous pouvez suivre la communauté IT Telegram de Zufar : ). https://t.me/zufarexplained Encadré pendant plus de 3 000 minutes et animé 60 sessions sur ADPlist, nourrissant les talents en herbe ( ). vous pouvez être encadré par Zufar sur ADPlist A engagé le public en tant que conférencier lors de conférences et de chaînes YouTube informatiques, partageant des informations inestimables (des exemples de ses vidéos YouTube incluent : , ). "Тестовое собеседование Java разработчика #27 - Зуфар Сунагатов" "Aspiring Speakers Lunchtime Lightning Talks May 28th" Il est l'auteur d'articles informatiques très populaires avec plus de 7 000 vues chacun (des exemples de ses articles sont : , ). « Modèles d'architecture de microservices, partie 1 : Modèles de décomposition » « Что значит «вариативный»? Объясняем простыми словами"