Comment j'ai démystifié Kubernetes, sous Linux Ubuntu

Kubernetes est la technologie cloud à la mode. On en parle partout. J'ai voulu m'intéresser à ça et maîtriser la chose en local avant de la mettre en oeuvre dans le cloud. Voici la synthèse de mon expérience.

Introduction

En tant que développeur WIndows, le monde Microsoft dans lequel j'évolue est assommé par le marketing avec des messages "Faites du cloud, faites de l'Azure". C'est quotidien. On parle de modernisation des applications, de télémétrie, de monitoring mais surtout des architectures micro-services et de Kubernetes. Kubernetes est la technologie à la mode. Le problème c'est que cela ne fonctionne pas sous Windows : ça marche sous Linux. Premier problème.

Kubernetes, c'est quoi ?

K8s son petit nom est un orchestrateur de conteneurs Docker. Il fournit des services d'infrastructure pour mettre en oeuvre des images Docker (des pods) sous forme de services en Cluster avec un réseau interne d'adresses IP et de la redirection de ports et d'adresses IP. C'est globalement un service proxy avec un gestionnaire DNS et une infrastructure de clusters pour lancer des images Docker. Tout simplement

Installation sous Linux

J'installe Ubuntu 19.10 sur un PC Portable. Cela prend  30 minutes.

Ubuntu avec un fond d'"cran sur l’accueil chez Infeeny

Je vais sur le portail ubuntu.com/kubernetes où l'on m'explique que la solution MicroK8s permet d'avoir un cluster un noeud parfait pour le développement. En préambule, j'installe docker. Je suis les instructions et j'installe MicroK8s.  En 2 minutes mon cluster en up & running:

commande kubectl get nodes

A partir de là, il faut que je déploie des images Docker dans mon cluster... Moment do solitude. Je prend mon moteur de recherche favori et je cherche comment déployer des images Docker dans Kubernetes, et je tombe sur un tuto qui me propose de faire une Web API C# en .NET Core avec déploiement sous k8s. Parfait. voici le lien.

Environnement de travail sous Linux

Pour poursuivre l'expérience sous Linux, j'installe Visual Studio Code :

Visual Studio Code

Cela va me permettre de gérer tous les fichiers nécessaires au tuto.

Le tuto Web API NET Core pour k8s

Je suis les étapes du tuto :

  • installation de NET Core,
  • création du projet Web API,
  • compilation du Web API,
  • création du DockerFile pour faire tourner le Web API sous Docker,
  • build de l'image,
  • tag de l'image,
  • vérification du run en local sous Docker,
  • tag de l'image en localhost:5000 sous forme de registry privée,
  • push de l'image en regsitry privée,
  • création des fichiers de déploiement pour helm, le gestionnaire de déploiement pour k8s.
  • inscription de l'emplacement de l'image en registry privée,
  • déploiement avec helm d'un service k8s avec 3 pods en NodePort.

Voici le résultat :

commande kubectl get all

Le service est exposé sur le port 32322. On peut y voir trois pods en état running.

Test du Web API sur le port 32322

A partir de là, j'ai démystifié Kubernetes (K8s). C'est une infrastructure pour gérer des pods Docker en cluster.

Avec la documentation kubernetes.io j'ai vu qu'il y avait un portail web avec k8s. Je procède à l'installation en trois lignes de commande. Voici le rendu :

Conclusion

Cette expérience sous Linux est essentiel car je sais maintenant ce qu'est un cluster k8s. Ce n'est pas quelque chose d'abstrait qui est dans le cloud et que je ne sais pas exprimer. Maintenant, je peux créer un cluster k8s dans le cloud et le manipuler en ligne de commande. Je peux faire un push d'une image dans une regsitry cloud et faire un déploiement helm via un fichier de config dans un cluster k8s. Je maîtrise la chose. A suivre...