orchestrating docker in production - tiad camp docker

Post on 21-Jan-2018

811 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related