orchestrating docker in production - tiad camp docker

47
Orchestrating Docker in Production

Upload: the-incredible-automation-day

Post on 21-Jan-2018

811 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Orchestrating Docker in production - TIAD Camp Docker

Orchestrating Docker in Production

Maxime Rivals <[email protected]>

Page 2: Orchestrating Docker in production - TIAD Camp Docker

Programme

1. Rappel

2. Infrastructure immuable

3. Orchestrateurs de conteneurs

4. Contraintes à la production

Page 3: Orchestrating Docker in production - TIAD Camp Docker

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.

Page 4: Orchestrating Docker in production - TIAD Camp Docker

Infrastructure immuable

Maxime Rivals <[email protected]>

Page 5: Orchestrating Docker in production - TIAD Camp Docker

IntroductionÉviter des inconsistances de configuration

Configuration drift !!

Page 6: Orchestrating Docker in production - TIAD Camp Docker

Introduction

Modifications manuelles

Page 7: Orchestrating Docker in production - TIAD Camp Docker

Introduction

Échec partiel de mise à jour

Ansible Management

node

Component A

Component B

Component C

ssh

ssh

ssh

Page 8: Orchestrating Docker in production - TIAD Camp Docker

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

Page 9: Orchestrating Docker in production - TIAD Camp Docker

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

Page 10: Orchestrating Docker in production - TIAD Camp Docker

Introduction

Outils & automatisation

Page 11: Orchestrating Docker in production - TIAD Camp Docker

Introduction(Parallèle avec l’immutabilité)

Immuabilité avec les conteneurs

Page 12: Orchestrating Docker in production - TIAD Camp Docker

Orchestrateurs de conteneurs

Maxime Rivals <[email protected]>

Page 13: Orchestrating Docker in production - TIAD Camp Docker

L’orchestration

Qu’est-ce qu’un orchestrateur ?

Page 14: Orchestrating Docker in production - TIAD Camp Docker

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

Page 15: Orchestrating Docker in production - TIAD Camp Docker

L’orchestration

Exemple de solutions disponibles

Kubernetes AWS Ecs Docker Swarm

Page 16: Orchestrating Docker in production - TIAD Camp Docker

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

Page 17: Orchestrating Docker in production - TIAD Camp Docker

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

Page 18: Orchestrating Docker in production - TIAD Camp Docker

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

Page 19: Orchestrating Docker in production - TIAD Camp Docker

L’orchestration

Kubernetes Ecs Swarm

Key Concepts

PodsReplication controller

DeploymentService

Task definitionService

StackDocker compose

Fonctionnalités

Page 20: Orchestrating Docker in production - TIAD Camp Docker

Contraintes à la production

Maxime Rivals <[email protected]>

Page 21: Orchestrating Docker in production - TIAD Camp Docker

Contraintes à la production

Sources principales de contraintes

Proviennent essentiellement des éléments suivant :

● Immuabilité

● Orchestration

Page 22: Orchestrating Docker in production - TIAD Camp Docker

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

Page 23: Orchestrating Docker in production - TIAD Camp Docker

Contraintes à la production

Observabilité des containers

Monitoring Alertes

Page 24: Orchestrating Docker in production - TIAD Camp Docker

orchestateurrolling-update

Contraintes à la production

Déploiement continu

App v1.0

A AClient

Load Balancer

Rolling-update

Page 25: Orchestrating Docker in production - TIAD Camp Docker

orchestateurrolling-update

Contraintes à la production

Déploiement continu

App v1.0

A AClient

Load Balancer

Rolling-update

App v1.1

Page 26: Orchestrating Docker in production - TIAD Camp Docker

orchestateurrolling-update

Contraintes à la production

Déploiement continu

App v1.0

A AClient

Load Balancer

Rolling-update

App v1.1

A

Page 27: Orchestrating Docker in production - TIAD Camp Docker

orchestateurrolling-update

Contraintes à la production

Déploiement continu

App v1.0

A AClient

Load Balancer

Rolling-update

App v1.1

A

Page 28: Orchestrating Docker in production - TIAD Camp Docker

orchestateurrolling-update

Contraintes à la production

Déploiement continu

App v1.0

A AClient

Load Balancer

Rolling-update

App v1.1

A A

Page 29: Orchestrating Docker in production - TIAD Camp Docker

orchestateurrolling-update

Contraintes à la production

Déploiement continu

App v1.0

A AClient

Load Balancer

Rolling-update

App v1.1

A A

Page 30: Orchestrating Docker in production - TIAD Camp Docker

orchestateurrolling-update

Contraintes à la production

Déploiement continu

App v1.0

A AClient

Load Balancer

Rolling-update

App v1.1

A A

Page 31: Orchestrating Docker in production - TIAD Camp Docker

orchestateurrolling-update

Contraintes à la production

Déploiement continu

Client

Load Balancer

Rolling-update

App v1.1

A A

Page 32: Orchestrating Docker in production - TIAD Camp Docker

Contraintes à la production

Déploiement continu

Audit de sécuritéGestion des tags

Page 33: Orchestrating Docker in production - TIAD Camp Docker

Contraintes à la production

Gestion des logs

CLI Centralisée

Page 34: Orchestrating Docker in production - TIAD Camp Docker

Contraintes à la production

Gestion des logs

App v1.1

A

B

Indexeur

Outil de monitoring

forwarding parsing

Système centralisé

Page 35: Orchestrating Docker in production - TIAD Camp Docker

Contraintes à la production

Découverte de services

Pattern orienté micro-service et “server-side”

Page 36: Orchestrating Docker in production - TIAD Camp Docker

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)

Page 37: Orchestrating Docker in production - TIAD Camp Docker

Contraintes à la production

Découverte de services

Consul linkerd envoy

Swarm Zookeeper

Page 38: Orchestrating Docker in production - TIAD Camp Docker

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- ...

Page 39: Orchestrating Docker in production - TIAD Camp Docker

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

Page 40: Orchestrating Docker in production - TIAD Camp Docker

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

Page 41: Orchestrating Docker in production - TIAD Camp Docker

Contraintes à la production

Découverte de services

Fail-over

App v1.1

A

A DNS

- A.service.domain (Round-Robin)- ...

http://my.app.domainClients

Page 42: Orchestrating Docker in production - TIAD Camp Docker

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)

Page 43: Orchestrating Docker in production - TIAD Camp Docker

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

Page 44: Orchestrating Docker in production - TIAD Camp Docker

Orchestrating Docker in Production

Demo

Page 45: Orchestrating Docker in production - TIAD Camp Docker

DemoApplication

Load Balancer

Kong(RDS)

Route 53

Tiad (RDS)

Consul server (EC2 cluster)

Kong API(ECS cluster)

log forwarding

TIAD (ECS cluster)

ElasticSearch

Page 46: Orchestrating Docker in production - TIAD Camp Docker

Orchestrating Docker in Production

Merci

Page 47: Orchestrating Docker in production - TIAD Camp Docker

Orchestrating Docker in Production

Q & A