SlideShare une entreprise Scribd logo
1  sur  42
Télécharger pour lire hors ligne
Micro-services
sous Docker et
Kubernetes
Présentation:
Sébastien Coutu
Qui suis-je?
● Tech lead DevOps chez Mnubo, startup IoT
● 5 ans dans le monde Big Data
● 19 ans d’expérience en opérations.
● Amateur d’escalade et d’ébénisterie.
Qu’est-ce que mnubo offre?
● Une plateforme SaaS pour l’analytique de données d’objets connectés
● “Data”, “Analytics”, “Intelligence” as a service
● Marchés visés:
○ Produits consommateurs
○ Produits commerciaux
○ Agriculture
○ Industriel léger
● Des applications quasi-monolithiques
● Des performances très variables
● Des déploiements à tous les quelques mois: les nouvelles fonctionnalités
se faisaient attendre trop longtemps.
● Des déploiements qui prennent entre 6 à 12 heures à exécuter.
L’architecture des services de mnubo il y a 2 ans.
● Identifier où le temps est perdu.
● Identifier les changements architecturaux requis pour changer la
situation.
● Identifier les technologies pouvant aider à changer la situation.
● Mettre en place les bons éléments humains pour pousser le changement.
Comment donner un coup de barre?
Pourquoi une infrastructure basée sur des micro-services?
● Afin d’éviter des blocs monolithiques d’applications
● Afin d’être capable de “scaler” indépendamment les différents
composants.
● Afin d’améliorer la vitesse de mise en production des fonctionnalités.
● Afin d’améliorer la vélocité générale du développement.
Premier composant de la solution: Docker
Cas d’utilisation typiques:
● Environnements avec micro-services
● Intégration continue
● Déploiement continu: déploiements automatisés
“Une plateforme ouverte pour applications distribuées pour développeurs et
administrateurs de systèmes.”
- Source
http://www.docker.com
Pourquoi des conteneurs?
● Packaging
○ Toutes les dépendances sont “bundlées” à l’intérieur du conteneur
○ Aucun conflit de versions possible
○ Diminue les “moving parts” lors de mises à jour.
● Simplification des serveurs
○ Seul requis au niveau des opérations est de fournir un kernel et
une version de docker compatible.
○ Les conteneurs sont isolés entre eux.
○ Il est possible de restreindre les ressources allouées aux
conteneurs.
Pourquoi des conteneurs?
● Simplification de l’automatisation
○ Conventions requises entre les opérations et le développement.
○ La même “image” est utilisée sur le laptop du développeur, en
intégration, en QA et sur le serveur de production.
● Réutilisation des couches identiques.
○ Chaque conteneur est bâti en utilisant des couches qui sont
réutilisables entre les images.
○ Espace disque utilisé est minimisé sur les serveurs.
○ Rapidité de téléchargement des couches différentes seulement.
Prochain composant de la solution: Kafka
Cas d’utilisation typiques:
● Messaging
● Agrégation de logs et de métriques
● Tracking d’activité web
● Stream processing
● Event sourcing
“Kafka est une plateforme de streaming distribuée”
- Source:http://kafka.apache.org
Prochain composant de la solution:
Persistance des données
Les technologies de base sont identifiées, ensuite?
● Migration d’un modèle semi-monolithique vers un modèle de
micro-services
● La multiplication des micro-services
● L’architecture d’un pipeline qui “scale”
● Révision complète des outils de build
● Révision complète des outils de déploiement
Rendre les micro-services immuables
● S’assurer que les configurations ne changent pas.
○ Définir des environnements au besoin
○ Maximiser l’utilisation de paramètres par défaut
○ Ne PAS utiliser de nom d’hôte dans les fichiers de configuration, toujours des alias.
● Éviter les différences entre les environnements.
○ Certaines ne peuvent être évitées: Paramètres RAM, nombre de réplicas, etc.
● Utiliser les mêmes conteneurs du laptop du développeur/Jenkins jusqu’à
la production.
Déployer et orchestrer les micro-services
● Nous désirons déployer les micro-services là où il y a des ressources
disponibles.
● Nous désirons maximiser l’utilisation des machines abritant les
micro-services.
● Nous désirons accéder dynamiquement et répartir la charge entre les
conteneurs d’une même application.
Prochain composant de la solution:
Déploiement et orchestration des conteneurs
Assembler les micro-services sous une même adresse
● En premier lieu: routage HTTP fait par un serveur Apache
○ Beaucoup de coupures de sessions lors de changement d’API.
○ Health-checking non adéquat
● En second lieu: routage HTTP fait par HAproxy
○ Scale beaucoup mieux mais aucune modification programmatique facile.
● Maintenant: Séparation de la couche d’encryption SSL et du routage HTTP
Prochain composant de la solution:
Routage d’API HTTP
Prochain composant de la solution:
Visibilité sur l’infrastructure
● Une plateforme basée sur plus de 20 micro-services.
● Des performances prévisibles.
● De multiples déploiements chaque jour sont possibles.
● Les “downtime” ne sont plus requis pour la majorité des déploiements.
● Plus de 80% du pipeline est automatisé.
L’architecture des services de mnubo aujourd’hui
● Jenkins
● Docker Registry
● SBT
● Gitlab
● Artifactory
Outils d’infrastructure
Crédits image
Deuxième Partie: Google Kubernetes
Crédits image
Qu’est-ce que Kubernetes (K8s)?
● Un système d’orchestration de conteneurs Docker.
● Il permet de placer dynamiquement les conteneurs là où les ressources
sont disponibles.
● Il comporte un système d’auto-découverte pour router les requêtes là où
les conteneurs sont démarrés.
Où trouver Kubernetes?
● La documentation et le lien vers les sources sont disponibles sur
http://kubernetes.io/
● Kubernetes est disponible en ligne chez Google avec le Google Container
Engine (GKE)
● Le projet fourni également des instructions pour l’installation locale ou
sur plusieurs fournisseurs “cloud”.
Principaux éléments de Kubernetes
● Master
● Worker node
● Compte de services
● Namespace
● Pod
Principaux éléments de Kubernetes (suite)
● Volume
● Label
● Service
● Replication Controller
● Secret
Architecture de K8s sous Docker (local)
● Déploiement simple
“tout-en-un” sur la
même machine.
● Permet de se
familiariser avec les
différents composants.
● Fonctionnalité complète
présente.
* Image tirée de la documentation de Kubernetes
Architecture de K8s sous Docker (multi-noeud)
● Les noeuds de travail
doivent avoir une
connectivité réseau
directe (flanneld) entre
les Pods.
● Les composants
peuvent être mis en
haute-disponibilité.
● Déploiement typique de
production.
* Image tirée de la documentation de Kubernetes
Comment configurer et interagir avec Kubernetes
● En utilisant l’API HTTP(s)
● À l’aide de l’utilitaire kubectl, utilitaire CLI se connectant à l’API HTTP.
● En utilisant un des modules Python:
○ kubernetes-py*
○ python-kubernetes-wrapper
○ pykube
○ python-k8sclient
● En utilisant des outils d’automatisation:
○ Salt
○ Puppet
○ Ansible
* Avertissement: Je suis l’auteur de cette librairie mise en ligne par mnubo.
Définition d’un objet
● La définition d’un objet permet à Kubernetes de comprendre ce que
l’usager désire accomplir.
● Elle peut être écrite en YAML ou en JSON. (YAML est préférable)
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
Création d’un Pod
● Créer un fichier avec la définition du Pod, ensuite:
● Vérifier que le Pod a bel et bien été créé:
$ kubectl create -f docs/user-guide/walkthrough/pod-nginx.yaml
$ kubectl get pod
● Pour effacer le Pod
$ kubectl delete pod nginx
● En supposant que l’IP du Pod est accessible tester l’accès au Pod
$ curl http://$(kubectl get pod nginx -o go-template={{.status.podIP}})
Persistance des données - Volumes
● Les volumes permettent de persister les données de Pod au travers de
redémarrage de conteneurs et même selon le volume, au travers de
redémarrage sur différents noeuds.
● Ils sont définis au niveau du Pod:
apiVersion: v1
kind: Pod
metadata:
name: redis
spec:
…
volumes:
- name: redis-persistent-storage
emptyDir: {}
Persistance des données - Volumes (Suite)
● Ils sont par la suite associés à un ou plusieurs conteneurs pour être
utilisés.
apiVersion: v1
kind: Pod
metadata:
name: redis
spec:
containers:
- name: redis
image: redis
ports:
- containerPort: 6389
volumeMounts:
- name: redis-persistent-storage
mountPath: /data/redis
volumes:
- name: redis-persistent-storage
emptyDir: {}
Grouper des Pod - Labels
● Pour sélectionner des Pod une fois créés, nous utilisons des “labels”:
● Les “labels” seront par la suite utilisés pour cibler des Pod:
apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
$ kubectl get pods -l app=nginx
Accéder des Pod via un Service
● Un service permettra
d’exposer un port réseau
d’un ou plusieurs Pod à
d’autres.
● Ils sont utilisés comme
système de découverte
automatisé.
● Ils utilisent des “labels”
comme sélecteurs pour
cibler un ou des Pod.
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
ports:
- port: 8000 # the port that this service should serve on
# the container on each pod to connect to, can be a name
# (e.g. 'www') or a number (e.g. 80)
targetPort: 80
protocol: TCP
# just like the selector in the replication controller,
# but this time it identifies the set of pods
# to load balance traffic to.
selector:
app: nginx
Cycle de vie d’un Service
● Créer un fichier avec la définition du service, ensuite:
● Vérifier que le service a bel et bien été créé:
$ kubectl create -f docs/user-guide/walkthrough/service.yaml
$ kubectl get service
● Pour effacer le service
$ kubectl delete service nginx-service
Répliquer des Pod - Replication Controller
● Un replication controller
permet de créer de multiples
Pod identiques.
● Ils permettent de recréer un
Pod sur un noeud différent
si un noeud disparaît.
● Ils utilisent les labels pour
retracer les Pod qu’ils ont
créé.
apiVersion: v1
kind: ReplicationController
metadata:
name: nginx-controller
spec:
replicas: 2
selector:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
Cycle de vie d’un Replication Controller
● Créer un fichier avec la définition du replication controller
● Utiliser l’utilitaire kubectl pour créer le replication controller:
● Vérifier que le replication controller a bel et bien été créé:
$ kubectl create -f docs/user-guide/walkthrough/replication-controller.yaml
$ kubectl get rc
● Pour effacer le replication controller
$ kubectl delete rc nginx-controller
● Vérifier que la quantité de réplicas est valide:
$ kubectl get pod -l app=nginx
Liens utiles
● Kubernetes-dashboard: Une interface web permettant de visualiser les
différents éléments de Kubernetes.
● Cluster DNS: Service permettant d’utiliser des noms de domaine pour
trouver un élément Kubernetes à la place d’une adresse IP.
● kubectl pour usagers Docker
● Accéder aux logs applicatifs
● Surveillance du cluster
● Exécuter des commandes dans un Pod
● Exemples de logiciels dans Kubernetes
Crédits image
Démonstration: minikube
Crédits image
Micro-services
sous Docker et
Kubernetes
Présentation:
Sébastien Coutu

Contenu connexe

Tendances

Google Cloud Composer
Google Cloud ComposerGoogle Cloud Composer
Google Cloud ComposerPierre Coste
 
Paris Container Day 2016 : Les nouveaux défis du déploiement (Xebia Labs)
Paris Container Day 2016 : Les nouveaux défis du déploiement (Xebia Labs)Paris Container Day 2016 : Les nouveaux défis du déploiement (Xebia Labs)
Paris Container Day 2016 : Les nouveaux défis du déploiement (Xebia Labs)Publicis Sapient Engineering
 
XebiCon'17 : Rex Akka dans une architecture microservice - Joachim Rousseau
XebiCon'17 : Rex Akka dans une architecture microservice - Joachim RousseauXebiCon'17 : Rex Akka dans une architecture microservice - Joachim Rousseau
XebiCon'17 : Rex Akka dans une architecture microservice - Joachim RousseauPublicis Sapient Engineering
 
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !Publicis Sapient Engineering
 
Paris Container Day 2016 : Conteneurisation de l’usine logicielle (Retour d'e...
Paris Container Day 2016 : Conteneurisation de l’usine logicielle (Retour d'e...Paris Container Day 2016 : Conteneurisation de l’usine logicielle (Retour d'e...
Paris Container Day 2016 : Conteneurisation de l’usine logicielle (Retour d'e...Publicis Sapient Engineering
 
XebiCon'17 : Serverless is the new back - Jérémy Pinsolle et Gérôme Egron
XebiCon'17 : Serverless is the new back - Jérémy Pinsolle et Gérôme EgronXebiCon'17 : Serverless is the new back - Jérémy Pinsolle et Gérôme Egron
XebiCon'17 : Serverless is the new back - Jérémy Pinsolle et Gérôme EgronPublicis Sapient Engineering
 
GAB 2015 - Nouveautes sur le stockage de donnees dans Azure
GAB 2015  - Nouveautes sur le stockage de donnees dans AzureGAB 2015  - Nouveautes sur le stockage de donnees dans Azure
GAB 2015 - Nouveautes sur le stockage de donnees dans AzureJean-Luc Boucho
 
Paris Container Day 2016 : De la construction au déploiement d’applications...
Paris Container Day 2016 :  De la construction au déploiement d’applications...Paris Container Day 2016 :  De la construction au déploiement d’applications...
Paris Container Day 2016 : De la construction au déploiement d’applications...Publicis Sapient Engineering
 
REX sur l'outilage Continuous Delivery
REX sur l'outilage Continuous DeliveryREX sur l'outilage Continuous Delivery
REX sur l'outilage Continuous DeliveryDamien Goldenberg
 
Administration et supervision depuis le Cloud avec Azure Logs Analytics
Administration et supervision depuis le Cloud avec Azure Logs AnalyticsAdministration et supervision depuis le Cloud avec Azure Logs Analytics
Administration et supervision depuis le Cloud avec Azure Logs AnalyticsMicrosoft
 
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...Microsoft
 
Meetup Docker Lyon janvier 2018 - Docker 101
Meetup Docker Lyon janvier 2018 - Docker 101Meetup Docker Lyon janvier 2018 - Docker 101
Meetup Docker Lyon janvier 2018 - Docker 101Emmanuel CARRE
 
Introduction à Cassandra
Introduction à CassandraIntroduction à Cassandra
Introduction à CassandraVMware Tanzu
 
Consolidez vos journaux et vos métriques avec Elastic Beats
Consolidez vos journaux et vos métriques avec Elastic BeatsConsolidez vos journaux et vos métriques avec Elastic Beats
Consolidez vos journaux et vos métriques avec Elastic Beatsgcatt
 
OpenStack stratégie: fondation, acteurs et composants
OpenStack stratégie: fondation, acteurs et composantsOpenStack stratégie: fondation, acteurs et composants
OpenStack stratégie: fondation, acteurs et composantsJonathan Le Lous
 
OpenStack dans la pratique
OpenStack dans la pratiqueOpenStack dans la pratique
OpenStack dans la pratiqueOsones
 
OpenStack - open source au service du Cloud
OpenStack - open source au service du CloudOpenStack - open source au service du Cloud
OpenStack - open source au service du CloudLINAGORA
 

Tendances (20)

Google Cloud Composer
Google Cloud ComposerGoogle Cloud Composer
Google Cloud Composer
 
Paris Container Day 2016 : Les nouveaux défis du déploiement (Xebia Labs)
Paris Container Day 2016 : Les nouveaux défis du déploiement (Xebia Labs)Paris Container Day 2016 : Les nouveaux défis du déploiement (Xebia Labs)
Paris Container Day 2016 : Les nouveaux défis du déploiement (Xebia Labs)
 
XebiCon'17 : Rex Akka dans une architecture microservice - Joachim Rousseau
XebiCon'17 : Rex Akka dans une architecture microservice - Joachim RousseauXebiCon'17 : Rex Akka dans une architecture microservice - Joachim Rousseau
XebiCon'17 : Rex Akka dans une architecture microservice - Joachim Rousseau
 
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
 
Paris Container Day 2016 : Conteneurisation de l’usine logicielle (Retour d'e...
Paris Container Day 2016 : Conteneurisation de l’usine logicielle (Retour d'e...Paris Container Day 2016 : Conteneurisation de l’usine logicielle (Retour d'e...
Paris Container Day 2016 : Conteneurisation de l’usine logicielle (Retour d'e...
 
XebiCon'17 : Serverless is the new back - Jérémy Pinsolle et Gérôme Egron
XebiCon'17 : Serverless is the new back - Jérémy Pinsolle et Gérôme EgronXebiCon'17 : Serverless is the new back - Jérémy Pinsolle et Gérôme Egron
XebiCon'17 : Serverless is the new back - Jérémy Pinsolle et Gérôme Egron
 
GAB 2015 - Nouveautes sur le stockage de donnees dans Azure
GAB 2015  - Nouveautes sur le stockage de donnees dans AzureGAB 2015  - Nouveautes sur le stockage de donnees dans Azure
GAB 2015 - Nouveautes sur le stockage de donnees dans Azure
 
Paris Container Day 2016 : De la construction au déploiement d’applications...
Paris Container Day 2016 :  De la construction au déploiement d’applications...Paris Container Day 2016 :  De la construction au déploiement d’applications...
Paris Container Day 2016 : De la construction au déploiement d’applications...
 
REX sur l'outilage Continuous Delivery
REX sur l'outilage Continuous DeliveryREX sur l'outilage Continuous Delivery
REX sur l'outilage Continuous Delivery
 
Administration et supervision depuis le Cloud avec Azure Logs Analytics
Administration et supervision depuis le Cloud avec Azure Logs AnalyticsAdministration et supervision depuis le Cloud avec Azure Logs Analytics
Administration et supervision depuis le Cloud avec Azure Logs Analytics
 
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
 
REX Devops Docker
REX Devops DockerREX Devops Docker
REX Devops Docker
 
Meetup Docker Lyon janvier 2018 - Docker 101
Meetup Docker Lyon janvier 2018 - Docker 101Meetup Docker Lyon janvier 2018 - Docker 101
Meetup Docker Lyon janvier 2018 - Docker 101
 
Introduction à Cassandra
Introduction à CassandraIntroduction à Cassandra
Introduction à Cassandra
 
Consolidez vos journaux et vos métriques avec Elastic Beats
Consolidez vos journaux et vos métriques avec Elastic BeatsConsolidez vos journaux et vos métriques avec Elastic Beats
Consolidez vos journaux et vos métriques avec Elastic Beats
 
Devoxx France - Où sont passés mes serveurs ?
Devoxx France - Où sont passés mes serveurs ?Devoxx France - Où sont passés mes serveurs ?
Devoxx France - Où sont passés mes serveurs ?
 
kubernetes, pourquoi et comment
kubernetes, pourquoi et commentkubernetes, pourquoi et comment
kubernetes, pourquoi et comment
 
OpenStack stratégie: fondation, acteurs et composants
OpenStack stratégie: fondation, acteurs et composantsOpenStack stratégie: fondation, acteurs et composants
OpenStack stratégie: fondation, acteurs et composants
 
OpenStack dans la pratique
OpenStack dans la pratiqueOpenStack dans la pratique
OpenStack dans la pratique
 
OpenStack - open source au service du Cloud
OpenStack - open source au service du CloudOpenStack - open source au service du Cloud
OpenStack - open source au service du Cloud
 

En vedette

Introduction à la sécurité dans ASP.NET Core
Introduction à la sécurité dans ASP.NET CoreIntroduction à la sécurité dans ASP.NET Core
Introduction à la sécurité dans ASP.NET CoreMSDEVMTL
 
Cathy Monier: Power Query et Power BI
Cathy Monier: Power Query et Power BICathy Monier: Power Query et Power BI
Cathy Monier: Power Query et Power BIMSDEVMTL
 
Le Microsoft Graph et le développement Office 365
Le Microsoft Graph et le développement Office 365Le Microsoft Graph et le développement Office 365
Le Microsoft Graph et le développement Office 365MSDEVMTL
 
Sophie Marchand: Cas power bi de a à z
Sophie Marchand: Cas power bi de a à zSophie Marchand: Cas power bi de a à z
Sophie Marchand: Cas power bi de a à zMSDEVMTL
 
Francis Paquet: Visualisations innovantes
Francis Paquet: Visualisations innovantesFrancis Paquet: Visualisations innovantes
Francis Paquet: Visualisations innovantesMSDEVMTL
 
Introduction à Application Insights
Introduction à Application InsightsIntroduction à Application Insights
Introduction à Application InsightsMSDEVMTL
 
.Net Core Fall update
.Net Core Fall update.Net Core Fall update
.Net Core Fall updateMSDEVMTL
 
Advanced analytics with R and SQL
Advanced analytics with R and SQLAdvanced analytics with R and SQL
Advanced analytics with R and SQLMSDEVMTL
 
Robert Luong: Analyse prédictive dans Excel
Robert Luong: Analyse prédictive dans ExcelRobert Luong: Analyse prédictive dans Excel
Robert Luong: Analyse prédictive dans ExcelMSDEVMTL
 
Guy Barrette: Afficher des données en temps réel dans PowerBI
Guy Barrette: Afficher des données en temps réel dans PowerBIGuy Barrette: Afficher des données en temps réel dans PowerBI
Guy Barrette: Afficher des données en temps réel dans PowerBIMSDEVMTL
 
Microsoft Modern Analytics
Microsoft Modern AnalyticsMicrosoft Modern Analytics
Microsoft Modern AnalyticsMSDEVMTL
 
Ssis 2016 RC3
Ssis 2016 RC3Ssis 2016 RC3
Ssis 2016 RC3MSDEVMTL
 
Groupe Montreal Modern Excel and Power BI 2016 2017
Groupe Montreal Modern Excel and Power BI 2016 2017Groupe Montreal Modern Excel and Power BI 2016 2017
Groupe Montreal Modern Excel and Power BI 2016 2017MSDEVMTL
 
How ddd, cqrs and event sourcing constitute the architecture of the future
How ddd, cqrs and event sourcing constitute the architecture of the futureHow ddd, cqrs and event sourcing constitute the architecture of the future
How ddd, cqrs and event sourcing constitute the architecture of the futureMSDEVMTL
 
Stephane Lapointe, Frank Boucher & Alexandre Brisebois: Les micro-services et...
Stephane Lapointe, Frank Boucher & Alexandre Brisebois: Les micro-services et...Stephane Lapointe, Frank Boucher & Alexandre Brisebois: Les micro-services et...
Stephane Lapointe, Frank Boucher & Alexandre Brisebois: Les micro-services et...MSDEVMTL
 
SQL Server 2016 novelties
SQL Server 2016 noveltiesSQL Server 2016 novelties
SQL Server 2016 noveltiesMSDEVMTL
 
Investigando a própria prática em uma Trajetória Hipotética de Aprendizagem n...
Investigando a própria prática em uma Trajetória Hipotética de Aprendizagem n...Investigando a própria prática em uma Trajetória Hipotética de Aprendizagem n...
Investigando a própria prática em uma Trajetória Hipotética de Aprendizagem n...Wendel Silva
 
SQL Server 2016 SSRS and BI
SQL Server 2016 SSRS and BISQL Server 2016 SSRS and BI
SQL Server 2016 SSRS and BIMSDEVMTL
 
Retour d’expérience de Sarenza sur la façon de piloter un projet Power BI
Retour d’expérience de Sarenza sur la façon de piloter un projet Power BIRetour d’expérience de Sarenza sur la façon de piloter un projet Power BI
Retour d’expérience de Sarenza sur la façon de piloter un projet Power BIMicrosoft Technet France
 
La sociedad colonial 2017, adobe acrobat, 14 carillas
La sociedad colonial 2017, adobe acrobat, 14 carillasLa sociedad colonial 2017, adobe acrobat, 14 carillas
La sociedad colonial 2017, adobe acrobat, 14 carillasLiceo Academia Iquique
 

En vedette (20)

Introduction à la sécurité dans ASP.NET Core
Introduction à la sécurité dans ASP.NET CoreIntroduction à la sécurité dans ASP.NET Core
Introduction à la sécurité dans ASP.NET Core
 
Cathy Monier: Power Query et Power BI
Cathy Monier: Power Query et Power BICathy Monier: Power Query et Power BI
Cathy Monier: Power Query et Power BI
 
Le Microsoft Graph et le développement Office 365
Le Microsoft Graph et le développement Office 365Le Microsoft Graph et le développement Office 365
Le Microsoft Graph et le développement Office 365
 
Sophie Marchand: Cas power bi de a à z
Sophie Marchand: Cas power bi de a à zSophie Marchand: Cas power bi de a à z
Sophie Marchand: Cas power bi de a à z
 
Francis Paquet: Visualisations innovantes
Francis Paquet: Visualisations innovantesFrancis Paquet: Visualisations innovantes
Francis Paquet: Visualisations innovantes
 
Introduction à Application Insights
Introduction à Application InsightsIntroduction à Application Insights
Introduction à Application Insights
 
.Net Core Fall update
.Net Core Fall update.Net Core Fall update
.Net Core Fall update
 
Advanced analytics with R and SQL
Advanced analytics with R and SQLAdvanced analytics with R and SQL
Advanced analytics with R and SQL
 
Robert Luong: Analyse prédictive dans Excel
Robert Luong: Analyse prédictive dans ExcelRobert Luong: Analyse prédictive dans Excel
Robert Luong: Analyse prédictive dans Excel
 
Guy Barrette: Afficher des données en temps réel dans PowerBI
Guy Barrette: Afficher des données en temps réel dans PowerBIGuy Barrette: Afficher des données en temps réel dans PowerBI
Guy Barrette: Afficher des données en temps réel dans PowerBI
 
Microsoft Modern Analytics
Microsoft Modern AnalyticsMicrosoft Modern Analytics
Microsoft Modern Analytics
 
Ssis 2016 RC3
Ssis 2016 RC3Ssis 2016 RC3
Ssis 2016 RC3
 
Groupe Montreal Modern Excel and Power BI 2016 2017
Groupe Montreal Modern Excel and Power BI 2016 2017Groupe Montreal Modern Excel and Power BI 2016 2017
Groupe Montreal Modern Excel and Power BI 2016 2017
 
How ddd, cqrs and event sourcing constitute the architecture of the future
How ddd, cqrs and event sourcing constitute the architecture of the futureHow ddd, cqrs and event sourcing constitute the architecture of the future
How ddd, cqrs and event sourcing constitute the architecture of the future
 
Stephane Lapointe, Frank Boucher & Alexandre Brisebois: Les micro-services et...
Stephane Lapointe, Frank Boucher & Alexandre Brisebois: Les micro-services et...Stephane Lapointe, Frank Boucher & Alexandre Brisebois: Les micro-services et...
Stephane Lapointe, Frank Boucher & Alexandre Brisebois: Les micro-services et...
 
SQL Server 2016 novelties
SQL Server 2016 noveltiesSQL Server 2016 novelties
SQL Server 2016 novelties
 
Investigando a própria prática em uma Trajetória Hipotética de Aprendizagem n...
Investigando a própria prática em uma Trajetória Hipotética de Aprendizagem n...Investigando a própria prática em uma Trajetória Hipotética de Aprendizagem n...
Investigando a própria prática em uma Trajetória Hipotética de Aprendizagem n...
 
SQL Server 2016 SSRS and BI
SQL Server 2016 SSRS and BISQL Server 2016 SSRS and BI
SQL Server 2016 SSRS and BI
 
Retour d’expérience de Sarenza sur la façon de piloter un projet Power BI
Retour d’expérience de Sarenza sur la façon de piloter un projet Power BIRetour d’expérience de Sarenza sur la façon de piloter un projet Power BI
Retour d’expérience de Sarenza sur la façon de piloter un projet Power BI
 
La sociedad colonial 2017, adobe acrobat, 14 carillas
La sociedad colonial 2017, adobe acrobat, 14 carillasLa sociedad colonial 2017, adobe acrobat, 14 carillas
La sociedad colonial 2017, adobe acrobat, 14 carillas
 

Similaire à Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure immutable

Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...
Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...
Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...sebastienmoreno
 
Docker, Pierre angulaire du continuous delivery ?
Docker, Pierre angulaire du continuous delivery ?Docker, Pierre angulaire du continuous delivery ?
Docker, Pierre angulaire du continuous delivery ?Adrien Blind
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfboulonvert
 
Kuberbetes 101: Unlocking containerisation’s full potential
Kuberbetes 101: Unlocking containerisation’s full potentialKuberbetes 101: Unlocking containerisation’s full potential
Kuberbetes 101: Unlocking containerisation’s full potentialOVHcloud
 
Tadx - Présentation Conteneurisation
Tadx -  Présentation ConteneurisationTadx -  Présentation Conteneurisation
Tadx - Présentation ConteneurisationTADx
 
Openshift 3 & Kubernetes
Openshift 3 & KubernetesOpenshift 3 & Kubernetes
Openshift 3 & KubernetesPerfect Memory
 
Plateformes et infrastructure infonuagique natif de ville de Montréall
Plateformes et infrastructure infonuagique natif de ville de MontréallPlateformes et infrastructure infonuagique natif de ville de Montréall
Plateformes et infrastructure infonuagique natif de ville de MontréallCloudOps2005
 
XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thie...
XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thie...XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thie...
XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thie...Publicis Sapient Engineering
 
L'évolution vers le (Dev)NoOps
L'évolution vers le (Dev)NoOpsL'évolution vers le (Dev)NoOps
L'évolution vers le (Dev)NoOpsGeorgeot Cédric
 
Saas Libre
Saas LibreSaas Libre
Saas Libregrolland
 
Déploiement d'applications pour Kubernetes
Déploiement d'applications pour KubernetesDéploiement d'applications pour Kubernetes
Déploiement d'applications pour KubernetesSmaïne KAHLOUCH
 
Créer une IA capable de reconnaître des fleurs (ou autres)
Créer une IA capable de reconnaître des fleurs (ou autres)Créer une IA capable de reconnaître des fleurs (ou autres)
Créer une IA capable de reconnaître des fleurs (ou autres)Olivier Eeckhoutte
 
Agile lille 2015 devops etapres
Agile lille 2015 devops etapresAgile lille 2015 devops etapres
Agile lille 2015 devops etapresLaurent Tardif
 
Meetup Google Cloud
Meetup Google CloudMeetup Google Cloud
Meetup Google CloudPierre Coste
 
Symfony et Sonata Project chez Canal+
Symfony et Sonata Project chez Canal+ Symfony et Sonata Project chez Canal+
Symfony et Sonata Project chez Canal+ ekino
 
Construire un data lake managé - GDG Paris - Juin 2019
Construire un data lake managé - GDG Paris - Juin 2019Construire un data lake managé - GDG Paris - Juin 2019
Construire un data lake managé - GDG Paris - Juin 2019Jean-Baptiste Claramonte
 

Similaire à Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure immutable (20)

Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...
Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...
Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...
 
Docker, Pierre angulaire du continuous delivery ?
Docker, Pierre angulaire du continuous delivery ?Docker, Pierre angulaire du continuous delivery ?
Docker, Pierre angulaire du continuous delivery ?
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdf
 
Kuberbetes 101: Unlocking containerisation’s full potential
Kuberbetes 101: Unlocking containerisation’s full potentialKuberbetes 101: Unlocking containerisation’s full potential
Kuberbetes 101: Unlocking containerisation’s full potential
 
12-Factor
12-Factor12-Factor
12-Factor
 
Tadx - Présentation Conteneurisation
Tadx -  Présentation ConteneurisationTadx -  Présentation Conteneurisation
Tadx - Présentation Conteneurisation
 
Infrastructure as code drupal
Infrastructure as code drupalInfrastructure as code drupal
Infrastructure as code drupal
 
Openshift 3 & Kubernetes
Openshift 3 & KubernetesOpenshift 3 & Kubernetes
Openshift 3 & Kubernetes
 
Plateformes et infrastructure infonuagique natif de ville de Montréall
Plateformes et infrastructure infonuagique natif de ville de MontréallPlateformes et infrastructure infonuagique natif de ville de Montréall
Plateformes et infrastructure infonuagique natif de ville de Montréall
 
XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thie...
XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thie...XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thie...
XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thie...
 
L'évolution vers le (Dev)NoOps
L'évolution vers le (Dev)NoOpsL'évolution vers le (Dev)NoOps
L'évolution vers le (Dev)NoOps
 
Saas Libre
Saas LibreSaas Libre
Saas Libre
 
Déploiement d'applications pour Kubernetes
Déploiement d'applications pour KubernetesDéploiement d'applications pour Kubernetes
Déploiement d'applications pour Kubernetes
 
Créer une IA capable de reconnaître des fleurs (ou autres)
Créer une IA capable de reconnaître des fleurs (ou autres)Créer une IA capable de reconnaître des fleurs (ou autres)
Créer une IA capable de reconnaître des fleurs (ou autres)
 
vNext
vNextvNext
vNext
 
Agile lille 2015 devops etapres
Agile lille 2015 devops etapresAgile lille 2015 devops etapres
Agile lille 2015 devops etapres
 
Meetup Google Cloud
Meetup Google CloudMeetup Google Cloud
Meetup Google Cloud
 
_JCVFr
_JCVFr_JCVFr
_JCVFr
 
Symfony et Sonata Project chez Canal+
Symfony et Sonata Project chez Canal+ Symfony et Sonata Project chez Canal+
Symfony et Sonata Project chez Canal+
 
Construire un data lake managé - GDG Paris - Juin 2019
Construire un data lake managé - GDG Paris - Juin 2019Construire un data lake managé - GDG Paris - Juin 2019
Construire un data lake managé - GDG Paris - Juin 2019
 

Plus de MSDEVMTL

Intro grpc.net
Intro  grpc.netIntro  grpc.net
Intro grpc.netMSDEVMTL
 
Grpc and asp.net partie 2
Grpc and asp.net partie 2Grpc and asp.net partie 2
Grpc and asp.net partie 2MSDEVMTL
 
Property based testing
Property based testingProperty based testing
Property based testingMSDEVMTL
 
Improve cloud visibility and cost in Microsoft Azure
Improve cloud visibility and cost in Microsoft AzureImprove cloud visibility and cost in Microsoft Azure
Improve cloud visibility and cost in Microsoft AzureMSDEVMTL
 
Return on Ignite 2019: Azure, .NET, A.I. & Data
Return on Ignite 2019: Azure, .NET, A.I. & DataReturn on Ignite 2019: Azure, .NET, A.I. & Data
Return on Ignite 2019: Azure, .NET, A.I. & DataMSDEVMTL
 
C sharp 8.0 new features
C sharp 8.0 new featuresC sharp 8.0 new features
C sharp 8.0 new featuresMSDEVMTL
 
Asp.net core 3
Asp.net core 3Asp.net core 3
Asp.net core 3MSDEVMTL
 
MSDEVMTL Informations 2019
MSDEVMTL Informations 2019MSDEVMTL Informations 2019
MSDEVMTL Informations 2019MSDEVMTL
 
Common features in webapi aspnetcore
Common features in webapi aspnetcoreCommon features in webapi aspnetcore
Common features in webapi aspnetcoreMSDEVMTL
 
Groupe Excel et Power BI - Rencontre du 25 septembre 2018
Groupe Excel et Power BI  - Rencontre du 25 septembre 2018Groupe Excel et Power BI  - Rencontre du 25 septembre 2018
Groupe Excel et Power BI - Rencontre du 25 septembre 2018MSDEVMTL
 
Api gateway
Api gatewayApi gateway
Api gatewayMSDEVMTL
 
Common features in webapi aspnetcore
Common features in webapi aspnetcoreCommon features in webapi aspnetcore
Common features in webapi aspnetcoreMSDEVMTL
 
Stephane Lapointe: Governance in Azure, keep control of your environments
Stephane Lapointe: Governance in Azure, keep control of your environmentsStephane Lapointe: Governance in Azure, keep control of your environments
Stephane Lapointe: Governance in Azure, keep control of your environmentsMSDEVMTL
 
Eric Routhier: Garder le contrôle sur vos coûts Azure
Eric Routhier: Garder le contrôle sur vos coûts AzureEric Routhier: Garder le contrôle sur vos coûts Azure
Eric Routhier: Garder le contrôle sur vos coûts AzureMSDEVMTL
 
Data science presentation
Data science presentationData science presentation
Data science presentationMSDEVMTL
 
Michel Ouellette + Gabriel Lainesse: Process Automation & Data Analytics at S...
Michel Ouellette + Gabriel Lainesse: Process Automation & Data Analytics at S...Michel Ouellette + Gabriel Lainesse: Process Automation & Data Analytics at S...
Michel Ouellette + Gabriel Lainesse: Process Automation & Data Analytics at S...MSDEVMTL
 
Open id connect, azure ad, angular 5, web api core
Open id connect, azure ad, angular 5, web api coreOpen id connect, azure ad, angular 5, web api core
Open id connect, azure ad, angular 5, web api coreMSDEVMTL
 
Yoann Clombe : Fail fast, iterate quickly with power bi and google analytics
Yoann Clombe : Fail fast, iterate quickly with power bi and google analyticsYoann Clombe : Fail fast, iterate quickly with power bi and google analytics
Yoann Clombe : Fail fast, iterate quickly with power bi and google analyticsMSDEVMTL
 
CAE: etude de cas - Rolling Average
CAE: etude de cas - Rolling AverageCAE: etude de cas - Rolling Average
CAE: etude de cas - Rolling AverageMSDEVMTL
 
CAE: etude de cas
CAE: etude de casCAE: etude de cas
CAE: etude de casMSDEVMTL
 

Plus de MSDEVMTL (20)

Intro grpc.net
Intro  grpc.netIntro  grpc.net
Intro grpc.net
 
Grpc and asp.net partie 2
Grpc and asp.net partie 2Grpc and asp.net partie 2
Grpc and asp.net partie 2
 
Property based testing
Property based testingProperty based testing
Property based testing
 
Improve cloud visibility and cost in Microsoft Azure
Improve cloud visibility and cost in Microsoft AzureImprove cloud visibility and cost in Microsoft Azure
Improve cloud visibility and cost in Microsoft Azure
 
Return on Ignite 2019: Azure, .NET, A.I. & Data
Return on Ignite 2019: Azure, .NET, A.I. & DataReturn on Ignite 2019: Azure, .NET, A.I. & Data
Return on Ignite 2019: Azure, .NET, A.I. & Data
 
C sharp 8.0 new features
C sharp 8.0 new featuresC sharp 8.0 new features
C sharp 8.0 new features
 
Asp.net core 3
Asp.net core 3Asp.net core 3
Asp.net core 3
 
MSDEVMTL Informations 2019
MSDEVMTL Informations 2019MSDEVMTL Informations 2019
MSDEVMTL Informations 2019
 
Common features in webapi aspnetcore
Common features in webapi aspnetcoreCommon features in webapi aspnetcore
Common features in webapi aspnetcore
 
Groupe Excel et Power BI - Rencontre du 25 septembre 2018
Groupe Excel et Power BI  - Rencontre du 25 septembre 2018Groupe Excel et Power BI  - Rencontre du 25 septembre 2018
Groupe Excel et Power BI - Rencontre du 25 septembre 2018
 
Api gateway
Api gatewayApi gateway
Api gateway
 
Common features in webapi aspnetcore
Common features in webapi aspnetcoreCommon features in webapi aspnetcore
Common features in webapi aspnetcore
 
Stephane Lapointe: Governance in Azure, keep control of your environments
Stephane Lapointe: Governance in Azure, keep control of your environmentsStephane Lapointe: Governance in Azure, keep control of your environments
Stephane Lapointe: Governance in Azure, keep control of your environments
 
Eric Routhier: Garder le contrôle sur vos coûts Azure
Eric Routhier: Garder le contrôle sur vos coûts AzureEric Routhier: Garder le contrôle sur vos coûts Azure
Eric Routhier: Garder le contrôle sur vos coûts Azure
 
Data science presentation
Data science presentationData science presentation
Data science presentation
 
Michel Ouellette + Gabriel Lainesse: Process Automation & Data Analytics at S...
Michel Ouellette + Gabriel Lainesse: Process Automation & Data Analytics at S...Michel Ouellette + Gabriel Lainesse: Process Automation & Data Analytics at S...
Michel Ouellette + Gabriel Lainesse: Process Automation & Data Analytics at S...
 
Open id connect, azure ad, angular 5, web api core
Open id connect, azure ad, angular 5, web api coreOpen id connect, azure ad, angular 5, web api core
Open id connect, azure ad, angular 5, web api core
 
Yoann Clombe : Fail fast, iterate quickly with power bi and google analytics
Yoann Clombe : Fail fast, iterate quickly with power bi and google analyticsYoann Clombe : Fail fast, iterate quickly with power bi and google analytics
Yoann Clombe : Fail fast, iterate quickly with power bi and google analytics
 
CAE: etude de cas - Rolling Average
CAE: etude de cas - Rolling AverageCAE: etude de cas - Rolling Average
CAE: etude de cas - Rolling Average
 
CAE: etude de cas
CAE: etude de casCAE: etude de cas
CAE: etude de cas
 

Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure immutable

  • 2. Qui suis-je? ● Tech lead DevOps chez Mnubo, startup IoT ● 5 ans dans le monde Big Data ● 19 ans d’expérience en opérations. ● Amateur d’escalade et d’ébénisterie.
  • 3. Qu’est-ce que mnubo offre? ● Une plateforme SaaS pour l’analytique de données d’objets connectés ● “Data”, “Analytics”, “Intelligence” as a service ● Marchés visés: ○ Produits consommateurs ○ Produits commerciaux ○ Agriculture ○ Industriel léger
  • 4. ● Des applications quasi-monolithiques ● Des performances très variables ● Des déploiements à tous les quelques mois: les nouvelles fonctionnalités se faisaient attendre trop longtemps. ● Des déploiements qui prennent entre 6 à 12 heures à exécuter. L’architecture des services de mnubo il y a 2 ans.
  • 5. ● Identifier où le temps est perdu. ● Identifier les changements architecturaux requis pour changer la situation. ● Identifier les technologies pouvant aider à changer la situation. ● Mettre en place les bons éléments humains pour pousser le changement. Comment donner un coup de barre?
  • 6. Pourquoi une infrastructure basée sur des micro-services? ● Afin d’éviter des blocs monolithiques d’applications ● Afin d’être capable de “scaler” indépendamment les différents composants. ● Afin d’améliorer la vitesse de mise en production des fonctionnalités. ● Afin d’améliorer la vélocité générale du développement.
  • 7. Premier composant de la solution: Docker Cas d’utilisation typiques: ● Environnements avec micro-services ● Intégration continue ● Déploiement continu: déploiements automatisés “Une plateforme ouverte pour applications distribuées pour développeurs et administrateurs de systèmes.” - Source http://www.docker.com
  • 8. Pourquoi des conteneurs? ● Packaging ○ Toutes les dépendances sont “bundlées” à l’intérieur du conteneur ○ Aucun conflit de versions possible ○ Diminue les “moving parts” lors de mises à jour. ● Simplification des serveurs ○ Seul requis au niveau des opérations est de fournir un kernel et une version de docker compatible. ○ Les conteneurs sont isolés entre eux. ○ Il est possible de restreindre les ressources allouées aux conteneurs.
  • 9. Pourquoi des conteneurs? ● Simplification de l’automatisation ○ Conventions requises entre les opérations et le développement. ○ La même “image” est utilisée sur le laptop du développeur, en intégration, en QA et sur le serveur de production. ● Réutilisation des couches identiques. ○ Chaque conteneur est bâti en utilisant des couches qui sont réutilisables entre les images. ○ Espace disque utilisé est minimisé sur les serveurs. ○ Rapidité de téléchargement des couches différentes seulement.
  • 10. Prochain composant de la solution: Kafka Cas d’utilisation typiques: ● Messaging ● Agrégation de logs et de métriques ● Tracking d’activité web ● Stream processing ● Event sourcing “Kafka est une plateforme de streaming distribuée” - Source:http://kafka.apache.org
  • 11. Prochain composant de la solution: Persistance des données
  • 12. Les technologies de base sont identifiées, ensuite? ● Migration d’un modèle semi-monolithique vers un modèle de micro-services ● La multiplication des micro-services ● L’architecture d’un pipeline qui “scale” ● Révision complète des outils de build ● Révision complète des outils de déploiement
  • 13. Rendre les micro-services immuables ● S’assurer que les configurations ne changent pas. ○ Définir des environnements au besoin ○ Maximiser l’utilisation de paramètres par défaut ○ Ne PAS utiliser de nom d’hôte dans les fichiers de configuration, toujours des alias. ● Éviter les différences entre les environnements. ○ Certaines ne peuvent être évitées: Paramètres RAM, nombre de réplicas, etc. ● Utiliser les mêmes conteneurs du laptop du développeur/Jenkins jusqu’à la production.
  • 14. Déployer et orchestrer les micro-services ● Nous désirons déployer les micro-services là où il y a des ressources disponibles. ● Nous désirons maximiser l’utilisation des machines abritant les micro-services. ● Nous désirons accéder dynamiquement et répartir la charge entre les conteneurs d’une même application.
  • 15. Prochain composant de la solution: Déploiement et orchestration des conteneurs
  • 16. Assembler les micro-services sous une même adresse ● En premier lieu: routage HTTP fait par un serveur Apache ○ Beaucoup de coupures de sessions lors de changement d’API. ○ Health-checking non adéquat ● En second lieu: routage HTTP fait par HAproxy ○ Scale beaucoup mieux mais aucune modification programmatique facile. ● Maintenant: Séparation de la couche d’encryption SSL et du routage HTTP
  • 17. Prochain composant de la solution: Routage d’API HTTP
  • 18. Prochain composant de la solution: Visibilité sur l’infrastructure
  • 19. ● Une plateforme basée sur plus de 20 micro-services. ● Des performances prévisibles. ● De multiples déploiements chaque jour sont possibles. ● Les “downtime” ne sont plus requis pour la majorité des déploiements. ● Plus de 80% du pipeline est automatisé. L’architecture des services de mnubo aujourd’hui
  • 20. ● Jenkins ● Docker Registry ● SBT ● Gitlab ● Artifactory Outils d’infrastructure
  • 22. Deuxième Partie: Google Kubernetes Crédits image
  • 23. Qu’est-ce que Kubernetes (K8s)? ● Un système d’orchestration de conteneurs Docker. ● Il permet de placer dynamiquement les conteneurs là où les ressources sont disponibles. ● Il comporte un système d’auto-découverte pour router les requêtes là où les conteneurs sont démarrés.
  • 24. Où trouver Kubernetes? ● La documentation et le lien vers les sources sont disponibles sur http://kubernetes.io/ ● Kubernetes est disponible en ligne chez Google avec le Google Container Engine (GKE) ● Le projet fourni également des instructions pour l’installation locale ou sur plusieurs fournisseurs “cloud”.
  • 25. Principaux éléments de Kubernetes ● Master ● Worker node ● Compte de services ● Namespace ● Pod
  • 26. Principaux éléments de Kubernetes (suite) ● Volume ● Label ● Service ● Replication Controller ● Secret
  • 27. Architecture de K8s sous Docker (local) ● Déploiement simple “tout-en-un” sur la même machine. ● Permet de se familiariser avec les différents composants. ● Fonctionnalité complète présente. * Image tirée de la documentation de Kubernetes
  • 28. Architecture de K8s sous Docker (multi-noeud) ● Les noeuds de travail doivent avoir une connectivité réseau directe (flanneld) entre les Pods. ● Les composants peuvent être mis en haute-disponibilité. ● Déploiement typique de production. * Image tirée de la documentation de Kubernetes
  • 29. Comment configurer et interagir avec Kubernetes ● En utilisant l’API HTTP(s) ● À l’aide de l’utilitaire kubectl, utilitaire CLI se connectant à l’API HTTP. ● En utilisant un des modules Python: ○ kubernetes-py* ○ python-kubernetes-wrapper ○ pykube ○ python-k8sclient ● En utilisant des outils d’automatisation: ○ Salt ○ Puppet ○ Ansible * Avertissement: Je suis l’auteur de cette librairie mise en ligne par mnubo.
  • 30. Définition d’un objet ● La définition d’un objet permet à Kubernetes de comprendre ce que l’usager désire accomplir. ● Elle peut être écrite en YAML ou en JSON. (YAML est préférable) apiVersion: v1 kind: Pod metadata: name: nginx spec: containers: - name: nginx image: nginx ports: - containerPort: 80
  • 31. Création d’un Pod ● Créer un fichier avec la définition du Pod, ensuite: ● Vérifier que le Pod a bel et bien été créé: $ kubectl create -f docs/user-guide/walkthrough/pod-nginx.yaml $ kubectl get pod ● Pour effacer le Pod $ kubectl delete pod nginx ● En supposant que l’IP du Pod est accessible tester l’accès au Pod $ curl http://$(kubectl get pod nginx -o go-template={{.status.podIP}})
  • 32. Persistance des données - Volumes ● Les volumes permettent de persister les données de Pod au travers de redémarrage de conteneurs et même selon le volume, au travers de redémarrage sur différents noeuds. ● Ils sont définis au niveau du Pod: apiVersion: v1 kind: Pod metadata: name: redis spec: … volumes: - name: redis-persistent-storage emptyDir: {}
  • 33. Persistance des données - Volumes (Suite) ● Ils sont par la suite associés à un ou plusieurs conteneurs pour être utilisés. apiVersion: v1 kind: Pod metadata: name: redis spec: containers: - name: redis image: redis ports: - containerPort: 6389 volumeMounts: - name: redis-persistent-storage mountPath: /data/redis volumes: - name: redis-persistent-storage emptyDir: {}
  • 34. Grouper des Pod - Labels ● Pour sélectionner des Pod une fois créés, nous utilisons des “labels”: ● Les “labels” seront par la suite utilisés pour cibler des Pod: apiVersion: v1 kind: Pod metadata: name: nginx labels: app: nginx spec: containers: - name: nginx image: nginx ports: - containerPort: 80 $ kubectl get pods -l app=nginx
  • 35. Accéder des Pod via un Service ● Un service permettra d’exposer un port réseau d’un ou plusieurs Pod à d’autres. ● Ils sont utilisés comme système de découverte automatisé. ● Ils utilisent des “labels” comme sélecteurs pour cibler un ou des Pod. apiVersion: v1 kind: Service metadata: name: nginx-service spec: ports: - port: 8000 # the port that this service should serve on # the container on each pod to connect to, can be a name # (e.g. 'www') or a number (e.g. 80) targetPort: 80 protocol: TCP # just like the selector in the replication controller, # but this time it identifies the set of pods # to load balance traffic to. selector: app: nginx
  • 36. Cycle de vie d’un Service ● Créer un fichier avec la définition du service, ensuite: ● Vérifier que le service a bel et bien été créé: $ kubectl create -f docs/user-guide/walkthrough/service.yaml $ kubectl get service ● Pour effacer le service $ kubectl delete service nginx-service
  • 37. Répliquer des Pod - Replication Controller ● Un replication controller permet de créer de multiples Pod identiques. ● Ils permettent de recréer un Pod sur un noeud différent si un noeud disparaît. ● Ils utilisent les labels pour retracer les Pod qu’ils ont créé. apiVersion: v1 kind: ReplicationController metadata: name: nginx-controller spec: replicas: 2 selector: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx ports: - containerPort: 80
  • 38. Cycle de vie d’un Replication Controller ● Créer un fichier avec la définition du replication controller ● Utiliser l’utilitaire kubectl pour créer le replication controller: ● Vérifier que le replication controller a bel et bien été créé: $ kubectl create -f docs/user-guide/walkthrough/replication-controller.yaml $ kubectl get rc ● Pour effacer le replication controller $ kubectl delete rc nginx-controller ● Vérifier que la quantité de réplicas est valide: $ kubectl get pod -l app=nginx
  • 39. Liens utiles ● Kubernetes-dashboard: Une interface web permettant de visualiser les différents éléments de Kubernetes. ● Cluster DNS: Service permettant d’utiliser des noms de domaine pour trouver un élément Kubernetes à la place d’une adresse IP. ● kubectl pour usagers Docker ● Accéder aux logs applicatifs ● Surveillance du cluster ● Exécuter des commandes dans un Pod ● Exemples de logiciels dans Kubernetes