Passer au contenu

Comment effectuer des déploiements bleu/vert pour les services hébergés sur Amazon ECS ?

Lecture de 6 minute(s)
0

Je souhaite effectuer un déploiement bleu/vert pour les services hébergés sur Amazon Elastic Container Service (Amazon ECS).

Brève description

Avant de suivre les étapes pour effectuer un déploiement bleu/vert, assurez-vous que vous disposez des éléments suivants :

Résolution

Créer un rôle de service IAM

Avant de pouvoir déployer le type bleu/vert pour AWS CodeDeploy avec Amazon ECS, le service CodeDeploy doit être autorisé à mettre à jour votre service ECS en votre nom. Pour accorder ces autorisations, procédez comme suit :

  1. Ouvrez la console Gestion des identités et des accès AWS (AWS IAM).
  2. Dans le volet de navigation, sélectionnez Rôles.
  3. Choisissez Créer un rôle.
  4. Dans la section Sélectionner le type d'entité approuvée, choisissez Service AWS, puis CodeDeploy.
  5. Dans la section Sélectionner votre cas d'utilisation, choisissez CodeDeploy - ECS, puis Suivant.
    Remarque : Conservez la politique AWSCodeDeployRoleForECS par défaut. Cette politique inclut les autorisations dont CodeDeploy a besoin pour interagir correctement avec Amazon ECS et d'autres services.
  6. Sélectionnez Suivant.
  7. Pour Nom du rôle, saisissez ecsCodeDeployRole.
  8. (Facultatif) Ajouter des identifications
  9. Choisissez Créer un rôle.

Créer l’Application Load Balancer

Pour créer un Application Load Balancer, procédez comme suit :

  1. Ouvrez la console Amazon EC2.
  2. Dans le volet de navigation, dans la section Équilibrage de charge, choisissez Équilibreurs de charge.
  3. Choisissez Créer un équilibreur de charge.
  4. Dans la section Sélectionner le type d'équilibreur de charge, pour Application Load Balancer, choisissez Créer.
  5. Pour Nom, saisissez le nom de votre équilibreur de charge.
  6. Dans la section Mappage réseau, sélectionnez le VPC sur lequel votre cluster Amazon ECS a été créé. Puis, sélectionnez deux sous-réseaux ayant accès à Internet.
  7. Dans la section Groupes de sécurité, sélectionnez le lien hypertexte « Créer un nouveau groupe de sécurité ».
  8. Pour Nom du groupe de sécurité, saisissez Sample Security-group.
  9. Sélectionnez Ajouter une règle.
  10. Pour Plage de ports, saisissez 8080. Pour Source, saisissez 0.0.0.0/0.
  11. Choisissez Créer un groupe de sécurité.
  12. Actualisez les groupes de sécurité sur la page d'affichage de l'équilibreur de charge, puis sélectionnez le groupe de sécurité nouvellement créé.
  13. Dans la section Écouteurs et routage, sélectionnez le lien hypertexte « Créer un groupe cible ».
  14. Pour Type de cible, sélectionnez Adresses IP.
  15. Pour Groupe cible, saisissez un nom pour votre groupe cible.
  16. Choisissez Suivant, puis enregistrez votre groupe cible et définissez votre adresse IP.
  17. Sélectionnez Créer un groupe cible.

Créer une définition de tâche

Procédez comme suit :

  1. Ouvrez la console Amazon ECS.
  2. Dans le volet de navigation, choisissez Définitions de tâche.
  3. Choisissez Créer une définition de tâche.
  4. Choisissez Fargate, puis Étape suivante.
  5. Configurez la définition de la tâche, puis choisissez Créer.

L'exemple de définition de tâche suivant utilise le type de lancement AWS Fargate et une image NGINX provenant de Docker Hub :

Remarque : Remplacez la valeur de account_ID par votre propre numéro de compte dans cet exemple et dans les suivants.

{
  "executionRoleArn": "arn:aws:iam::account_ID:role/ecsTaskExecutionRole",
  "containerDefinitions": [
    {
      "name": "sample-website",
      "image": "nginx:latest",
      "essential": true,
      "portMappings": [
        {
          "hostPort": 80,
          "protocol": "tcp",
          "containerPort": 80
        }
      ]
    }
  ],
  "requiresCompatibilities": [
    "FARGATE"
  ],
  "networkMode": "awsvpc",
  "cpu": "256",
  "memory": "512",
  "family": "sample-website"
}

Créer un service Amazon ECS

Procédez comme suit :

  1. Ouvrez la console Amazon ECS.
  2. Dans la section Amazon ECS du volet de navigation, choisissez Clusters, puis choisissez votre cluster.
  3. Dans l'onglet Services, choisissez Créer pour créer un service.
  4. Dans la section Environnement, sélectionnez Type de lancement, puis FARGATE.
  5. Pour Définition de tâche, sélectionnez la définition de tâche que vous avez créée dans la section précédente.
  6. Pour Nom du service, entrez un nom pour votre service. Exemple : Sample-Website.
  7. Pour Nombre de tâches, entrez le nombre de tâches que votre service doit exécuter.
  8. Dans la section Options de déploiement, sélectionnez Déploiement bleu/vert (optimisé par AWS CodeDeploy).
  9. Pour Rôle de service pour CodeDeploy, choisissez le rôle de service ecsCodeDeployRole que vous avez créé précédemment.
  10. Dans la section Mise en réseau, choisissez votre VPC de cluster et vos sous-réseaux ainsi que le groupe de sécurité que vous avez créé précédemment.
  11. Dans la section Équilibrage de charge, pour le type d’Équilibreur de charge, choisissez Application Load Balancer.
  12. Pour Nom de l'équilibreur de charge, sélectionnez l'équilibreur de charge que vous avez créé précédemment.
  13. Dans la section Écouteurs, pour Port de l'écouteur de production, sélectionnez 80:HTTP.
  14. Cochez la case Ajouter un écouteur de test.
  15. Pour Port de l’écouteur de test, choisissez Créer un nouveau port, puis saisissez 8080 comme port d’écouteur.
  16. Dans la section Groupes cibles, pour Nom du groupe cible 1, choisissez le groupe cible que vous avez créé lors de la création de l'équilibreur de charge.
  17. Pour Nom du groupe cible 2, créez un nouveau groupe cible dans la console Amazon ECS avec le nom sample-website-tg-2.
  18. Sélectionnez Créer.

Vous pouvez maintenant voir le nouveau service que vous avez créé avec une tâche en cours d'exécution.

Vérifier que le déploiement bleu/vert d'Amazon ECS fonctionne correctement

Après avoir créé le service Amazon ECS bleu/vert, créez une nouvelle révision de définition de tâche avec les modifications, puis mettez à jour votre service Amazon ECS. Cette action crée un déploiement dans la console CodeDeploy.

Procédez comme suit pour vérifier que votre déploiement fonctionne :

  1. Ouvrez la console Amazon ECS.

  2. Dans le volet de navigation, sélectionnez Définitions de tâche.

  3. Sélectionnez votre définition de tâche, choisissez Créer une nouvelle révision, puis Créer.
    Remarque : Dans l'exemple suivant, la propriété image est mise à jour pour utiliser httpd:2.4.

    {
      "executionRoleArn": "arn:aws:iam::account_ID:role/ecsTaskExecutionRole",
      "containerDefinitions": [
        {
          "name": "sample-website",
          "image": "httpd:2.4",
          "essential": true,
          "portMappings": [
            {
              "hostPort": 80,
              "protocol": "tcp",
              "containerPort": 80
            }
          ]
        }
      ],
      "requiresCompatibilities": [
        "FARGATE"
      ],
      "networkMode": "awsvpc",
      "cpu": "256",
      "memory": "512",
      "family": "sample-website"
    }
  4. Dans le volet de navigation, choisissez Clusters, puis choisissez le cluster sur lequel vous avez déployé votre service Amazon ECS.

  5. Dans l'onglet Services, sélectionnez votre service Amazon ECS, puis choisissez Mettre à jour.

  6. Dans la section Configuration du déploiement, pour Définition de tâche, choisissez la dernière révision que vous avez créée à l'étape 3.

  7. Choisissez Mettre à jour.

  8. Dans l'onglet Déploiements, dans la colonne ID de déploiement, choisissez l'ID de déploiement pour afficher votre déploiement CodeDeploy.

AWS OFFICIELA mis à jour il y a 2 ans