DéveloppeurWeb.Com
    DéveloppeurWeb.Com
    • Agile Zone
    • AI Zone
    • Cloud Zone
    • Database Zone
    • DevOps Zone
    • Integration Zone
    • Web Dev Zone
    DéveloppeurWeb.Com
    Home»Cloud Zone»Comment déployer une application Spring Boot sur AWS Fargate
    Cloud Zone

    Comment déployer une application Spring Boot sur AWS Fargate

    octobre 20, 2021
    Comment déployer une application Spring Boot sur AWS Fargate
    Share
    Facebook Twitter Pinterest Reddit WhatsApp Email

    Dans ce blog, vous apprendrez à déployer une application Spring Boot Dockerized de base sur AWS Fargate. AWS Fargate est un environnement AWS sans serveur. Prendre plaisir!

    1. Introduction

    Dans un article précédent, vous avez appris à déployer une application Spring Boot Dockerized de base sur un cluster AWS ECS. Vous avez découvert les différents composants tels que le référentiel ECR Docker, les définitions de tâches, le cluster ECS lui-même et les services. Il est conseillé de lire ce message en premier lorsque ces composants sont nouveaux pour vous. Dans cet article, vous allez créer et déployer la même application Dockerized Spring Boot. Cette fois, vous le déployez sur AWS Fargate. AWS Fargate est identique à AWS ECS Cluster, mais cette fois vous n’aurez pas besoin de gérer vous-même les instances EC2 ce qui est un grand avantage ! Il est complètement sans serveur.

    Les sources utilisées dans ce blog sont disponibles sur GitHub.

    Au moment de la rédaction, une nouvelle interface utilisateur est en cours de développement. Pour la plupart des actions décrites dans cet article, le Nouvelle expérience ECS bascule a été activé.

    2. Créez l’application

    L’application Spring Boot est une application de base avec un point de terminaison Hello Rest qui renvoie un message de bienvenue comprenant l’hôte sur lequel l’application est en cours d’exécution. L’application est utilisée avant dans un post précédent. Le contrôleur est le suivant :

    @RestController
    public class HelloController {
     
        @GetMapping("/hello")
        public String hello() {
            String message = "Hello AWS!";
            try {
                InetAddress ip = InetAddress.getLocalHost();
                message += " From host: " + ip;
            } catch (UnknownHostException e) {
                e.printStackTrace();
            }
            return message;
        }
     
    }

    Un Dockerfile est disponible à la racine du référentiel et le dockerfile-maven-plugin est ajouté à la pom déposer.

    Exécutez la compilation afin de créer le fichier jar et l’image Docker correspondante.

    Vérifiez si l’image Docker est disponible dans votre référentiel Docker local.

    $ docker images
    REPOSITORY                                          TAG                 IMAGE ID            CREATED             SIZE
    mydeveloperplanet/myawsplanet                       0.0.1-SNAPSHOT      765984f7cfc2        24 seconds ago      666MB

    3. Télécharger l’image dans ECR

    Maintenant que vous avez créé l’image Docker, vous devez la télécharger dans ECR, le référentiel AWS Docker. Naviguez dans AWS jusqu’au service ECS et sélectionnez dans le menu de gauche le Dépôts section. La première chose à faire est de créer un référentiel en cliquant sur le bouton Créer un référentiel bouton.

    Donnez au référentiel un nom reconnaissable comme mydeveloperplanet/myawsplanet et cliquez sur le Créer un référentiel bouton.

    Afin de voir comment vous pouvez pousser l’image Docker vers le référentiel, cliquez sur le Afficher les commandes push qui est disponible dans la vue d’ensemble du référentiel.

    Exécutez l’étape 1, qui vous fournira des informations d’identification temporaires afin de pouvoir accéder au référentiel. Les <account ID> doit être remplacé par votre ID de compte AWS.

    $ aws ecr get-login-password --region eu-west-3 | docker login --username AWS --password-stdin <account ID>.dkr.ecr.eu-west-3.amazonaws.com

    Ignorez l’étape 2, la construction de l’image Docker est déjà exécutée au moyen de la construction Maven. A l’étape 3, ajustez la commande afin d’utiliser la version 0.0.1-SNAPSHOT à la place de latest pour identifier l’image Docker locale.

    $ docker tag mydeveloperplanet/myawsplanet:0.0.1-SNAPSHOT <account ID>.dkr.ecr.eu-west-3.amazonaws.com/mydeveloperplanet/myawsplanet:latest

    À l’étape 4, vous transférez l’image Docker locale vers le référentiel AWS Docker distant.

    $ docker push <account ID>.dkr.ecr.eu-west-3.amazonaws.com/mydeveloperplanet/myawsplanet:latest

    Une fois le téléchargement réussi, l’image Docker est visible dans le référentiel.

    4. Créer une définition de tâche

    Maintenant que l’image Docker est disponible dans ECR, la prochaine chose à faire est de créer une définition de tâche en créant le Créer une nouvelle définition de tâche bouton dans le Définitions des tâches rubrique (menu de gauche).

    À l’étape 1, choisissez Fargate et cliquez sur le L’étape suivante bouton.

    À l’étape 2, donnez à la définition de tâche le nom myawsfargateplanet. Sélectionner un Rôle d’exécution des tâches dans le Rôle IAM d’exécution de tâche section. Ce rôle est nécessaire pour extraire l’image Docker. Si le rôle n’existe pas encore, sélectionnez Créer un nouveau rôle dans la liste déroulante.

    Dans AWS ECS Cluster, il n’était pas obligatoire de spécifier la mémoire de la tâche et le CPU. En utilisant Fargate, c’est obligatoire. Régler 0,5 Go comme Mémoire de tâches et 0.25 vCPU comme Tâche CPU. Ce sont les tailles les plus basses disponibles et suffiront pour l’application Spring Boot.

    Clique le Ajouter un conteneur bouton. Donnez le nom au conteneur myawsplanet. Remplissez l’image à tirer. Il doit s’agir de l’URI de l’image Docker du référentiel ECR suivi de la balise. Définir un Limite souple de 256 et un Limite stricte de 512 pour le Limites de mémoire. La limite souple est une sorte de réservation de mémoire tandis que la limite stricte tuera le conteneur Docker lorsque la taille de la mémoire est dépassée. Dans le Mappages de ports, il suffit de définir le port sur lequel l’application Spring Boot s’exécute. Dans AWS ECS Cluster, il était nécessaire de définir un mappage de port entre le port de l’instance EC2 et le conteneur Docker. N’oubliez pas qu’il était nécessaire de définir le port d’instance EC2 sur 0 afin de pouvoir exécuter plusieurs conteneurs Docker sur 1 machine EC2. Toute cette configuration n’est pas nécessaire avec AWS Fargate car elle est sans serveur. Enfin, cliquez sur le Ajouter bouton afin d’ajouter le conteneur à la définition de la tâche.

    Le conteneur est ajouté au Définition de la tâche. Il ne vous reste plus qu’à finaliser l’étape 2 en cliquant sur le bouton Créer bouton en bas de la page.

    5. Créer un cluster

    Naviguez dans le menu de gauche jusqu’au Groupes rubrique et cliquez sur le Créer un cluster bouton.

    À l’étape 1, choisissez Réseautage uniquement et cliquez sur le L’étape suivante bouton.

    À l’étape 2, donnez au cluster le nom myawsfargateplanet et cochez la Créer un VPC boîte. Laissez les valeurs par défaut telles quelles et cliquez sur le Créer bouton afin de créer le cluster.Après quelques minutes, le cluster est créé. Lorsque vous accédez au service AWS CloudFormation, vous pouvez suivre la création des différentes ressources. AWS CloudFormation est un service d’infrastructure en tant que code qui est utilisé en arrière-plan pour créer le cluster AWS Fargate.

    6. Créer un ALB

    Avant de créer le service pour la définition de tâche, vous allez créer un ALB et un groupe de sécurité pour les conteneurs Docker. Vous en aurez besoin lors de la création du Service, mais c’est un peu plus facile lorsque vous les créez en premier. De cette façon, vous n’aurez qu’à les sélectionner lors de la création du Service.

    Accédez au service EC2 jusqu’au Équilibrage de charge EC2 rubrique et cliquez sur Équilibreurs de charge dans le menu de gauche. Clique le Créer un équilibreur de charge bouton.

    Vous avez besoin d’un équilibreur de charge d’application, par conséquent, cliquez sur le bouton Créer bouton dans cette section.

    À l’étape 1, vous donnez à l’ALB le nom MonFargateAlb et réglez le Port d’équilibrage de charge au port 8080. Le port 8080 sera le port utilisé en externe pour accéder au point de terminaison Rest. Cochez toutes les cases de sous-réseau dans le Zones de disponibilité rubrique et cliquez sur le Suivant : Configurer les paramètres de sécurité bouton.

    À l’étape 2, cliquez simplement sur le Suivant : Configurer les groupes de sécurité bouton.

    A l’étape 3, Créer un nouveau groupe de sécurité. Donnez-lui le nom FargateAlbSG et donnez-lui une description. Clique le Suivant : Configurer le routage bouton.

    À l’étape 4, créez un mannequin Groupe ciblé pour le port 8080 et cliquez sur le Suivant : Enregistrer les cibles bouton.

    À l’étape 5, cliquez simplement sur le Suivant : Révision bouton. Sur la page d’examen, tout peut être vérifié et enfin cliquer sur le Créer bouton.

    7. Créer un groupe de sécurité pour les conteneurs

    Les conteneurs Docker nécessitent un groupe de sécurité qui doit être sélectionné lors de la création du service. Accédez au service EC2 jusqu’au Sécurité Internet rubrique et cliquez sur Groupes de sécurité dans le menu de gauche. Clique le Créer un groupe de sécurité bouton.

    Entrez un nom Alb2FargateConteneurs, une description et ajoutez une règle entrante permettant Tout le trafic du groupe de sécurité ALB FargateAlbSG comme Source. Vous autorisez tout le trafic entre l’ALB et les conteneurs Docker avec cette configuration. Clique le Créer un groupe de sécurité bouton en bas de la page.

    8. Créer un service

    Il est temps de tout lier ensemble, créons donc le service dans le cluster AWS Fargate afin d’exécuter l’image Docker. Dans cette section, la vue classique sera utilisée. Au moment de la rédaction, le Nouvelle expérience ECS semble manquer de certaines fonctionnalités. Accédez au cluster et cliquez sur le bouton Créer bouton dans le Prestations de service languette.Choisir FARGATE comme Type de lancement. Choisir myawsfargateplanet comme Définition de la tâche, laissez la révision telle quelle, qui est essentiellement la dernière révision à utiliser. Choisir FargateService comme Nom du service et choisissez d’exécuter 4 Nombre de tâches. Cela créera 4 conteneurs Docker en cours d’exécution. Met le Pourcentage minimal en bonne santé à 0 et cliquez sur le L’étape suivante bouton en bas de la page.Choisissez le VPC par défaut et sélectionnez les trois Sous-réseaux. Clique le Éditer bouton à côté du Groupes de sécurité.

    Choisissez le groupe de sécurité créé précédemment Alb2FargateConteneurs et cliquez sur le sauvegarder bouton.Choisissez dans le L’équilibrage de charge rubrique pour Équilibreur de charge d’application et choisissez l’équilibreur de charge précédemment créé MonFargateAlb.

    Clique le Ajouter un équilibreur de charge bouton dans la section Conteneur à charger.

    Choisir 8080 : HTTP comme Port d’écoute de production, créez un nouveau groupe cible, modifiez le Modèle de chemin à /* avec Ordre d’évaluation 1, et choisissez /actionneur/ comme Chemin de vérification de l’état de santé. Clique le L’étape suivante bouton en bas de la page.

    Clique le L’étape suivante bouton à la Définir la mise à l’échelle automatique (facultatif) page et cliquez sur le Créer un service bouton en bas de la Revoir page.

    Après quelques minutes, vous verrez 4 tâches en cours d’exécution dans le Tâches onglet du cluster.Utilisez le nom DNS de l’ALB pour accéder à l’URL Hello depuis votre ordinateur local. Exécutez-le plusieurs fois et vous verrez que l’adresse IP renvoyée change, ce qui signifie en fait que vous exécutez les tâches les unes après les autres.

    $ curl http://MyFargateAlb-1074634719.eu-west-3.elb.amazonaws.com:8080/hello
    Hello AWS! From host: ip-172-31-31-222.eu-west-3.compute.internal/172.31.31.222
    $ curl http://MyFargateAlb-1074634719.eu-west-3.elb.amazonaws.com:8080/hello
    Hello AWS! From host: ip-172-31-40-233.eu-west-3.compute.internal/172.31.40.233
    $ curl http://MyFargateAlb-1074634719.eu-west-3.elb.amazonaws.com:8080/hello
    Hello AWS! From host: ip-172-31-27-15.eu-west-3.compute.internal/172.31.27.15
    $ curl http://MyFargateAlb-1074634719.eu-west-3.elb.amazonaws.com:8080/hello
    Hello AWS! From host: ip-172-31-12-90.eu-west-3.compute.internal/172.31.12.90

    Afin de terminer la configuration, vous pouvez supprimer la règle de groupe cible factice que vous avez créée lors de la configuration de l’ALB dans la section de l’écouteur ALB. Après cette suppression, vous pouvez également supprimer le groupe cible factice lui-même.

    9. Nettoyage

    Exécutez les étapes suivantes afin de supprimer toutes les ressources :

    • Accédez au cluster et au service. Clique le Mettre à jour et définissez le nombre de tâches sur 0 ;
    • Attendez que toutes les tâches soient supprimées (supprimez-les à la main lorsqu’elles ne sont pas supprimées automatiquement) et supprimez le Service ;
    • Supprimez le cluster, il n’est disponible au moment de la rédaction que dans la vue classique ;
    • Cliquez sur la définition de tâche, sélectionnez toutes les révisions et via le Actions menu, cliquez sur le Se désinscrire Objet;
    • Supprimer le référentiel ECR ;
    • Retirer l’ALB MonFargateAlb;
    • Supprimer le groupe de sécurité Alb2FargateConteneurs;
    • Supprimer les groupes cibles ;
    • Supprimer le groupe de sécurité FargateAlbSG
    • …

    Share. Facebook Twitter Pinterest LinkedIn WhatsApp Reddit Email
    Add A Comment

    Leave A Reply Cancel Reply

    Catégories

    • Politique de cookies
    • Politique de confidentialité
    • CONTACT
    • Politique du DMCA
    • CONDITIONS D’UTILISATION
    • Avertissement
    © 2023 DéveloppeurWeb.Com.

    Type above and press Enter to search. Press Esc to cancel.