Orchestrating Docker in Production
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
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
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 v3
Use 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 network
VPC
Overlay 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 to
30.000 containers with 1
swarm manager
Fonctionnalités
L’orchestration
Kubernetes Ecs Swarm
Key Concepts
Pods
Replication controller
Deployment
Service
Task definition
Service
Stack
Docker compose
Fonctionnalités
Contraintes à la production
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 ls
ID NAME MODE REPLICAS
vpa4kuy119qv frontend replicated 1/1
xx3akdb6z3r9 backend replicated 1/1
Ohf5wc147tqn proxy replicated 3/3
Contraintes à la production
Observabilité des containers
Monitoring Alertes
orchestateur
rolling-update
Contraintes à la production
Déploiement continu
App v1.0
A A
Client
Load Balancer
Rolling-update
orchestateur
rolling-update
Contraintes à la production
Déploiement continu
App v1.0
A A
Client
Load Balancer
Rolling-update
App v1.1
orchestateur
rolling-update
Contraintes à la production
Déploiement continu
App v1.0
A A
Client
Load Balancer
Rolling-update
App v1.1
A
orchestateur
rolling-update
Contraintes à la production
Déploiement continu
App v1.0
A A
Client
Load Balancer
Rolling-update
App v1.1
A
orchestateur
rolling-update
Contraintes à la production
Déploiement continu
App v1.0
A A
Client
Load Balancer
Rolling-update
App v1.1
A A
orchestateur
rolling-update
Contraintes à la production
Déploiement continu
App v1.0
A A
Client
Load Balancer
Rolling-update
App v1.1
A A
orchestateur
rolling-update
Contraintes à la production
Déploiement continu
App v1.0
A A
Client
Load Balancer
Rolling-update
App v1.1
A A
orchestateur
rolling-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
DNS
auto-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
DNS
auto-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.domain
Clients
Contraintes à la production
Découverte de services
Fail-over
App v1.1
A
A DNS
- A.service.domain (Round-Robin)
- ...
http://my.app.domain
Clients
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 processus
Ne voit pas ceux de l’hôte ou
d’autres conteneurs.
Isolation du réseau
Pas accès aux sockets ou
interfaces réseau hôte.
Possède ses propres interfaces.
Limitation des ressources
Contrôle possible de l’attribution
CPU, mémoire et I/O disque.
Ne peut excéder les limites du
systèmes
Isolation du stockage
N’a pas accès au système de
fichier hôte.
Possède son propre espace.
Linux kernel
Orchestrating Docker in Production
Demo
Demo
Application
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

Orchestrating Docker in production - TIAD Camp Docker

  • 1.
  • 2.
    Programme 1. Rappel 2. Infrastructureimmuable 3. Orchestrateurs de conteneurs 4. Contraintes à la production
  • 3.
    Rappel Recap Bootcamp - Dockerbuild (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.
  • 4.
  • 5.
    Introduction Éviter des inconsistancesde configuration Configuration drift !!
  • 6.
  • 7.
    Introduction Échec partiel demise à jour Ansible Management node Component A Component B Component C ssh ssh ssh
  • 8.
    Introduction Solutions - Simplifier lesopé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
  • 9.
    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
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
    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
  • 15.
    L’orchestration Exemple de solutionsdisponibles Kubernetes AWS Ecs Docker Swarm
  • 16.
    L’orchestration Kubernetes Ecs Swarm Deployment Publicclouds, 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
  • 17.
    L’orchestration Kubernetes Ecs Swarm Servicediscovery ETCD v3 Use 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
  • 18.
    L’orchestration Kubernetes Ecs Swarm Highavailability 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 network VPC Overlay 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 to 30.000 containers with 1 swarm manager Fonctionnalités
  • 19.
    L’orchestration Kubernetes Ecs Swarm KeyConcepts Pods Replication controller Deployment Service Task definition Service Stack Docker compose Fonctionnalités
  • 20.
  • 21.
    Contraintes à laproduction Sources principales de contraintes Proviennent essentiellement des éléments suivant : ● Immuabilité ● Orchestration
  • 22.
    Contraintes à laproduction Observabilité des containers WebUI CLI docker service ls ID NAME MODE REPLICAS vpa4kuy119qv frontend replicated 1/1 xx3akdb6z3r9 backend replicated 1/1 Ohf5wc147tqn proxy replicated 3/3
  • 23.
    Contraintes à laproduction Observabilité des containers Monitoring Alertes
  • 24.
    orchestateur rolling-update Contraintes à laproduction Déploiement continu App v1.0 A A Client Load Balancer Rolling-update
  • 25.
    orchestateur rolling-update Contraintes à laproduction Déploiement continu App v1.0 A A Client Load Balancer Rolling-update App v1.1
  • 26.
    orchestateur rolling-update Contraintes à laproduction Déploiement continu App v1.0 A A Client Load Balancer Rolling-update App v1.1 A
  • 27.
    orchestateur rolling-update Contraintes à laproduction Déploiement continu App v1.0 A A Client Load Balancer Rolling-update App v1.1 A
  • 28.
    orchestateur rolling-update Contraintes à laproduction Déploiement continu App v1.0 A A Client Load Balancer Rolling-update App v1.1 A A
  • 29.
    orchestateur rolling-update Contraintes à laproduction Déploiement continu App v1.0 A A Client Load Balancer Rolling-update App v1.1 A A
  • 30.
    orchestateur rolling-update Contraintes à laproduction Déploiement continu App v1.0 A A Client Load Balancer Rolling-update App v1.1 A A
  • 31.
    orchestateur rolling-update Contraintes à laproduction Déploiement continu Client Load Balancer Rolling-update App v1.1 A A
  • 32.
    Contraintes à laproduction Déploiement continu Audit de sécuritéGestion des tags
  • 33.
    Contraintes à laproduction Gestion des logs CLI Centralisée
  • 34.
    Contraintes à laproduction Gestion des logs App v1.1 A B Indexeur Outil de monitoring forwarding parsing Système centralisé
  • 35.
    Contraintes à laproduction Découverte de services Pattern orienté micro-service et “server-side”
  • 36.
    Contraintes à laproduction 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)
  • 37.
    Contraintes à laproduction Découverte de services Consul linkerd envoy Swarm Zookeeper
  • 38.
    Contraintes à laproduction Découverte de services Enregistrement App v1.1 A B KV StoreMiddleware enregistre ip:port DNS auto-configuration - A.service.domain - B.service.domain - ...
  • 39.
    Contraintes à laproduction Découverte de services Vérification de la disponibilité App v1.1 A B KV StoreMiddleware enregistre état DNS auto-configuration - A.service.domain - B.service.domain - ... curl http://ip:port
  • 40.
    Contraintes à laproduction Découverte de services Répartition de charges App v1.1 A A DNS - A.service.domain (Round-Robin) - ... http://my.app.domain Clients
  • 41.
    Contraintes à laproduction Découverte de services Fail-over App v1.1 A A DNS - A.service.domain (Round-Robin) - ... http://my.app.domain Clients
  • 42.
    Contraintes à laproduction 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)
  • 43.
    Contraintes à laproduction Sécurisation de l’environnement Isolation du processus Ne voit pas ceux de l’hôte ou d’autres conteneurs. Isolation du réseau Pas accès aux sockets ou interfaces réseau hôte. Possède ses propres interfaces. Limitation des ressources Contrôle possible de l’attribution CPU, mémoire et I/O disque. Ne peut excéder les limites du systèmes Isolation du stockage N’a pas accès au système de fichier hôte. Possède son propre espace. Linux kernel
  • 44.
    Orchestrating Docker inProduction Demo
  • 45.
    Demo Application Load Balancer Kong (RDS) Route 53 Tiad (RDS) Consulserver (EC2 cluster) Kong API (ECS cluster) log forwarding TIAD (ECS cluster) ElasticSearch
  • 46.
    Orchestrating Docker inProduction Merci
  • 47.
    Orchestrating Docker inProduction Q & A