Visual Studio Code, SSH, Linux, Kubernetes…

Après 3 semaines d’études de Kubernetes sous Linux, j’y vois déjà plus clair au niveau du tooling. Le fonctionnement sous Linux est indispensable pour bien comprendre comment cela fonctionne : le cluster, les pods, le proxy, les services, kubectl

bash sous Ubuntu 19.10
Visual Studio Code avec une fenêtre Terminal en ssh depuis Windows

L’apprentissage de Kubernetes est assez complexe au premier abord car les docs sont tordues. On est loin de la prise en main façon Microsoft. J’ai du me faire mal et lire un book Kubernetes Up & Running de O’Reilly et la version française que mon éditeur DUNOD m’a envoyé gratuitement (merci).

Sinon c’était des recherches sur le web pour trouver les commandes à renseigner dans le bash terminal. On avance doucement. Sur le papier c’est pas dur:

  • création du Web API en NET Core C# NET via console dotnet new WebAPI
  • création & build de l’image Docker
  • push de l’image en registry privée locale
  • création d’un déploiement avec helm sur k8s en pointant sur l’image en registry privée
  • vérification dans le portail k8S que tout est ok (vert)
  • kubectl get services => récupération du port du NodePort du service
  • chrome: host_linux:nodeport/webapi et ça marche !

ça c’est la théorie car la machine Linux, quand elle veut pas, y a moment de solitude. On n’est pas dans un environnement intégré Microsoft avec des assistants et de l’ai de partout. Là, c’est Terminal bash et tu te dém…. !

Si vous suivez mes tutos, vous vous en sortirai. Au pire des cas, vous m’envoyez un email. 🙂

Créer une Web API en C# avec NET Core 3.1 avec Docker et Kubernetes sur Linux Ubuntu

(Cet article est une overview. Tous les détails seront dans l’article en préparation pour Programmez).

Voilà le titre est assez long mais il représente bien le challenge.

Pourquoi ce post ? Je veux maîtriser Kubernetes. On nous baratine avec ça. Donc il faut s’y mettre, pas le choix. Microsoft nous parle de k8s matin midi et soir. Dans Azure, c’est incontournable. OK mais moi je dis plus fort :

  • j’ai le code source de k8s
  • je peux le downloader gratuitement
  • pourquoi j’irais dans Azure et que cela me coûterait mon crédit de 150$ mensuel ?
  • Et si je le faisais tourner sous Linux ? En local ?

Première étape, commander un PC Dell portable pour Ubuntu. ça c’est fait : j’ai un plan ! Un portable Pentium 8 GB de RAM, 1 TB de disk: 330€ euros. J’ai acheté un disque SSD à 50 euros et j’ai remplacé le SATA HD par le SSD et là, c’est machine de compétition pour une somme modique.

Ensuite, il faut aller sur https://ubuntu.com/ downloader Ubuntu 19.10. On télécharge Rufus pour booter sur une clé USB et le tour est joué.

Ensuite il faut installer gcc, g++, go, docker, microk8s et ensuite on joue.

Le support Kubernetes pour Ubuntu est assuré par MicroK8S: https://microk8s.io/ | https://ubuntu.com/kubernetes

MicroK8S est un package Linux fait pour les développeurs:

  • Conformant
  • Istio
  • Storage
  • Clustering BETA
  • Registry
  • GPGPU bindings
  • Dashboard
  • Metrics
  • Automatic Updates
  • Ingress
  • DNS
  • Linkerd, Fluentd
  • Knative
  • Kubeflow
  • Jaeger, Prometheus

L’installation se fait via :

  • sudo snap install microk8s –classic
  • sudo microk8s.status –wait-ready
  • sudo microk8s.enable dns dashboard registry
  • sudo microk8s.enable dns dashboard ingress
  • sudo microk8s.kubectl proxy –accept-hosts=.* –address=0.0.0.0 &
  • sudo microk8s.kubectl -n kube-system edit deploy kubernetes-dashboard -o yaml
  • => ajout de – –enable-skip-login dans spec:containers.args:

Ensuite, il faut installer NET Core 3.1: https://docs.microsoft.com/en-us/dotnet/core/install/linux-package-manager-ubuntu-1904

Avec NET Core installé, on créé une Web API : dotnet new webapi – o App

On build le truc dans une image Docker:

Je build la chose: sudo docker image build –pull -t aspnet3k8s:v1

j’ai pushé l’image dans une registry privée:

  • sudo docker tag aspnet3k8s:v1 localhost:32000/aspnet3k8s
  • sudo docker push localhost:32000/aspnet3k8s

Pour le déploiement de l’image Docker dans Kubernetes, il faut au préalable l’avoir poussée dan une registry privée.

Ensuite on va faire de l’infra as code avec du YAML pour pousser le deploiement dans kubernetes. L’IaC est variabilisée et les valeurs sont les suivantes:

Je fais le déploiement avce helm, le package manager kubernetes:

christophep@christophep-Inspiron-15-3573:~/dev$ helm install aspnet3release4 ./chart/
NAME: aspnet3release4
LAST DEPLOYED: Sat Feb  1 04:21:00 2020
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None

On check les status avec :

microk8s.kubectl get all –selector app=aspnet3core

On essaie d’accèder au cluster: ça marche

Le portail Kubernetes nous montre que tout est OK: L’url est http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/

Conclusion: Ce PoC montre qu’installer Kubernetes est simple et gratuit pour le développement. Nul n’est besoin d’aller dans Azure et de consommer du crédit en $. Linux fait l’affaire. De plus, avec .NET Core, les développeurs Microsoft ne perdent pas leur bossoles. Le déploiement est fait via de l’infra as code et le paramétrage se fait en ligne de commande. IL y donc du Dev et du Ops.

Comment devenir un Expert Docker/Kubernetes dans le monde Microsoft ?

Ce post part d’une réflexion relatée à mon boss et à mes anciens collègues de différentes sociétés suite à la réception d’une newsletter Microsoft Azure….

Microsoft nous spam avec kubernetes… Y a pas à dire, Microsoft s’est converti à k8s.

En tant que MVP (Most Valuable Pipiche), je vous donne un feedback from the field sur Docker/Kubernetes. On m’a poussé à apprendre Docker & Azure en 2017 chez Neos-SDI et j’ai galéré… Mais ça a changé ma vie depuis 3 ans.

Après des semaines d’expérimentations avec ses choses-là (Docker, Azure et maintenant Kubernetes) , je suis arrivé à un constat : on a du boulot pour 10 ans sans forcer. Et donc qui dit boulot du business !

Par contre, le challenge c’est de faire évoluer les gens et là, ça va changer les habitudes des Devs NET traditionnelles. Comme disait Aimé Jacquet, sélectionneur de France 98, « Faut que tu muscules ton jeu sinon tu vas au-devant de sévères déconvenues ! ».

NET pour Windows, c’est mort. Faut faire de l’Azure, du Linux, du Docker/Kubernetes.

La recette à Pic :
Il faut vous mettre aux architectures micro-services (View on the web, Download pdf)
Il faut que vous maitrisiez la modernisation des applications .NET vers Azure (Download pdf)
Il faut faire des applications Web Modernes avec ASP.NET Core  et Azure (View on the web, Download pdf)
Il faut mettre en éveil l’Architecte qui est en vous:
Il faut regarder les samples officiels Microsoft comme eShopOnContainers, eShopWeb, SmartHotels360 et décortiquer la doc
Récupérer le code sur GitHub:
https://github.com/mspnp/microservices-reference-implementation
https://github.com/dotnet-architecture/eShopOnContainers
https://github.com/dotnet-architecture/eShopOnWeb
https://github.com/microsoft/SmartHotel360

Synthèse :

La solution est multi-plateformes (Windows, Linux) et multi-technologies:

  • Shipping/Delivery est en ASP.NET Core Web API avec support Redis
  • Shipping/DroneScheduler est fait en ASP.NET Core Web API avec support CosmosDB (ils ont pas pu s’empêcher…)
  • Shipping/injection est fait en Java/springframework
  • Shipping/package est fait en TS/node avec support MongoDB

Il y a le dev et le Ops : le YAML & co.

Le code des DockerFile est dense (limite complexe)

=> Il faut former les gens à Docker : c’est indispensable. Docker/Windows, Docker/Linux => mettre le paquet sur Docker

  • On peut d’ailleurs se servir de ce sample training officiel Docker/K8s.

Microsoft demande aux développeurs d’avoir des skills :

  • Windows, Linux
  • Docker, Kubernetes
  • Node, TS, Java, C#
  • MongoDB, Redis, CosmosDB

Le monde est de plus en plus complexe. Qui comme moi va passer son week-end à lire des books pour se former… ? Tout le monde n’est pas passionné. La barre est haute au niveau des skills .Je suis conscient que cela va nous donner du boulot pour les 10 ans à venir par contre la question reste posée : (hier, j’ai vu 2 cv asp.net qui m’ont pas fait rêver…) => on en fait quoi de ces gens-là ? Déjà que quand tu leur dit arrêter de faire EF, ils couinent…

On va leur demander de faire autre chose que du Web API bête et méchant : on leur demande d’être des architectes et de vrai développeurs avec un mindset open. Fini de jouer…

La clé de tout ça : la formation. Il est difficile de recruter des gens prêt à l’emploi : c’est très rare. Ils sont déjà en poste ou coûte très cher. Il faut former les gens. C’est la clé.

Mon avis personnel :

Aujourd’hui, tout existe, repos GitHub, Microsoft Learn, Microsoft Doc, les books gratuits MS Press, ceux qu’on rippe, ceux qu’on achète : on a tout ! La Technologie marche bien. Ce n’est pas le problème. Mais le problème c’est l’humain. Il faut faire prendre la mayonnaise, le faire adhérer, lui faire prendre conscience que c’est son intérêt d’upgrader ses skills.

Ça va être long et douloureux. Déjà que pour faire du Windows Server/IIS/SQL Server, le développeur Microsoft standard est léger… alors là, avec du Docker, Azure, NET Core, Linux, je suis pessimiste. On va ramer. On va essayer.

Informations technique :

Regardons le code du service Delivery, c’est pas dur :

Regardons le code que GetAsync :

On a un wrapper Redis : c’est le assuré via le package Nuget StackExchange.Redis

IDatabase est le wrapper Redis :

La conclusion de ce post est la suivante:

Formez vous à Docker/Kubernets, c’est l’avenir. Utilisez les samples de référence comme canevas de départ dans vos projets.

La newsletter Microsoft du jour: Lien: https://docs.microsoft.com/en-us/azure/architecture/reference-architectures/microservices/aks

Aide-Mémoire C#/NET pour Dunod

C’est avec une joie immense que je vous annonce que mon Editeur Dunod me confie le projet de livre “Aide-Mémoire C#/NET” pour 2020. Parution en Septembre 2020.

Design de la couverture

Objectif : le langage C# et la plateforme Microsoft NET et .NET Core.

On va taquiner les 350 pages.

Table des matières / sommaire :

  • Préface de Eric Vernié, Microsoft FRANCE
  • Partie I : la plateforme NET
    • Le CLR : common language runtime et les assemblies
    • Le CTS : common type system
    • La BCL : base class library
  • Partie II : le langage C# et le framework NET
    • Les types
    • Les statements
    • Les classes
    • Les properties, les méthodes, les interfaces
    • Les generics
    • Les events et les delegates
    • Les types nullables
    • Les exceptions
    • La reflection et le chargement des assemblies
    • La serialisation
    • Async / await
    • LINQ
    • Le multithreading
    • Le Garbage Collector
    • Gestion du XML
    • Les I/O
    • L’accès aux données via ADO.NET
    • Web API et JSON
    • Cryptographie
    • Overview WinForms
    • Overview WPF
    • Overview ASP.NET MVC  / APS.NET Core
    • Overview Entity Framework / EF Core
    • Net Core
    • L’interop COM
    • L’interop avec C++, C++/CLI et C++/CLR
  • Partie III : Azure
    • Overview Azure
    • Overview Docker & Containers
  • Partie IV : les outils
    • Nuget
    • Visual Studio 2019
    • ILDAsm et divers
    • Roslyn

Si vous voulez être relecteur technique, envoyez moi un email pour que je vous donne accès à mon SharePoint sur christophep@cpixxi.com via une inscription de votre compte email Microsoft dans mon Active Directory en tant que Guest member.

Mon identité web (sites Web MVP Fr et en-US et blogs)

Pour présenter mes articles techniques (possibilité de télécharger les PDF), mes applications GitHub, mes bouquins et plus généralement mes activités communautaires de MVP, j’ai fait deux sites web:

Ils ont presque la même façace. Voici le site en français. On y trouve :

Retour sur 2019, articles et posts

Le post “Comment Devenir un Expert Microsoft” est certainement celui qui a eu le plus de succès. Je vous joint le dossier complet paru dans Programmez n°234 de Novembre 2019. Download sur : http://netazurerangers.com/Articles/Article234.pdf

Le post “Comment devenir un Expert Windows” a aussi eu sont petit succès. Il est prévu d’en faire un article pour Programmez. A suivre.

Le post “Code review le diable se cache dans le détail” aussi a des visiteurs.

Le poste “C++ unsafe et unsecure ?” a aussi eu de l’impact…

Liste de mes derniers articles dans le magazine Programmez :

  • N°234: Comment devenir un expert Microsoft ? – PDF
  • N°233: Windows Subsystem for Linux 2 (WSL 2) – PDF
  • N°232: Docker et Containers : Introduction et Concepts – PDF
  • N°231: Reverse Engineering et analyse de virus – PDF
  • N°230_1: XAML Islands : incorporez les contrôles XAML Windows 10 dans vos Apps WinForms et WPF – PDF
  • N°230_2: Introduction à ASP.Net Core 3.0 – PDF
  • N°229: C++ et Containers Docker sur Azure – PDF
  • N°228: LMDB : la base NoSQL la plus rapide du monde – PDF
  • N°227: Détection et reconnaissance faciale avec OpenCV4 en C++– PDF
  • N°226: Rootkit Partie II : Module Command & Control – PDF
  • N°225: Rookit key Logger – PDF
  • N°224: Space Invaders 1978 en C/C++ avec SFML – PDF
  • N°223: Windows Le Multithreading en C/C++ – PDF
  • N°222: Linux Le Multithreading en C++ – PDF
  • N°221: Au coeur d’un Service Windows NoSQL – PDF
  • N°220: Créer un service Windows – PDF
  • N°218: Migrer son code C/C++ en 64 bits – PDF
  • N°217: Les Tests en C++ – PDF
  • N°216: La Programmation Orientée Objet en C++ – PDF
  • N°215: Utiliser shared_ptr<T> en C++ pour la gestion des ressources – PDF
  • N°214: Développez un IDE en C++ Partie II – PDF
  • N°213: Développez un IDE en C++ Partie I – PDF
  • N°212: Un serveur REST Web API en C++ – PDF
  • N°211: Pourquoi C++ en 2017 ? – PDF

Comment devenir un expert Microsoft ?

Au travers les échanges que j’ai avec mes étudiants à l’ESGI ou bien sur les forums, la question qui revient souvent c’est “comment on devient un Expert Microsoft ?”. En effet, la stack des produits et technologies est tellement large que on en sait pas ou donner de la tête…

Je vais vous donner mon avis et il n’engage que moi, ni Microsoft ni mon employeur.

Pour commencer il y a des fondamentaux: un expert n’est pas un marabout. Il ne lit pas dans les boules de cristal mais dans les livres. Cela pourrait être la conclusion de cet article… !

Conseil n°1: Lisez, lisez tout, soyez gourmand, soyez vorace. Que vous soyez bachelier, Bac+2,3, en master et même ingénieur. Vous avez de la chance, les ouvrages techniques existent tous au format PDF et sont facilement accessibles en direct (j’ai jamais dit qu’il fallait aller sur allitebooks.com mais l’idée est là) ou sur les torrents… Utilisez le Pattern du “try before buy” : si un book vous plait, vous l’achetez.

Dans le monde Azure, Windows , il existe de nombreux ouvrages gratuits chez Microsoft Press: cf. https://blogs.msdn.microsoft.com/microsoft_press/tag/ebooks/ Regardez par exemple les ouvrages suivants:

Ces ebooks sont gratuits et sont de très bonne qualité !

L’idéal c’est de savoir réaliser une architecture d’application qui ressemble à cela:

Le PDF sur les microservices explique cela. A partir de là, vous êtes au fait des dernières technologies car la solution du sample eShopOnContainers met en oeuvre ASP.NET MVC, Docker, Azure, les back-end, C#, SQL Server, du cache et du NoSQL, etc. Le code source de cette solution est disponible sur Github: https://github.com/dotnet-architecture/eShopOnContainers/

La marche peut toute fois être élevée pour être franchie en une seule fois. Il faut d’abord partir sur de bonnes bases.

Conseil n°2: Lisez le Guide Architecture Windows v2 ; download ici: http://windowscpp.com/Books/AppArchGuideV2.pdf . Ce guide va vous expliquez les principes d’architecture pour réaliser une bonne solution et un bon design d’application. Voici le schéma classique d’une application découpée en couches:

Le langage C# fait partie des fondamentaux. C’est la base du développement. Il existe de nombreux ouvrages spécialisés comme:

Conseil n°3: Si vous voulez être un vrai Pro du développement .NET, il y a un ouvrage de référence chez Microsoft Press: CLR by C#. C’est la bible. Achetez-le. Il explique tout sur .NET: la BCL, le JIT, le garbage collector, les CLR, etc.

Conseil n°4: Passez des certifications. Commencez par quelque chose de simple: 70-483 Programming C#. Puis choisissez votre cursus. Web, Mobile, Azure. Au choix. Attention le passage de certifications ne doit pas ce faire sous forme de bachotage avec des examens blancs… sinon cela ne valide en rien une expérience. Il faut maîtriser les sujets, les pratiquer et avoir le socle de compétences.

Ensuite, il n’y a pas de secrets : il faut pratiquer. Microsoft met à disposition les éditions gratuites de Visual Studio 2019 livrées avec un SDK Windows, SQL Server est aussi disponible en téléchargement ou en image Docker, et Windows 10 fournit IIS. Bref, vous avez tout pour devenir un pro du développement Microsoft.

Serez-vous un Expert ? Je ne sais pas mais en tout cas, je vous donne toutes les informations pour y parvenir. Pour être un expert il faut entre 5 et 10 ans d’expérience et de pratique au quotidien ; pas avant.

Conseil n°5: Il n’y a pas de honte à savoir dire : je ne sais pas. Ne vous improvisez pas. Vous n’êtes pas un commercial ! Soyez humble. Soyez crédible. Ne jouez pas des claquettes !

Conseil de MVP: Lisez Windows Internals. N’oubliez pas que le joyau, c’est Windows…

Et Windows est fait en C/C++ donc lisez aussi:

Microsoft fait tous ces produits en C/C++ à 95% donc si vous être curieux (les vrais experts le sont), renseignez vous sur le SDK Windows et le développement C/C++ en Win32. Windows, Office, SQL Server, Windows Server, Chrome, VLC : tout ce que vous avez sur votre PC est fait en C/C++ ; ne l’oubliez pas !

Disclaimer: Les liens donnés pour le téléchargement ici sont donnés à titre indicatif et n’engage pas au piratage mais au “try before buy”. Si un livre vous plait, achetez-le !