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.
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 à //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 à //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 GRATUITEMENT avec le serveur virtuel :
Sélectionnez le système d'exploitation de votre serveur virtuel - Amazon Linux .
Dans la section Amazon Machine Image (AMI) , sélectionnez une machine avec la balise éligible au niveau gratuit .
Étape 6 : Configurer la section « Type d'instance »
Allez dans 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) .
Étape 7 : Configurer la section « Configurer le stockage »
Accédez à 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 .
É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 ( 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.
É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 RSA ou ED25519 . Je choisis le type RSA .
Sélectionnez Format de fichier de clé privée. Choix de .pem et .ppk . Je choisis le format .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 « Instances » en cliquant sur le bouton « 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 [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 AWS → Tableau de bord de la console de gestion EC2 → Instances.
Ensuite, vous devez choisir JenkinsServer puis cliquer 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.
É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.
Vous pouvez voir les options de versions stables (LTS) et régulières (hebdomadaires). Choisissez l'option LTS.
Vous verrez cette page Web.
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.
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.
Vérifiez si Java a été installé correctement à l'aide de cette commande :
java -version
Vous verrez quelque chose comme ça.
É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 :
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.
//<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.
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 description du pipeline.
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].
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 « Gérer Jenkins » puis cliquez sur le bouton « 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 Github . Et puis cliquez sur le bouton « 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 « Gérer Jenkins » puis cliquer sur le bouton « 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 « 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.
Vous pouvez utiliser mon projet avec la prochaine URL du référentiel : .
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.
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
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» .
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 .
É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
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.
É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 « Maven » . Cliquez sur le bouton « Ajouter Maven » . Décochez « Installer automatiquement ».
Ajoutez ensuite le nom et le chemin MAVEN_HOME .
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 :
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 « Apache-Maven » comme « Version Maven ».
Ajoutez la commande « clean package » à l’entrée « Objectifs » .
Cliquez sur le bouton « Avancé » .
Ajoutez « pom.xml » à l'entrée « POM » .
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 ».
Vous pouvez maintenant voir le terminal en ligne de l'instance de serveur virtuel EC2.
É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.
É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 « 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.
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.
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.
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 » .
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 « ansible-server ». Ensuite, redémarrez-le.
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 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 .
Vous devez également modifier le fichier /etc/ssh/sshd_config pour activer l'authentification par mot de passe.
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 « 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.
Cliquez sur le bouton « Installer sans redémarrage » . Attendez la fin du processus de 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 » .
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 « 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.
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 » .
É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 :
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 « AnsibleServer » dans l'entrée « Nom » dans la section « Serveur SSH » **.**
Ajoutez « target/*.jar » dans l'entrée « Fichiers sources » dans la section « Ensemble de transfert » **.**
Ajoutez « cible/ » dans l'entrée « Supprimer le préfixe » dans la section « Ensemble de transfert » **.**
Ajoutez « //opt/docker/ » dans l'entrée « Répertoire distant » dans la section « 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 « 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.
É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 :
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.
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
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.
É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}
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 :
Commencez par créer un nouveau fichier playbook Ansible. Utilisez simplement cette commande.
touch hello-app.yml
Ensuite, modifiez le nouveau fichier hello-app.yml . Ouvrez-le pour le modifier avec cette commande.
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.
É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 :
Accédez à « Tableau de bord »→ « CI_CD_Pipeline » → « Configurer » → « Actions post-build » → « Envoyer des artefacts de build via SSH » .
Ajoutez la commande « sudo -u ansible-admin ansible-playbook /opt/docker/hello-app.yml » dans l'entrée « Commande Exec » .
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.
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 ».
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 « kubernetes-server », puis redémarrez-le.
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 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.
Copiez-collez la commande curl .
Tout d'abord, exécutez cette commande pour télécharger awscli version 2.
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
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 à AWS → Documentation → AmazonEKS → Guidede l'utilisateur → Installation ou mise à jourde kubectl → Linux .
Ou cliquez simplement sur le lien .
Tout d’abord, exécutez cette commande pour télécharger kubectl.
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 "//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 .
Accédez au tableau de bordIAM → Rôles .
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 » .
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 » .
Tapez ensuite « Eksctl_Role » dans l’entrée « 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 « KuberbetesServer ». Cliquez ensuite sur « Actions » → « Sécurité » → « Modifier le rôle IAM ».
Choisissez « Eksctl_Role » , puis cliquez sur le bouton « Mettre à jour le rôle IAM » .
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 :
Modifiez la commande suivante avec vos informations spécifiques.
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 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 du cluster EKS sur la page Web AWS CloudFormation.
É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.
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.
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 eksctl , y compris les nœuds de travail, les composants réseau et d'autres ressources, vous pouvez utiliser la commande suivante.
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 .
Vous devez également modifier le fichier /etc/ssh/sshd_config pour activer l'authentification par mot de passe.
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 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 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}
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
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 hello-app.yml . Ouvrez-le pour le modifier avec cette commande.
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 ».
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
Zufar Sunagatov est un ingénieur logiciel senior expérimenté, passionné par la conception de systèmes logiciels modernes.
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 ( ).
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 : ).
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 : ).
Encadré pendant plus de 3 000 minutes et animé 60 sessions sur ADPlist, nourrissant les talents en herbe ( ).
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 : , ).