Avec 3 autres MVP, nous avions réalisé une démonstration autour de Docker, ASP.NET Core et Raspberry PI 2 pendant la soirée du tech.days camp du 16/03 organisée par Microsoft. J'ai fait un retour d'expérience sur cette démo principalement sur le Continuous Delivery avec VSTS.
Vous pouvez reproduire la démo chez vous avec l'aide de notre repo Github https://github.com/punlimitlab/home.
Actionner ses processus qualité avec Visual Studio ALM
Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur Linux / Windows / Raspberry PI
1. Global Azure Bootcamp#GlobalAzure #MUGLyon #AZUGFR LYON - FRANCE
Cedric LEBLOND
Retour d'expérience Docker: Puissance et
simplicité de VSTS, déploiement sur
Linux / Windows / Raspberry PI
1
2. Global Azure Bootcamp#GlobalAzure #MUGLyon #AZUGFR LYON - FRANCE
GAB 2016 LYON ORAGANIZER
LOCAL SPONSORS
www.iot-world.fr
Prochaine édition
21 et 22 mars 2016 à Paris
2
3. Global Azure Bootcamp#GlobalAzure #MUGLyon #AZUGFR LYON - FRANCE
• Contexte et objectifs de la démo Docker / VSTS
• Les éléments mis en place
– Repo GitHub, VSTS, Docker Hub
– ASP.NET Core sur conteneurs Docker Linux, Windows, ARM
• Les technos de l’usine logicielle
– Raspberry PI
– ASP.NET, Docker
– VSTS Build, Release Management
– Azure Container Service
SOMMAIRE
3
4. Global Azure Bootcamp#GlobalAzure #MUGLyon #AZUGFR LYON - FRANCE
• Lancer un ASP.NET Core "PartsUnlimited" sur un
Raspberry PI 2 au sein d'un conteneur Docker Linux.
• Mise en place d’un pipeline de build et déploiement
avec VSTS
Contexte – Démo soirée Geek du 16 mars
4
5. Global Azure Bootcamp#GlobalAzure #MUGLyon #AZUGFR LYON - FRANCE
LES ÉLÉMENTS MIS EN PLACE
Repos GitHub, VSTS Team Project, Docker Hub
ASP.NET Core sur conteneurs Docker Linux, Windows,
Raspberry PI (ARM)
5
6. Global Azure Bootcamp#GlobalAzure #MUGLyon #AZUGFR LYON - FRANCE
L’usine logicielle de la démo
6
ASP.NET Core
Visual Studio
Docker
VSTS BUILD
Compiler, tester,
publier le site
Créer images ASP.NET
Déclencher
la build
Azure Container Service
Mesos / Marathon
Déployer les
conteneurs
Déclencher
le déploiement
Docker Hub
Tirer les images
(docker build)
Publier les images
(docker publish)
Machines Linux,
Windows, ARM
Créer images
(docker build)
GitHub
punlimitlab
Tirer les
sources
Publier les
changements
VSTS Release
Management
Déclencher
la release
Créer images du site
Démarrer le site
7. Global Azure Bootcamp#GlobalAzure #MUGLyon #AZUGFR LYON - FRANCE
LES TECHNOLOGIES DE L’USINE
LOGICIELLE
Mise en œuvre dans la démonstration
7
8. Global Azure Bootcamp#GlobalAzure #MUGLyon #AZUGFR LYON - FRANCE
• Ordinateur à <40€
• Linux
• Windows IOT
• Usage multiples
– Server
– Media center
– IOT
– …
Raspberry PI pour notre démo
8
9. Global Azure Bootcamp#GlobalAzure #MUGLyon #AZUGFR LYON - FRANCE
• ASP.NET 5.0 ASP.NET Core
• Cross-Platform
– Windows
– Linux
– Mac
– iOS
– Android
ASP.NET Core pour notre démo
9
10. Global Azure Bootcamp#GlobalAzure #MUGLyon #AZUGFR LYON - FRANCE
• Docker
– Construire des images de conteneurs (build)
– Pour les OS Linux (Debian), Windows (2016), Raspberry
(ARM)
– Exécuter les conteneurs (run)
• Docker Hub
– Partager les images
– Déployer vers des instances de production
Docker et Docker Hub pour notre démo
10
11. Global Azure Bootcamp#GlobalAzure #MUGLyon #AZUGFR LYON - FRANCE
Conteneurs vs. VM
• Machines virtuelles
– Chaque VM est indépendante, OS complet
– Isolation complète
– Frameworks d’application séparés
– Support de fonctionnalités comme la
migration à chaud
• Conteneurs
– OS de l’hôte partagé
– Proche d’un démarrage instantané
– Process dans les conteneurs sont isolés
– Les librairies et services applicatifs
dépendants sont liés au conteneur (couches)
– Tous les conteneurs partagent sur une
machine la même version d’OS invité
Physical Server
Guest OS w/ Docker
ASP.NET Core
Parts Parts Music Music
Guest OS Guest OS
App
Framework
App
Framework
App
A
App
A
Guest OS
App
Framework
App
B
Hypervisor
App
Framework
App
C
App
C
Guest OS
App
Framework
App
C
Physical Server
Hypervisor
13. Global Azure Bootcamp#GlobalAzure #MUGLyon #AZUGFR LYON - FRANCE
• Publier le site dans une VM Azure
– Linux
– Windows 2016
Technical Preview
– Construit le package du site
– Build l’image du conteneur
à partir du dockerfile
– Run le conteneur
Visual Studio 2015 Tools for Docker - Preview
14. Global Azure Bootcamp#GlobalAzure #MUGLyon #AZUGFR LYON - FRANCE
DevOps – délivrer rapidement de la valeur
Améliorer le flux de
valeur métier
Raccourcir les temps de
cycle
Réduire les coûts
15. Global Azure Bootcamp#GlobalAzure #MUGLyon #AZUGFR LYON - FRANCE
Code Repository
Backlog
Build + Deploy
Monitor and improve
Automated Testing User Feedback
Visual Studio Team Services
16. Global Azure Bootcamp#GlobalAzure #MUGLyon #AZUGFR LYON - FRANCE
• Construire l’application ASP.NET
– Compiler l’application
– Tester unitairement l’application
– Créer un package unique
• Construire les images ASP.NET de base
– Image ASP.NET Mono pour ARM à partir du dockerfile
– Image ASP.NET Clr x64 pour Windows 2016 Technical preview
– (utilisation image officielle ASP.NET Mono pour Linux (Debian)
VSTS Build pour notre démo
17
17. Global Azure Bootcamp#GlobalAzure #MUGLyon #AZUGFR LYON - FRANCE
• Comment pouvons-nous
itérer rapidement, tout en
maintenant la qualité?
• Recommendations:
– Configurer une build automatisée
qui se déclenche à chaque commit
– Créer des tests automatisés et les
éxecuter pendant notre Build
– Utiliser une solution de test
fonctionnel cloud
Continuous Integration (CI)
18
18. Global Azure Bootcamp#GlobalAzure #MUGLyon #AZUGFR LYON - FRANCE
• Générer les conteneurs
– Tirer le paquet construit par la build
– Tirer l’image de base
– Construire les images ASP.NET
• Démarrer les conteneur en Test
• Publier les conteneurs dans docker Hub
– Activer uniquement pour un déploiement manuel
– Indisponible pour Windows en mars 2016
Release Management pour notre démo
19
19. Global Azure Bootcamp#GlobalAzure #MUGLyon #AZUGFR LYON - FRANCE
Release Management (VSTS)
• Continuous Delivery
– Définir par environnement un pipeline
– Déclencher manuellement ou via une build
réussie
• Règles d’approbation
– Configurer les approbations par
environnement
– Demandes de validations manuelles
• Visibilité de la Release
– Vue par environnement du statut de la
release
– Suivre la release jusqu’au commit
20. Global Azure Bootcamp#GlobalAzure #MUGLyon #AZUGFR LYON - FRANCE
• Comment pouvons-nous obtenir
un feedback au plus tôt des
testeurs et early adopters?
• Recommendations:
– Etablir et suivre un programme de beta
pour collecter le feedback
– Automatiser le déploiement des nouvelles
build depuis le serveur de build CI
– Monitorer l’usage et les rapports d’erreurs
au plus tôt
Continuous Delivery (CD)
21. Global Azure Bootcamp#GlobalAzure #MUGLyon #AZUGFR LYON - FRANCE
• Créer une mini production
• Déployer à partir simplement du Docker Hub
• Utilisation de la preview cluster Mesos
Azure Container Service pour notre démo
22
22. Global Azure Bootcamp#GlobalAzure #MUGLyon #AZUGFR LYON - FRANCE
Conteneurs et Azure
• Installer manuellement sur une VM Linux
• Inclus dans Windows Server 2016 TP
• Docker-Machine
• Marketplace
– Pré-insatllé sur Ubuntu
– Applications composées de multiples conteneurs (ex: Wordpress+mySQL)
– Docker Trusted Registry, Jenkins, …
• ARM Templates
– Docker Swarm, Kubernetes, MesoSphere
• Azure Container Service
24. Global Azure Bootcamp#GlobalAzure #MUGLyon #AZUGFR LYON - FRANCE
• À L’équipe
– Pierre-Henri Gache @phgache
– Cédric Derue @cderue
– Vincent Thavonekham @vThavo
– Cédric Leblond @leblond_c
• Et pour leur aide et soutien à
– Hypriot : http://blog.hypriot.com/
– Microsoft
Merci à vous !
25
25. Global Azure Bootcamp#GlobalAzure #MUGLyon #AZUGFR LYON - FRANCE
GAB 2016 LYON ORAGANIZER
LOCAL SPONSORS
www.iot-world.fr
Prochaine édition
21 et 22 mars 2016 à Paris
26
Notas do Editor
1. Ce qui' on a voulu : Faire du nouveau avec des technos re : Docker, ASP.NET vNext, Raspberry Pas de dev : utilisation PartsUnlimited disposition sur GitHub + montrer appli sur webapps AzureLe partager avec Github Créer une Build pipeline et Continuous Delivery
2. Le résultat Github pageLien vers le site linux, windows, mesos, Docker hub Récupérer et lancer localement le conteneur sur PI !--> vous assister à une première mondiale ASP.Net
3. La Team !
4. Le schéma du pipelineBien inclure les 3 couches d'imagesExpliquer 1ou 2 choix
Partie détail Technos et leur apport5.Raspberry PI 1slide rapide6. Docker-->démo Linux + Push docker hub7. Azure Container ServicesSlides Build--> démo windows (mêmes commandes ou presque)8. VSTS (Build + RM) partie principaleDevOpsNe rien cacherRemontrer schéma globalMontrer nos essais
Notre démo principale est de faire tourner le site ASP.NET Core "PartsUnlimited" sur un Raspberry PI 2 au sein d'un conteneur Docker Linux. Du pure Geek, personne n'a encore fait cela à notre connaissance ;)
Le Rasperry PI 2 est un objet connecté. Nous enverrons ces données de télémétrie vers IOT Azure.
Nous allons aussi mettre en place un pipeline de build et déploiement avec VSTS, et pousserons les sources modifiées automatiquement vers GitHub. (et pourquoi pas créer une pull request vers le repo d'origine)
https://visualstudiogallery.msdn.microsoft.com/0f5b2caa-ea00-41c8-b8a2-058c7da0b3e4
Attention , changement depuis mars la partie création du host Docker est basé sur docker-machine
Pour noter démonnstration, il s’agit surtout de conserver une trace vivante et actice de ce que l’on a appris .
Et l’appliquer sur de vrais projets
Marathon est l’orchestrateur , Mesos est le cluster