Post on 21-Jan-2018
Orchestrating Docker in Production
Maxime Rivals <maxime.rivals@d2-si.eu>
Programme
1. Rappel
2. Infrastructure immuable
3. Orchestrateurs de conteneurs
4. Contraintes à la production
Rappel
Recap Bootcamp
- Docker build (construire une nouvelle image)
- Docker push (pousser l’image sur un registry docker)
- Docker-compose up (Démarrer la nouvelle image )
- Déploiement sur d’un application sur Swarm & ECS
Ces trois étapes permettent de construire une nouvelle image à chaque mise à
jours, cette image reste inchangé tout au long du cycle de vie de cette version.
Infrastructure immuable
Maxime Rivals <maxime.rivals@d2-si.eu>
IntroductionÉviter des inconsistances de configuration
Configuration drift !!
Introduction
Modifications manuelles
Introduction
Échec partiel de mise à jour
Ansible Management
node
Component A
Component B
Component C
ssh
ssh
ssh
Introduction
Solutions - Simplifier les opérations
- Rendre les applications facilement scalables
- Rendre votre infrastructure facilement restaurable et reproductible
- Limiter les erreurs inattendus
- Plus besoin de raconter l’histoire de chaque composant
- Cloud reboot sans craintes
Introduction
Contraintes - Gestion d’images
- Sécurisation des images
- Demande plus de rigueure, plus de collaboration avec les équipes de développement
- Nécessite un un rebuild de l’image à chaque mise à jours
Introduction
Outils & automatisation
Introduction(Parallèle avec l’immutabilité)
Immuabilité avec les conteneurs
Orchestrateurs de conteneurs
Maxime Rivals <maxime.rivals@d2-si.eu>
L’orchestration
Qu’est-ce qu’un orchestrateur ?
L’orchestration
- Planifier (Scheduling) le placement des conteneurs.
- S'assurer du bon fonctionnement (self healing + scaling) des
conteneurs
- Gérer les mises à jours et le remplacement des conteneurs
Rôles dans le contexte des conteneurs
L’orchestration
Exemple de solutions disponibles
Kubernetes AWS Ecs Docker Swarm
L’orchestration
Kubernetes Ecs Swarm
Deployment Public clouds, Virtual infra, Physical Hardware Only available on AWS Public clouds, Virtual infra,
Physical Hardware
Rolling Update Support rolling update and recreate strategies
Support rolling update by minimum healthy percent
and maximum percent parameters
The swarm manager lets you control the delay
between service deployment to different set
of node
Autoscaling Application autoscaling Service autoscaling Manual
Fonctionnalités
L’orchestration
Kubernetes Ecs Swarm
Service discovery ETCD v3Use application load balancers or install a Consul cluster
Swarm manager assigns each service a unique DNS.
Swarm supports several discovery backends
HealthCheck Liveness and readiness
Load balancer health check
Service running state
Service running state
HEALTHCHECK functionnality can be embedded into docker image
Logging ELK addons or others Install ELK or other solution can be installed ELK stack can be installed
Fonctionnalités
L’orchestration
Kubernetes Ecs Swarm
High availability Supported in pod and masters nodes level
Cluster is fully managed by AWS
Tasks can be replicated among ec2 instances
Services replicated among swarm nodes
Odd number of manager is recommended
Networking Overlay networkVPCOverlay network (not built-in)
Overlay network
Performance Can handle 5000 nodes with up to 150,0000 pods
No stats available,but a 2015 blog by Werner Vogels, CTO - Amazon.com, that has some metrics on scaling v/s latency.
1000 nodes and up to30.000 containers with 1 swarm manager
Fonctionnalités
L’orchestration
Kubernetes Ecs Swarm
Key Concepts
PodsReplication controller
DeploymentService
Task definitionService
StackDocker compose
Fonctionnalités
Contraintes à la production
Maxime Rivals <maxime.rivals@d2-si.eu>
Contraintes à la production
Sources principales de contraintes
Proviennent essentiellement des éléments suivant :
● Immuabilité
● Orchestration
Contraintes à la production
Observabilité des containers
WebUI CLI
docker service lsID NAME MODE REPLICAS vpa4kuy119qv frontend replicated 1/1 xx3akdb6z3r9 backend replicated 1/1Ohf5wc147tqn proxy replicated 3/3
Contraintes à la production
Observabilité des containers
Monitoring Alertes
orchestateurrolling-update
Contraintes à la production
Déploiement continu
App v1.0
A AClient
Load Balancer
Rolling-update
orchestateurrolling-update
Contraintes à la production
Déploiement continu
App v1.0
A AClient
Load Balancer
Rolling-update
App v1.1
orchestateurrolling-update
Contraintes à la production
Déploiement continu
App v1.0
A AClient
Load Balancer
Rolling-update
App v1.1
A
orchestateurrolling-update
Contraintes à la production
Déploiement continu
App v1.0
A AClient
Load Balancer
Rolling-update
App v1.1
A
orchestateurrolling-update
Contraintes à la production
Déploiement continu
App v1.0
A AClient
Load Balancer
Rolling-update
App v1.1
A A
orchestateurrolling-update
Contraintes à la production
Déploiement continu
App v1.0
A AClient
Load Balancer
Rolling-update
App v1.1
A A
orchestateurrolling-update
Contraintes à la production
Déploiement continu
App v1.0
A AClient
Load Balancer
Rolling-update
App v1.1
A A
orchestateurrolling-update
Contraintes à la production
Déploiement continu
Client
Load Balancer
Rolling-update
App v1.1
A A
Contraintes à la production
Déploiement continu
Audit de sécuritéGestion des tags
Contraintes à la production
Gestion des logs
CLI Centralisée
Contraintes à la production
Gestion des logs
App v1.1
A
B
Indexeur
Outil de monitoring
forwarding parsing
Système centralisé
Contraintes à la production
Découverte de services
Pattern orienté micro-service et “server-side”
Contraintes à la production
Découverte de services
Permet de connaître dynamiquement :
● Quelles sont les applications disponibles
● Comment y accéder (IP et Port via requête DNS)
Contraintes à la production
Découverte de services
Consul linkerd envoy
Swarm Zookeeper
Contraintes à la production
Découverte de services
Enregistrement
App v1.1
A
B
KV StoreMiddleware enregistre ip:port DNSauto-configuration
- A.service.domain- B.service.domain- ...
Contraintes à la production
Découverte de services
Vérification de la disponibilité
App v1.1
A
B
KV StoreMiddleware enregistre état DNSauto-configuration
- A.service.domain- B.service.domain- ...
curl http://ip:port
Contraintes à la production
Découverte de services
Répartition de charges
App v1.1
A
A DNS
- A.service.domain (Round-Robin)- ...
http://my.app.domainClients
Contraintes à la production
Découverte de services
Fail-over
App v1.1
A
A DNS
- A.service.domain (Round-Robin)- ...
http://my.app.domainClients
Contraintes à la production
Découverte de services
Point important
● La découverte de service exploite des entrées DNS de type SRV○ Permet de réunir ip + port au sein d’une même entrée○ Tous les clients ne le gèrent pas (i.e nginx)
● Nécessite d’être géré en amont (i.e Traefik ou Kong)
Contraintes à la production
Sécurisation de l’environnement
Isolation du processusNe voit pas ceux de l’hôte ou d’autres conteneurs.
Isolation du réseauPas accès aux sockets ou interfaces réseau hôte.Possède ses propres interfaces.
Limitation des ressourcesContrôle possible de l’attribution CPU, mémoire et I/O disque.Ne peut excéder les limites du systèmes
Isolation du stockageN’a pas accès au système de fichier hôte.Possède son propre espace.
Linux kernel
Orchestrating Docker in Production
Demo
DemoApplication
Load Balancer
Kong(RDS)
Route 53
Tiad (RDS)
Consul server (EC2 cluster)
Kong API(ECS cluster)
log forwarding
TIAD (ECS cluster)
ElasticSearch
Orchestrating Docker in Production
Merci
Orchestrating Docker in Production
Q & A