Cloud Hybride: Gestion sécurisée d’une flotte d’objets connectés grâce à SquareScale
Article en partenariat avec SquareScale
Le mois dernier, je vous ai présenté SquareScale, une solution qui déploie toute votre infrastructure Cloud Native de A à Z, chez n’importe quel IaaS provider, prête pour la production, avec un focus sur la sécurité. Pour rappel, SquareScale déploie également tous les composants indispensables aux développeurs de microservices: Service Discovery, Service Mesh, gestionnaire de secrets (Vault), monitoring, observabilité, …, tout ceci correctement configuré et immédiatement opérationnel.
Je vais cette fois vous présenter une fonctionnalité de SquareScale qui permet d’ajouter avec une simplicité déconcertante (mais vraiment !), des machines (physiques ou virtuelles) au sein du cluster piloté par SquareScale.
Il est utile de rappeler aux lecteurs qui n’auraient pas lu le précédent article que SquareScale a fait délibérément le choix de Hashicorp Nomad comme scheduler de workloads en raison de son focus sur la sécurité et la certification (réduction de la surface d’attaque) et de sa volonté de simplifier la vie des développeurs.
A l’heure où l’on voit se multiplier la recherche d’alternatives à K8S, il est particulièrement rafraîchissant de trouver enfin une solution basée sur autre chose que du Kubernetes car on ne compte plus les cadavres de sysadmins pendus avec des câbles RJ45 (catégorie 6A minimum) dans les datacenters à cause de l’extrême complexité des infrastructures basées sur K8S.
Cas d’utilisation
Avant de mettre les mains dans le cambouis, identifions les deux principaux cas d’utilisation de l’ajout d’un noeud externe:
Intégration de machines privées dans un cluster piloté par SquareScale dans le Cloud
En présence de Legacy, la capacité à ajouter n’importe quelle machine au sein d’un cluster peut faire gagner énormément de flexibilité dans un projet de migration vers le Cloud. Il est utile de préciser que Nomad est un scheduler de workload hétérogène: il permet bien sûr d’exécuter des containers, mais également des binaires, du Java, du GPU, …
De plus, Nomad étant un simple (mais puissant) binaire, il est possible de le faire tourner sur du Linux, mais aussi du Windows, du Mac OS, voire même tout vieil UNIX ésotérique et obsolète qui serait le seul OS capable de faire tourner une application particulière, pour des bonnes ou des mauvaises raisons (mais c’est un cas tellement fréquent).
SquareScale propose une procédure d’enrôlement simple et efficace visant à ajouter toute machine dans un cluster.
Intégration d’une flotte d’objets connectés dans un cluster piloté par SquareScale
Il est un cas d’utilisation qui, avec l’arrivée de la 5G, devrait voir ses occurrences se multiplier de façon exponentielle. Il est banal de dire que les objets seront de plus en plus connectés, et que, par conséquent, ces objets connectés vont rendre de plus en plus vulnérables les systèmes d’information.
Il est d’ailleurs très inquiétant de remarquer à quel point la plupart des objets connectés du marché, allant de la webcam au switch, en passant par la domotique ou même les capteurs industriels, sont de vraies passoires en termes de sécurité.
Et que dire de la problématique majeure des mises à jour de sécurité, notamment applicatives ?
Quand une flotte de plusieurs centaines de milliers d’objets connectés, voire plus, est déployée, s’assurer de la mise à jour de chaque objet est un défi à part entière.
SquareScale répond à cet enjeu en intégrant un agent Nomad dans les objets connectés - nous allons voir comment plus loin - et l’interface de SquareScale (qu’elle soit sur le web, en CLI, via le provider Terraform ou par l’API) fait de l’action de mettre à jour selon une politique définie, tout ou partie de la flotte, un jeu d’enfant.
Ici aussi, la simplicité et la légèreté de Nomad en font un atout considérable: il est possible de faire tourner Nomad (et Consul) sur de l’ARM, de l’Intel, quel que soit l’OS. La photo ci-après illustre un démonstrateur de SquareScale qui pilote une infrastructure sur AWS incluant 3 Raspberry 4 (ARM64) et 3 Intel Nuc (Intel 64 bits) dans un rack:
Le schéma suivant représente une architecture basique d’infrastructure déployée par SquareScale. SquareScale va orchestrer l’infrastructure (on parle bien d’orchestration de l’infrastructure complète, à ne pas confondre avec un orchestrateur de workloads, comme le sont Kubernetes et Nomad). C’est donc sur les VMs déployées chez un IaaS provider (ici AWS) que sont déployés les serveurs et agents Nomad notamment.Une infrastructure hybride dans laquelle sont ajoutées des machines d’un réseau privé, ou des objets connectés ressemble à ceci:**Comment ça marche ?**SquareScale propose l’inclusion de machines externes dans un cluster avec deux approches possibles. La première, qui est décrite ci-après, consiste tout simplement à fournir l’ensemble des fichiers de configuration de Nomad et Consul. Charge alors au développeur d’installer Nomad (et Consul dans certains cas) avec les fichiers téléchargeables dans l’interface SquareScale.
La deuxième approche est en cours de développement, et consiste à fournir un OS Linux prêt à l’emploi, sur lequel il n’y rien à configurer. On l’installe, on applique le processus d’adoption pour qu’il soit piloté par SquareScale, et c’est fini. On peut alors demander à SquareScale de lancer les workloads de son choix, sur les machines de son choix. Je reviendrai sur cette fonctionnalité un peu plus tard dans l’année, quand elle sera disponible.
Revenons donc à la première solution, qui est déjà disponible en production.
Commençons déjà par créer notre infrastructure:
Création de l’infrastructure en cours:On active [le mode “hybrid”](https://me.korben.info/squarescale2?source=korben.info) de l’infrastructure, pour autoriser l’inclusion de noeuds externes dans le cluster:Un “scheduling group” est un tag que l’on peut affecter à une ou plusieurs machines du cluster:On accède à l'ajout d’un noeud externe dans l’onglet “Settings”:On peut maintenant télécharger les fichiers de configuration pour openvpn et nomad, qui sont générés automatiquement en fonction de la configuration de l’infrastructure:Pour intégrer un Raspberry Pi au cluster, on installe d’abord les éléments nécessaires:Le Raspberry PI est maintenant raccordé au cluster:Ajout du Raspberry PI dans un scheduling group dédié:On ajoute maintenant un job à exécuter sur le Raspberry PI:Le Job est maintenant déployé comme l’indiquent les logs du conteneur:En effet, le job fait effectivement partie du cluster nomad:Pour découvrir de nouvelles fonctionnalités, rendez-vous le mois prochain.