Infeeny, une société du groupe Econocom est un nouveau pure-player Microsoft. Vous voulez travailler dans des grands comptes sur des projets innovants, rejoignez-nous ! Nos consultants sont formés, éduqués, suivis, coachés via des events internes ou chez Microsoft. Ils passent des certifications. La formation et le coaching sont nos engagements les plus précieux. Nous faisons des articles technique pour Programmez via le partenariat avec la communauté technique des NET Azure Rangers, nous organisons des évents internes, nous sommes sur les salons avec Microsoft via les “Ask the Expert” via le programme MVP. Nous bénéficions du référencement Econocom dans le CAC40. Cela fait une énorme différence avec les autres pure-players qui sont des PMEs pour la plupart… Faites la différence entres les différents acteurs, choissiez le dynamisme de Infeeny.
En tant que leader technique NET, j’évolue dans un monde ou le Cloud Azure a une part prépondérante. Nous utilisons les technologies comme NET/NET Core, AKS (kubernetes), Docker, API Managament, Cognitive Services, Windows, Linux, SQL Server, SharePoint, Office 365, etc.
Dans le le Programmez de Avril 2020, retrouvez un article technique qui vous expliquera en détail comment faire un déploiementd e Web API C# NET Core sur docker/kubernetes sous Linux Ubuntu 19.10.
On y détaillera les étapes suivantes:
la création du Web API en C# NET Core
la configuration docker et le dockerfile
le build de l’image
le push en registry locale de l’image docker
la configuration helm en YAML (Infra as Code) pour déployer le Web API
la supervision du cluster dans le portail k8s
l’utilisation de kubectl pour avoir les informations des services
Visual Studio Code sous Linux avec une fenêtre Terminal
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.10Visual 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. 🙂
(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.
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
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.
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 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.