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

Date de la dernière mise à jour : 22/01/2021

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 permettant d'effectuer un déploiement bleu/vert, assurez-vous que vous disposez des éléments suivants :

Résolution

Créer un rôle de service AWS Identity and Access Management (IAM)

Avant de pouvoir utiliser le type de déploiement bleu/vert pour AWS CodeDeploy avec Amazon ECS, vous devez accorder les autorisations de service CodeDeploy pour mettre à jour votre service Amazon ECS service en votre nom.

1.    Ouvrez la console IAM.

2.    Dans le volet de navigation, choisissez Rôles.

3.    Sélectionnez “Create role” (Créer un rôle).

4.    Dans la section Select type of trusted entity (Sélectionner le type d'entité de confiance), choisissez AWS service (Service AWS), puis CodeDeploy.

5.    Dans la section Select your use case (Sélectionner votre cas d'utilisation), choisissez CodeDeploy – ECS, puis choisissez Next:Permissions (Suivant : Autorisations).

Remarque : Conservez la stratégie AWSCodeDeployforECS par défaut. Cette stratégie inclut les autorisations requises par CodeDeploy pour interagir correctement avec Amazon ECS et d'autres services.

6.    Sélectionnez Next: Tags (Suivant : balises).

7.    (Facultatif) Entrez un nom de balise, puis choisissez Next: Review (Suivant : Revoir).

8.    Pour Role name (Nom du rôle), entrez ecsCodeDeployRole.

9.    Sélectionnez Create role (Créer le rôle).

Créer un Application Load Balancer (équilibreur de charge d'application)

1.    Ouvrez la console Amazon EC2.

2.    Dans le panneau de navigation, dans la section Load Balancing (Équilibrage de charge), choisissez Load Balancers (Équilibreurs de charge).

3.    Choisissez Create Load Balancer (Créer un équilibreur de charge).

4.    Dans la section Select load balancer type (Sélectionner un type d'équilibreur de charge), pour Application Load Balancer (Équilibreur de charge d'application), choisissez Create (Créer).

5.    Pour Name (Nom), saisissez le nom de votre équilibreur de charge.

6.    Dans la section Availability Zones (Zones de disponibilité), sélectionnez le VPC où votre cluster Amazon ECS a été créé, puis sélectionnez deux sous-réseaux ayant accès à Internet. 

7.    Sélectionnez Next: Configure Security Settings (Étape suivante : Configurer les paramètres de sécurité).

8.    Sélectionnez Create a new security group (Créer un nouveau groupe de sécurité).

9.    Pour Security group name (Nom du groupe de sécurité), saisissez Sample Security-group (Exemple de groupe de sécurité).

10.   Choisissez Add rule (Ajouter une règle).

11.    Pour Port Range (Plage de ports), saisissez 8080. Pour Source, entrez 0.0.0.0/0.

12.    Choisissez Next: Configure Routing (Étape suivante : Configurer le routage).

13.    Pour Target group (Groupe cible), entrez un nom pour votre groupe cible.

14.    Pour Target type (Type de cible), choisissez IP.

15.    Choisissez Next: Register Targets (Étape suivante : Enregistrer les cibles), puis enregistrez votre groupe cible et définissez votre adresse IP.

16.    Choisissez Next:Review (Suivant : Vérification).

17.    Choisissez Create (Créer).

Créer une définition de tâche

1.    Ouvrez la console Amazon ECS.

2.    Dans le volet de navigation, choisissez Task Definitions (Définitions de tâches).

3.    Choisissez Créer une nouvelle définition de tâche.

4.    Choisissez Fargate, puis sélectionnez Étape suivante.

5.   Configurez la définition de tâche en fonction de vos besoins, puis choisissez Create (Créer).

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

{
  "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 service

1.    Ouvrez la console Amazon ECS.

2.    Dans la section Amazon ECS du volet de navigation, sélectionnez Clusters, puis votre cluster.

3.    Sous l'onglet Services, choisissez Create (Créer) pour créer un service.

4.    Dans la section Configure service (Configurer le service), pour Launch type (Type de lancement), sélectionnez FARGATE.

5.    Dans Task Definition (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.    Dans Service name (Nom du service), entrez un nom pour votre service. Par exemple : Sample-Website (Exemple de site Web)

7.    Dans Number of tasks (Nombre de tâches), entrez le nombre de tâches que vous souhaitez exécuter.

8.    Dans la section Deployments (Déploiements), sélectionnez Blue/green deployment (powered by AWS CodeDeploy) (Déploiement bleu/vert (à technologie AWS CodeDeploy)).

9.    Pour Service role for CodeDeploy (Rôle de service pour CodeDeploy), choisissez ecsCodeDeployRole.

Remarque : Vous avez créé le rôle de service ecsCodeDeployRole plus tôt.

10.    Choisissez Next step (Étape suivante).

11.    Dans la section VPC and security groups (VPC et groupes de sécurité), choisissez votre VPC de cluster et vos sous-réseaux.

12.    Dans la section Load balancing (Équilibrage de charge), pour Load balancer type (Type d'équilibreur de charge), choisissez Application Load Balancer (Équilibreur de charge d'application).

13.    Pour Load balancer name (Nom de l'équilibreur de charge), sélectionnez l'équilibreur de charge que vous avez créé plus tôt.

14.    Dans la section Container to load balancer (Conteneur devant faire l'objet d'un équilibrage de charge), sélectionnez Add to load balancer (Ajouter à l'équilibreur de charge).

15.    Dans la section Container to load balance (Conteneur devant faire l'objet d'un équilibrage de charge), pour Production listener port (Port de l'écouteur de production), sélectionnez 80:HTTP.

16.    Activez la case Test listener (Tester l'écouteur).

17.    Pour Test listener port (Tester le port de l'écouteur), choisissez create new (créer un nouveau), puis entrez 8080 comme port de l'écouteur.

18.    Dans la section Additional configuration (Configuration supplémentaire), pour Target group 1 name (Nom du groupe cible 1), choisissez le groupe cible que vous avez créé lors de la création de l'équilibreur de charge.

19.    Pour Target group 2 name (Nom du groupe cible 2), créez un nouveau groupe cible dans la console Amazon ECS sous le nom sample-website-tg-2.

20.    Ignorez la page Set Auto Scaling (optional) (Définir Auto Scaling (facultatif)) et choisissez Next step (Étape suivante).

21.    Choisissez Create Service (Créer un service).

Vous pouvez désormais 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 Amazon ECS fonctionne

Après avoir créé le service Amazon ECS service bleu/vert, vous pouvez créer une nouvelle définition de tâche avec les modifications, puis mettre à jour votre service Amazon ECS service. Cela permet de créer un déploiement dans la console CodeDeploy.

1.    Ouvrez la console Amazon ECS.

2.    Dans le volet de navigation, choisissez Task Definitions (Définitions de tâches).

3.    Sélectionnez votre définition de tâche, puis choisissez Create new revision (Créer une nouvelle révision), puis choisissez Create (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 service.

5.    Sous l'onglet Services, sélectionnez votre service Amazon ECS service, puis choisissez Update (Mettre à jour).

6.    Dans la section Configure service (Configurer le service), pour Task Definition (Définition de tâche), choisissez la dernière révision que vous avez créée à l'étape 3.

7.    Choisissez Next step (Étape suivante) pour ignorer toutes les pages restantes de l'assistant, puis choisissez Update Service (Mettre à jour le service).

8.    Choisissez View Service (Afficher le service).

9.    Sous l'onglet Deployments (Déploiements), dans la colonne Deployment Id (ID de déploiement), choisissez l'ID de déploiement pour afficher votre déploiement CodeDeploy.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?