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

Preview:

Citation preview

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

Recommended