Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio...
-
Upload
xebia-france -
Category
Technology
-
view
231 -
download
0
Transcript of Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Services (Rex studio...
Choisissez votre style avec Docker & Amazon Web ServicesAlexis Kinsella / Gérôme Egron
@ContainerDay16
Qu’est-ce que le studio ?
Usage du cloud au studio
#ContainerdayFR
Usage de Docker au studio
Docker pour :
#ContainerdayFR
Le développement
L’usine logicielle
L’infrastructure
Docker pour le développeur
Éviter les installations manuelles et laborieuses
#ContainerdayFR
Clusteriser simplement
Utiliser plusieurs versions d’un outil
POCer facilement !
Fournir des mocks de services développés par d’autres équipes
Mocks
#ContainerdayFR
Docker pour l’usine logicielle
#ContainerdayFR
Développeur
git push
Docker pour l’infrastructure
Le Mode Historique
#ContainerdayFR
Gestion directe des instances
Responsabilités du provisioning & du monitoring
Instances EC2
3 Solutions simples
#ContainerdayFR
Utiliser l’AMI Amazon Linux officielle 2016.03
Installer manuellement Docker
Utiliser Docker Machine
Pet vs Cattle
Le Mode Orchestré
Automatiser les déploiements
Uniformiser les déploiements
Optimiser l’usage des ressources
Répond aux Besoins modernes
Docker&
Orchestrateurs
Une solution ?
Distributions spécialisées
#ContainerdayFR
Les orchestrateurs
#ContainerdayFR
Setup de ces solutions à votre charge !
Problème
#ContainerdayFR
Elastic Beanstalk avec Docker
Elastic Container Service
2 alternatives
#ContainerdayFR
Elastic Beanstalk
#ContainerdayFR
Mono application
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
Mono & Multi container
2 modes
#ContainerdayFR
3 possibilités de déploiement :
● Dockerfile ● Dockerrun.aws.json● Un Bundle de déploiement
Single-Container-Docker
#ContainerdayFR
Authentification
Référence de l’image à déployer
Configuration complémentaire:
● Ports● Volumes● Logging
Dockerrun.aws.json
#ContainerdayFR
{ "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
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
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
La v2 supporte des instances multi-containers
Les images doivent être pré-construites
Dockerrun.aws.json v2
#ContainerdayFR
AMI optimisée pour ECS
Agent ECS pré-installé
Multi-container-Docker
#ContainerdayFR
Blue-Green Deployment
Multi Environment Management
Rolling Update
Easy Rollback
Pourquoi utiliser Elastic Beanstalk avec Docker ?
#ContainerdayFR
Un mot sur CloudFormation
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
Demo Time
Elastic Container Service
Gérer soi-même un cluster est une tâche complexe
Load-Balancing
Auto-Scaling
CloudWatch
Elastic Container Registry
Cloud Formation ...
Intégration avec les services AWS
#ContainerdayFR
Elastic Container Service
#ContainerdayFR
VirginieOregon
Californie
IrlandeFrankfortTokyoSingapourSydney
Elastic Container Registry
Intégration End-to-End
Stockage sécurisé des images
Accès fiables aux images
Elastic Container Registry
#ContainerdayFR
Elastic Container Registry
#ContainerdayFR
VirginieOregonIrlande
Elastic Container Service
Clusters, Task Definitions, Repositories
Elastic Container Service
#ContainerdayFR
Pas de Cluster / Orchestrateur à faire fonctionner
Contrôle & Monitoring via des API et la console
Scaling
Avantages
#ContainerdayFR
C’est avant tout un pool de resources
Clusters
#ContainerdayFR
Unités de travail
Regroupent des containers liés
Tournent sur des instances
Tasks
#ContainerdayFR
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
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
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
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
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
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
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
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
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
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
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
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
Cloud Hybride
Direct Connect
VPN
Virtual Private Cloud
Intégrer un DataCenter avec AWS
Conclusion
Une solution pour chaque besoin
#ContainerdayFR
EC2
Beanstalk
ECS
Questions
@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