Microshift est un projet de recherche qui explore la manière dont OpenShift/ Kubernetes peut être optimisé pour les petits facteurs de forme et le Edge Computing.
Les dispositifs Edge déployés sur le terrain posent des défis opérationnels, environnementaux et commerciaux très différents de ceux du Cloud. Ces défis motivent des compromis techniques différents pour Kubernetes à la périphérie éloignée que pour les scénarios de cloud computing ou de périphérie proche.
Les objectifs de conception de Microshift en tiennent compte selon ses concepteurs, à savoir :
- faire un usage frugal des ressources système (CPU, mémoire, réseau, stockage, etc.),
- tolérer de sévères contraintes de réseau,
- effectuer des mises à jour de manière sécurisée, sûre, rapide et transparente (sans perturber les charges de travail),
- et s’appuyer sur des systèmes d’exploitation optimisés pour la périphérie, comme Fedora IoT et RHEL for Edge, et s’y intégrer proprement, tout en
offrant une expérience de développement et de gestion cohérente avec OpenShift standard.
Pour ce test, je pars d’une instance Fedora Linux 34 dans Hetzner Cloud à 4 Go de mémoire vive :
Et lancement du script d’installation de Microshift :
J’en profite pour récupérer le client OpenShift :
L’installation terminée, le cluster est opérationnel et prêt au déploiement de charges de travail …
Pour simplifier le déploiement de charges de travail directement depuis les sources, je récupère également Odo :
Pour rappel, c’est un outil en ligne de commande pour la création d’applications sur OKD et Kubernetes. Avec Odo, vous pouvez écrire, construire et déboguer des applications sur un cluster sans avoir besoin d’administrer le cluster lui-même. La création de configurations de déploiement, de configurations de construction, de routes de service et d’autres éléments OKD ou Kubernetes est automatisée par odo.
Les outils existants, comme le client oc, sont axés sur les opérations et nécessitent une connaissance approfondie des concepts de Kubernetes et d’OKD. Odo fait abstraction des concepts complexes de Kubernetes et d’OKD, ce qui permet aux développeurs de se concentrer sur ce qui est le plus important pour eux : le code.
Dans le même temps, j’installe dans cette implémentation légère d’OpenShift, la console Web OKD en s’inspirant ce cet article du blog de KubeVirt :
L’élément surligné en jaune, récupéré par cette formule, est à insérer dans le manifest YAML suivant :
Je peux l’appliquer pour déployer la console web d’OKD dans Microshift :
Et la console web est accessible en externe de l’instance Fedora 34 via le port TCP fourni par NodePort :
Avec Odo je vais pousser le sempiternel démonstrateur FC dans Microshift. Il suffit de récupérer ses sources depuis GitHub et utiliser l’image Nodejs par défaut pour construire l’image de ce démonstration …
Et il est effectivement déployé :
On peut l’observer dans la console web :
Par l’entremise de l’adresse IP fournie avec ClusterIP, le démonstrateur est accessible localement :
J’utilise un tunnel fourni par localhost.run pour exposer publiquement le démonstrateur FC :
via cette adresse surlignée en jaune …
Tout ceci pour une consommation globale très modérée …
Il est possible d’exécuter Microshift dans un conteneur. Application dans une instance Fedora 34 à 2 Go de mémoire vive, toujours dans Hetzner Cloud :
Bien évidemment, je commence par l’installation localement de Podman :
Je clone le dépôt de Microshift sur GitHub afin de construire ce conteneur avec Podman :
Lancement de la construction :
Et après création d’un volume dédié, je peux lancer le conteneur Podman avec Microshift embarqué :
en entrant dans le shell de ce conteneur, on peut constater que Microshift est opérationnel :
Récupération comme précédemment du client OpenShift :
Test du déploiement d’un serveur web avec Nginx :
qui est accessible localement avec l’adresse IP fournie par ClusterIP :
Utilisation encore une fois de localhost.run pour exposer publiquement ce serveur web :
Le tout pour une consommation modérée avec ce conteneur unique dans cette instance Fedora Linux 34 :
Pour exécuter Microshift, vous devez disposer d’au moins 2 cœurs de processeur, de 2 Go de RAM, de 2,6 Go d’espace de stockage libre pour le binaire Microshift et d’un processeur 64 bits (bien que le 32 bits soit techniquement possible, si vous êtes prêt à relever le défi).
Pour le développement barebones, le minimum requis est de 3 Go de RAM, mais ce chiffre peut augmenter si vous utilisez des outils de développement gourmands en ressources …
Le développement de Microshift n’en est qu’à ses débuts avec des fonctionnalités nouvelles dans l’avenir. Mais vous retrouverez la démo vidéo du provisionnement de Microshift notamment avec RHEL for Edge sur YouTube, pour aller plus loin ! …
Entre k3s, k0s, MicroK8s, etc … l’écosystème Open Source semble s’étoffer pour faire face à ce marché en forte expansion de l’Edge Computing …
À suivre !