Minio
Introduction
Minio est une plateforme de stockage d’objets open source, conçue pour offrir une solution de stockage distribué et évolutive.
Avec sa simplicité d’utilisation, ses performances élevées et sa compatibilité avec l’API S3 (Amazon Simple Storage Service), Minio est devenu un choix populaire pour le déploiement de stockage d’objets dans divers environnements, des déploiements sur site aux infrastructures hybrides.
Installation
Nous allons installer minio sur notre machine Truenas (pour rappel, celle-ci est sous la version core).
Dans Truenas, aller dans Plugins chercher puis sélectionner Minio :

Pour l’installation nous aurons juste besoin de nommer le plugin ainsi que la Jail associée et nous pouvons laisser le reste des paramètres par défauts :

Suite à l’ajout du plugin Minio une Jail est créé.
Jail est une technologie de virtualisation légère propre à FreeBSD. Quand vous installez un plugin comme Minio sur TrueNAS, il est placé dans une jail pour plusieurs raisons :
Isolation : si Minio rencontre des problèmes ou des failles de sécurité, le reste du système TrueNAS reste protégé.
Sécurité : permet de réduire les risques de conflits et de vulnérabilités qui pourraient affecter d’autres services ou le système d’exploitation principal.
Facilité de Gestion : Les jails permettent de gérer facilement des applications spécifiques. Elles peuvent être démarrées, arrêtées, mises à jour et configurées indépendamment les unes des autres.

Pour accéder à l’interface de Minio, il suffit de mettre dans la barre de recherche de votre navigateur l’adresse ip de votre Truenas (ici 10.0.0.15) suivi du port :9002 :

Pour vous connecter à l’interface, vous pouvez retrouver l’identifiant et mot de passe root dans Post Install Notes au niveau de votre plugin. Pour y accéder, il faut aller dans Plugins et sur la ligne Minio cliquer sur > :

Ajout d’un point de montage
Un point de montage est une façon de connecter un répertoire de stockage (dataset) de TrueNAS à un répertoire à l’intérieur de la jail où Minio est installé.
Pour commencer, nous allons d’abord ajouter un nouveau dataset dans notre pool :

Sans allumer Minio, nous allons choisir l’option “Mount Points” qui se trouve dans le même menu que la note de post installation :

Pour la source, nous allons choisir le dataset préalablement créé. Pour la destination, nous allons choisir le chemin par défaut et ajouter un dossier minio grâce au PATH :

Configuration web
Ajout d’un user
Nous allons créer un user qui aura tous les droits. Pour cela, nous devons nous rendre dans Administrator > Identity > Users :


Ajout d’un bucket
Dans Minio, un bucket est un conteneur logique utilisé pour organiser et stocker des objets, similaire aux dossiers dans un système de fichiers classique.
Nous allons ajouter deux buckets un qui servira pour stocker les backup des machines contenues dans les datacenters et le second pour les volumes des pods de kubernetes.
Pour ajouter un bucket il faut aller dans l’onglet Buckets puis Create Bucket :


Ajout d’une clé d’accès
Nous allons créer 3 access key, une pour chaque bucket et une permettant la réplication des buckets. Pour créer une clé d’accès, il faut se rendre dans l’onglet Access Keys puis Create access key.

Sur les 3 Minios la clé de réplication des buckets doivent être identiques.
Réplication
Grâce au loadbalancer les backups ce font sur au moins un des 3 minios mais, pour que les 3 puissent avoir toutes les données à jour nous devons mettre en place une réplication de buckets.
Pour cela nous devons sur chaque bucket ajouter une règle de réplication pour chaque minios dont un veut répliquer le bucket. Voici le schéma de réplication :

Ajouter une règle de réplication
Pour ajouter une règle de réplication nous devons aller dans le bucket que nous voulons répliquer puis dans l’onglet Replication et choisir Add Replication Rule :

Nous devons ajouter :
- l'url où se trouve le bucket cible
- l'access key créer préalablement sur le minio cible
- le secret de la clé
- le bucket cible (/!\ il doit avoir le même nom que celui source)
- le mode de réplication
Dans un contexte entreprise il faudrait obligatoirement utiliser TLS
Voici le résultat des règles ajouter sur les 3 Minios :
- Minio Datacenter 1

- Minio Datacenter 2

- Minio Datacenter Storage

Nous effectuerons la même opération pour le bucket kubernetes.
Tester la réplication
Pour tester la réplication nous avons juste à lancer un job de backup et vérifier que les données qui sont importés dans un minio soit répliqué sur les 2 autres.