68
Choisissez votre style avec Docker & Amazon Web Services Alexis Kinsella / Gérôme Egron @ContainerDay16

Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

Embed Size (px)

Citation preview

Page 1: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

Choisissez votre style avec Docker & Amazon Web ServicesAlexis Kinsella / Gérôme Egron

@ContainerDay16

Page 2: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

Qu’est-ce que le studio ?

Page 3: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

Usage du cloud au studio

Page 4: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

#ContainerdayFR

Page 5: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

Usage de Docker au studio

Page 6: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

Docker pour :

#ContainerdayFR

Le développement

L’usine logicielle

L’infrastructure

Page 7: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

Docker pour le développeur

Page 8: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

Éviter les installations manuelles et laborieuses

#ContainerdayFR

Clusteriser simplement

Utiliser plusieurs versions d’un outil

POCer facilement !

Page 9: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

Fournir des mocks de services développés par d’autres équipes

Mocks

#ContainerdayFR

Page 10: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

Docker pour l’usine logicielle

Page 11: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

#ContainerdayFR

Développeur

git push

Page 12: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

Docker pour l’infrastructure

Page 13: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

Le Mode Historique

Page 14: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

#ContainerdayFR

Gestion directe des instances

Responsabilités du provisioning & du monitoring

Instances EC2

Page 15: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

3 Solutions simples

#ContainerdayFR

Utiliser l’AMI Amazon Linux officielle 2016.03

Installer manuellement Docker

Utiliser Docker Machine

Page 16: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

Pet vs Cattle

Page 17: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

Le Mode Orchestré

Page 18: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

Automatiser les déploiements

Uniformiser les déploiements

Optimiser l’usage des ressources

Répond aux Besoins modernes

Page 19: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

Docker&

Orchestrateurs

Une solution ?

Page 20: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

Distributions spécialisées

#ContainerdayFR

Page 21: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

Les orchestrateurs

#ContainerdayFR

Page 22: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

Setup de ces solutions à votre charge !

Problème

#ContainerdayFR

Page 23: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

Elastic Beanstalk avec Docker

Elastic Container Service

2 alternatives

#ContainerdayFR

Page 24: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

Elastic Beanstalk

Page 25: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

#ContainerdayFR

Mono application

Page 26: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

Historiquement utilisé avec des stacks préconfigurées Node.js ou Java

Grand succès historique au studio

#ContainerdayFR

Utilisation de Jenkins et l’Elastic Beanstalk Command Line Interface (EB CLI) pour construire & déployer les livrables

Page 27: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

Mono & Multi container

2 modes

#ContainerdayFR

Page 28: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

3 possibilités de déploiement :

● Dockerfile ● Dockerrun.aws.json● Un Bundle de déploiement

Single-Container-Docker

#ContainerdayFR

Page 29: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

Authentification

Référence de l’image à déployer

Configuration complémentaire:

● Ports● Volumes● Logging

Dockerrun.aws.json

#ContainerdayFR

Page 30: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

{ "AWSEBDockerrunVersion": "1", "Image": { "Name": "janedoe/image", "Update": "true" }, "Ports": [ { "ContainerPort": "1234" } ], "Volumes": [ { "HostDirectory": "/var/app/mydb", "ContainerDirectory": "/etc/mysql" } ], "Logging": "/var/log/nginx"}

Dockerrun.aws.json

#ContainerdayFR

Page 31: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

Supporte le déploiement d’applications multi-container

Utilise Elastic Container Service

Se charge de la gestion du cluster ECS, des définitions de tâches et des exécutions

Multi-container-Docker

#ContainerdayFR

Page 32: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

app1.elasticbeanstalk.com:80

app2.elasticbeanstalk.com:80Instance 1 Instance 2

80

9000

Auto Scaling Group / ECS Cluster

Elastic Beanstalk Environment

Task 1-1 Task 1-2

Container 1 Container 2

Container 3

Container 1 Container 2

Container 3

Page 33: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

La v2 supporte des instances multi-containers

Les images doivent être pré-construites

Dockerrun.aws.json v2

#ContainerdayFR

Page 34: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

AMI optimisée pour ECS

Agent ECS pré-installé

Multi-container-Docker

#ContainerdayFR

Page 35: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

Blue-Green Deployment

Multi Environment Management

Rolling Update

Easy Rollback

Pourquoi utiliser Elastic Beanstalk avec Docker ?

#ContainerdayFR

Page 36: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

Un mot sur CloudFormation

Page 37: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

Fichiers de configuration au format JSON

Rendre répétable la création de vos infrastructures

Garder les définitions dans un gestionnaire de source

Donner la capacité de tester les déploiements

Pourquoi utiliser CloudFormation ?

#ContainerdayFR

Page 38: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

Demo Time

Page 39: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

Elastic Container Service

Page 40: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

Gérer soi-même un cluster est une tâche complexe

Page 41: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

Load-Balancing

Auto-Scaling

CloudWatch

Elastic Container Registry

Cloud Formation ...

Intégration avec les services AWS

#ContainerdayFR

Page 42: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

Elastic Container Service

#ContainerdayFR

VirginieOregon

Californie

IrlandeFrankfortTokyoSingapourSydney

Page 43: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

Elastic Container Registry

Page 44: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

Intégration End-to-End

Stockage sécurisé des images

Accès fiables aux images

Elastic Container Registry

#ContainerdayFR

Page 45: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

Elastic Container Registry

#ContainerdayFR

VirginieOregonIrlande

Page 46: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

Elastic Container Service

Page 47: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

Clusters, Task Definitions, Repositories

Elastic Container Service

#ContainerdayFR

Page 48: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

Pas de Cluster / Orchestrateur à faire fonctionner

Contrôle & Monitoring via des API et la console

Scaling

Avantages

#ContainerdayFR

Page 49: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

C’est avant tout un pool de resources

Clusters

#ContainerdayFR

Page 50: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

Unités de travail

Regroupent des containers liés

Tournent sur des instances

Tasks

#ContainerdayFR

Page 51: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

Adapté pour les tâches à durée de vie longue

Load balance le traffic entre les instances

Rétablit les instances défaillantes

Services

#ContainerdayFR

Page 52: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

Métriques enregistrées chaque minute pour une durée de 2 semaines

Métriques: CPUReservation, MemoryReservation, CPUUtilization, MemoryUtilization

Dimensions: ClusterName, ServiceName

Possibilité d’envoyer des métriques customisées

Métriques & Cloud Watch

#ContainerdayFR

Page 53: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

CloudFormation pour lier les services entre eux

Route53 avec une zone privée

Outils tiers de service discovery (Consul)

Overlay Networks (Weave)

Service Discovery

#ContainerdayFR

Page 54: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

Service Discovery avec Route53

#ContainerdayFR

TaskTask

TaskTask

TaskTask

TaskTask

Task

TaskTask

Task

Application router, e.g.

nginxRoute 53 private

zone, e.g. example.com

ECS Service

Internal ELB withCNAME, e.g.

api.example.com

Page 55: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

Scheduler de tâches ECS

Exécute les tâches une unique fois

Lancement de jobs batchés (Jusqu’à 10)

Permet de lancer les jobs en random (RunTask) ou placés (StartTask)

Scheduling - Jobs de type Batch

#ContainerdayFR

Page 56: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

Scheduler de services ECS

Gestion de la santé des tâches (Les relancent au besoin)

Scale Up & Scale Down

Availability Zone awareness

Scheduling - Jobs à durée de vie longue

#ContainerdayFR

Page 57: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

Support des Elastic Load Balancing pour les services

Permet d’associer un port de l’ELB avec un port d’un container

Si un healthcheck de LoadBalancer est en erreur, la tâche est killée puis redémarrée

Load Balancing - Jobs à durée de vie longue

#ContainerdayFR

Page 58: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

Lors de la mise à jour des tâches, il est possible de jouer avec les paramètres de minimumHealthyPercent et maximumPercent pour assurer des déploiements sans coupure

Rolling Update - Jobs à durée de vie longue

#ContainerdayFR

Page 59: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

Rolling Update - Jobs à durée de vie longue (min: 50%, max: 100%)

#ContainerdayFR

Instance 1 Instance 2 Instance 3 Instance 4Step 1

Task 2Task 1 Task 4Task 3

Instance 1 Instance 2 Instance 3 Instance 4Step 2

Task 2Task 1 Task 4Task 3

Instance 1 Instance 2 Instance 3 Instance 4Step 3

Task 4Task 3Task 2Task 1

Page 60: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

Rolling Update - Jobs à durée de vie longue (min: 100%, max: 200%)

Instance 1 Instance 2 Instance 3 Instance 4Step 1

Task 2Task 1 Task 4Task 3

Instance 5 Instance 6 Instance 7 Instance 8

Instance 1 Instance 2 Instance 3 Instance 4Step 2

Task 2Task 1 Task 4Task 3

Instance 5 Instance 6 Instance 7 Instance 8

Task 6Task 5 Task 8Task 7

Instance 1 Instance 2 Instance 3 Instance 4Step 3 Instance 5 Instance 6 Instance 7 Instance 8

Task 8Task 7Task 6Task 5

Intéressant si le nombre d’instances ne peut être réduit

Page 61: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

Blue-Green Deployments

Définir 2 services

Chaque service est associéà un ELB

Chaque service est associéà une même entrée Route53 avec une policy par poids(Primaire: 100%, Secondaire: 0%)

Switcher les poids pour changer le routage DNS d’un service à l’autre

TaskTask

Task

TaskTask

Task

Route 53 record set

with weighted routing policy

Page 62: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

Gestion des logs avec ELK

#ContainerdayFR

Elastic Search Cluster

Container 1 Container 2

Container 3

ECS Instance

Container 4

Container 1 Container 2

Container 3

ECS Instance

Container 4

Gelf

Plugin Logstash

Page 63: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

Cloud Hybride

Page 64: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

Direct Connect

VPN

Virtual Private Cloud

Intégrer un DataCenter avec AWS

Page 65: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

Conclusion

Page 66: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

Une solution pour chaque besoin

#ContainerdayFR

EC2

Beanstalk

ECS

Page 67: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

Questions

Page 68: Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio Xebia)

@ContainerDay16

Une belle journée s’achève !

Nous remercions tous les participants, speakers et sponsors.Retrouvez prochainement toutes les vidéos sur xebia.tv