Bonjour bonjour ! Bon, je dégouline actuellement, comme tout le monde en France, j’ai envie de dire, mais ça n’empêche pas de continuer à vous informer du mieux que je peux. Aujourd’hui, il s’agit de vous présenter la configuration initiale d’un cluster Garage S3, un outil dédié à la construction et à l’exploitation de clusters de stockage objet de type S3, comme RustFS ou MinIO.

Garage S3 se positionne comme une nouvelle alternative open source très légère (un seul binaire !), pensée pour les infrastructures modernes et les environnements conteneurisés. Ce projet se distingue par sa philosophie minimaliste : offrir une compatibilité totale avec l’API S3 d’AWS, avec deux objectifs en tête : la sécurité et la simplicité de déploiement.

Contrairement à certaines autres solutions du même type, Garage est entièrement open source, ce qui en fait un choix idéal pour les organisations soucieuses de maîtriser leurs données ou de réduire leur empreinte cloud. Ses fonctionnalités clés incluent la réplication multi-sites, le chiffrement de bout en bout, une gestion fine des permissions via IAM, et une scalabilité horizontale optimisée pour les workloads distribués. Garage est natif des environnements conteneurisés, avec une architecture pensée pour Docker et Kubernetes.

Son déploiement se fait en quelques commandes (ce que nous allons faire ensemble justement). Son API S3 native permet une migration transparente depuis des solutions comme MinIO ou même AWS S3. Que ce soit pour des sauvegardes, du stockage objet ou comme backend pour des applications cloud-native, Garage S3 incarne une approche vraiment tournée vers les ingénieurs infrastructures qui veulent rester maîtres des briques qu’ils mettent en production.

Bref, trêve de blabla, trêve de blablaaaaaa !

La première chose à faire est de déployer les conteneurs avec suffisamment d’espace pour chacun. Pour se faire on va utiliser ce manisfest docker-compose.yml :

… couplé avec un fichier de configuration garage.toml relativement simple :

Ce fichier définit les chemins locaux de stockage des métadonnées metadata_dir et des données brutes data_dir. Le paramètre replication_factor = 3 impose une réplication des données sur 3 nœuds, pour constituer un cluster S3. Les adresses RPC (rpc_bind_addr et rpc_public_addr) et le secret assurent une communication sécurisée entre les nœuds du cluster.

J’ai créé trois VMs pour l’occasion, camelot, avalon et orcanie, qui vont chacune héberger un des noeuds S3, en full Docker, donc.

une fois chacun des noeuds lancer avec un docker compose up -d, voici ce que ça donne :

Vous noterez que le noeud semble déjà opérationnel : listening on http://[::]:3900

On va l’interroger en exécutant un docker exec <le conteneur> <la ligne de commande>, tout simplement. la seule interface de commande des noeud est l’usage du fameux binaire à la racine du conteneur /garage :

… et c’est le cas pour les 3 noeuds que je viens de créer, pour le moment. Notre cluster est prêt à être configuré ! Le port 3900 est le port d’écoute de l’interface S3, les port 3901 est celui de l’interface de l’API garage, utilisée pour le pilotage de garage. On va récupérer le node id de chaque noeud. Pour avalon :

… et même chose pour les deux autre noeuds, orcanie et camelot. Au final on a donc trois noeuds autonome (pour le moment), on va donc connecter orcanie et camelot a avalon :

Au final, après avoir connecté les deux autre nodes au premier :

On va maintenant déclarer l’organisation de notre cluster, basé sur les 3 instances que l’on vient de créer et connecter ensemble. Je vais partir sur ce principe d’organisation :

Désormais, nous avons préparé une topologie que vous pouvez vérifier :

Allez, tout me parait correct, on va commit tout cela via un layout apply :

Notre cluster est prêt ! On peut maintenant configurer notre premier bucket pour le consommer :

On créé le bucket, ensuite une nouvelle clef d’acces, et enfin on donne le droit à cette clef d’accéder au bucket.

Attention comme quasiment toujours dans les solutions S3, lorsque la clef est créé, le système ne vous affiche qu’une seule fois la secret key 🙂

Le cluster est désormais configuré et accessible depuis n’importe quelle machine (avalon, camelot ou orcanie dans notre exemple). Charge à vous de rajouter un proxy/load balancer, comme, au hasard mon chouchou Traefik pour distribuer les accès sur un ensemble de clients. J’adore l’approche certes technique mais surtout parfaitement fonctionnelle de Garage S3. C’est un produit qui ne s’embarrasse pas belles interfaces web ni d’outil visuel sujet mécaniquement à des bugs ou des vulnérabilités potentielles. Il se concentre sur l’essentiel : fournir un accès robuste et potentiellement distribué sur de multiples points d’accès et noeuds à un stockage objet.

Je vous laisse découvrir la suite car c’est un système très riche !

Pour référence :
– Garage S3 de DeuxFleurs (joli nom ^^) : https://garagehq.deuxfleurs.fr

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *