>
E-NO
Mise à niveau MinIO 7 min de lecture

Mise à niveau et migration de MinIO : guide opérationnel pratique

calendar_today Publié : 2026-08-29
update Dernière mise à jour : 2026-08-29
analytics Efficacité SEO : 100%
Illustration du guide technique pour « Mise à niveau et migration de MinIO : guide opérationnel pratique ».

Introduction

La mise à niveau ou la migration d'un déploiement MinIO est une opération courante qui peut se transformer en panne de service si elle est effectuée sans plan clair. Ce guide propose une approche pratique, axée sur les commandes, pour les développeurs, les ingénieurs DevOps et les équipes techniques de startups qui doivent passer d'un problème connu à un résultat vérifié. Nous nous concentrons sur le flux de travail opérationnel : identifier la version et la topologie actuelles, préparer le changement, exécuter la mise à niveau ou la migration, valider le résultat et revenir en arrière si nécessaire.

L'objectif est la sécurité opérationnelle. Avant de modifier quoi que ce soit, vous observez l'état actuel. Vous limitez le rayon d'impact en mettant à niveau un composant à la fois. Vous utilisez des variables de remplacement au lieu de véritables informations d'identification dans les scripts et la documentation. Vous vérifiez le résultat avec des commandes explicites et une sortie attendue. Et vous documentez les étapes de récupération avant d'en avoir besoin.

Chaque exemple de cet article utilise des variables de remplacement comme http://minio.example.com ou access-key-placeholder. Remplacez-les par les valeurs de votre environnement. Ne placez jamais de secrets de production dans des scripts, des fichiers de configuration ou un contrôle de version.

Inventaire de la version et de l'environnement

Avant toute mise à niveau ou migration, vous devez savoir exactement ce que vous avez. Cette étape d'inventaire est en lecture seule et sans danger. Elle établit une base de référence pour une comparaison ultérieure.

Identifier la version installée

La première commande vérifie la version du serveur MinIO. La méthode dépend de la manière dont vous accédez au déploiement.

Pour un binaire local ou un service systemd :

minio --version

Sortie attendue :

minio version RELEASE.2024-01-16T16-07-38Z (commit=...)

La chaîne de version basée sur la date indique la date de sortie et la build. Notez cette chaîne exacte dans votre runbook.

Pour un conteneur Docker :

docker exec minio-container minio --version

Remplacez minio-container par le nom ou l'ID réel du conteneur.

Pour un déploiement Kubernetes :

kubectl exec -n minio-namespace deploy/minio -- minio --version

Si le déploiement a plusieurs répliques, exécutez la commande sur un pod et vérifiez également l'étiquette de l'image dans la spécification du déploiement :

kubectl get deploy minio -n minio-namespace -o jsonpath='{.spec.template.spec.containers[0].image}'

Enregistrer la topologie du déploiement

Vous devez savoir s'il s'agit d'une configuration à nœud unique et lecteur unique (SNSD), à nœud unique et plusieurs lecteurs (SNMD) ou distribuée à plusieurs nœuds et plusieurs lecteurs. La topologie détermine la procédure de mise à niveau et les options de retour en arrière. Le codage d'effacement de MinIO offre une redondance, mais seulement si le cluster est sain avant la mise à niveau.

Vérifiez la santé du cluster avec mc admin info :

mc admin info myminio

Exemple de sortie saine :

●  minio1.example.com:9000
   Uptime: 12 days
   Version: RELEASE.2024-01-16T16-07-38Z
   Drives: 4/4 OK
●  minio2.example.com:9000
   Uptime: 12 days
   Version: RELEASE.2024-01-16T16-07-38Z
   Drives: 4/4 OK

Si un lecteur n'est pas OK, résolvez ce problème avant de continuer. Une mise à niveau ne répare pas le matériel défaillant.

Vérifier la compatibilité et les prérequis

Consultez les notes de version de MinIO pour la version cible. Recherchez les changements cassants, les modifications de format de fichier de configuration ou les étapes de migration requises. Par exemple, passer d'une version antérieure à 2022 peut nécessiter des modifications des variables d'environnement MINIO_ROOT_USER et MINIO_ROOT_PASSWORD (désormais obligatoires).

Vérifiez que vos outils clients, en particulier mc, sont compatibles avec la version du serveur. Le client mc est généralement rétrocompatible, mais les nouvelles fonctionnalités peuvent nécessiter un client plus récent.

mc --version

Si vous utilisez des SDK S3 dans des applications, vérifiez leur compatibilité avec la version cible de MinIO. La plupart des SDK compatibles S3 fonctionnent, mais des fonctionnalités comme le verrouillage d'objet ou la gestion des versions peuvent avoir des exigences spécifiques.

Capturer un instantané en lecture seule

Enregistrez la configuration actuelle. Pour Docker, obtenez les variables d'environnement et les montages :

docker inspect minio-container --format '{{json .Config.Env}}'
docker inspect minio-container --format '{{json .Mounts}}'

Pour Kubernetes, exportez le YAML du déploiement et du statefulset :

kubectl get deploy minio -n minio-namespace -o yaml > minio-deploy-backup.yaml

Si vous avez un config.json personnalisé pour MinIO (rare, mais possible), sauvegardez-le :

cp /etc/minio/config.json /backup/minio-config-$(date +%Y%m%d).json

Cet instantané est votre référence pour le retour en arrière.

Chemin de configuration sécurisé

La mise à niveau elle-même doit suivre un chemin qui minimise les risques. Nous décrivons les étapes pour Docker et Kubernetes, les méthodes de déploiement les plus courantes.

Procédure de mise à niveau Docker

Le plus petit changement justifié est de mettre à jour l'image du conteneur vers la nouvelle version. Mais faites-le de manière contrôlée.

Étape 1 : Téléchargez la nouvelle image.

docker pull minio/minio:RELEASE.2024-02-17T17-12-33Z

Remplacez l'étiquette par votre version cible. Vérifiez la signature de l'image si vous utilisez Docker Content Trust.

Étape 2 : Arrêtez le conteneur actuel.

docker stop minio-container

Étape 3 : Démarrez un nouveau conteneur avec les mêmes volumes et environnement.

docker run -d --name minio-container-new \
  -p 9000:9000 -p 9001:9001 \
  -v /data/minio:/data \
  -e MINIO_ROOT_USER=access-key-placeholder \
  -e MINIO_ROOT_PASSWORD=secret-key-placeholder \
  minio/minio:RELEASE.2024-02-17T17-12-33Z server /data

Ne réutilisez pas le même nom de conteneur. Utilisez un nouveau nom afin de pouvoir revenir en arrière en arrêtant le nouveau conteneur et en démarrant l'ancien.

Étape 4 : Vérifiez la nouvelle version.

docker exec minio-container-new minio --version

Étape 5 : Validez le fonctionnement (voir Vérification et diagnostics). Ce n'est qu'après une validation réussie que vous supprimez l'ancien conteneur.

Procédure de mise à niveau Kubernetes

Pour Kubernetes, mettez à jour l'étiquette de l'image dans le déploiement ou le statefulset. Si vous avez un MinIO distribué multi-nœuds, utilisez un StatefulSet avec des volumes persistants. La mise à niveau doit être progressive pour éviter les temps d'arrêt.

Étape 1 : Mettez à jour l'étiquette de l'image.

kubectl set image statefulset/minio minio=minio/minio:RELEASE.2024-02-17T17-12-33Z -n minio-namespace

Étape 2 : Surveillez la mise à jour progressive.

kubectl rollout status statefulset/minio -n minio-namespace

Sortie attendue :

Waiting for 1 pods to be ready...
statefulset rolling update complete

Étape 3 : Vérifiez les versions des pods.

kubectl exec -n minio-namespace minio-0 -- minio --version

Mise à niveau à nœud unique et plusieurs lecteurs (SNMD)

Sur un nœud unique avec plusieurs lecteurs, vous pouvez arrêter le service MinIO, remplacer le binaire et redémarrer. Mais arrêtez d'abord tout le trafic client. Utilisez une fenêtre de maintenance.

Étape 1 : Arrêtez le service.

sudo systemctl stop minio

Étape 2 : Téléchargez le nouveau binaire.

wget https://dl.min.io/server/minio/release/linux-amd64/minio -O /usr/local/bin/minio
chmod +x /usr/local/bin/minio

Étape 3 : Démarrez le service.

sudo systemctl start minio

Étape 4 : Vérifiez la version.

minio --version

Chemin de migration : déplacer des données vers une nouvelle version ou un nouveau matériel

Parfois, vous devez migrer des données d'une ancienne instance MinIO vers une nouvelle, soit parce que vous mettez à niveau l'infrastructure sous-jacente, soit parce que vous passez à un nouveau cluster. La migration la plus sûre utilise mc mirror.

Exemple : Miroir des données de l'ancien MinIO vers le nouveau MinIO.

Configurez les alias :

mc alias set old-minio http://old-minio.example.com access-key-placeholder secret-key-placeholder
mc alias set new-minio http://new-minio.example.com new-access-key-placeholder new-secret-key-placeholder

Exécutez la commande miroir :

mc mirror --watch --remove old-minio/bucket-name new-minio/bucket-name

Le drapeau --watch maintient le miroir en cours d'exécution pour capturer les nouveaux changements. Le drapeau --remove supprime les fichiers dans la destination qui n'existent pas dans la source (utile pour un basculement final).

Après la synchronisation initiale, effectuez une synchronisation finale pendant une fenêtre de maintenance lorsqu'aucune nouvelle écriture n'est attendue. Ensuite, basculez les points de terminaison de votre application vers le nouveau MinIO.

Vérification et diagnostics

Après la mise à niveau ou la migration, vous devez vérifier que le système fonctionne correctement. Ne supposez pas le succès parce que le processus s'est terminé sans erreur. Exécutez des vérifications explicites.

Vérifier la santé du serveur

Utilisez à nouveau mc admin info :

mc admin info myminio

Comparez la version et l'état des lecteurs avec la base de référence. Tous les lecteurs doivent être OK.

Tester les opérations S3

Utilisez mc pour effectuer des opérations de base :

mc ls myminio
mc mb myminio/test-bucket
mc cp test-file.txt myminio/test-bucket/
mc cat myminio/test-bucket/test-file.txt

Si vous avez des buckets avec des objets, listez un échantillon :

mc ls myminio/existing-bucket --recursive | head

Pour des tests plus approfondis, utilisez un client S3 comme aws cli ou s3cmd avec des informations d'identification de test.

Vérifier les journaux

Recherchez des erreurs dans les journaux MinIO. Dans Docker :

docker logs minio-container-new --tail 100

Dans Kubernetes :

kubectl logs -n minio-namespace minio-0 --tail 100

Surveillez les messages concernant les pannes de lecteur, les erreurs d'authentification ou les problèmes de configuration.

Valider la connectivité des applications

Si vous avez des applications utilisant le point de terminaison MinIO, exécutez leurs tests d'intégration ou testez manuellement quelques requêtes. Vérifiez que les URL pré-signées fonctionnent toujours si vous les utilisez.

Test de performance rapide

Effectuez un téléversement et un téléchargement rapides pour vous assurer que les performances sont acceptables :

mc cp /tmp/100MB-test-file myminio/test-bucket/
time mc cp myminio/test-bucket/100MB-test-file /tmp/restored-file

Comparez les temps avec les références d'avant la mise à niveau si vous les avez.

Modes de défaillance et récupération

Même avec une planification minutieuse, les choses peuvent mal tourner. Voici les modes de défaillance courants et les actions de récupération.

Échec de la mise à niveau : la nouvelle version ne démarre pas

Symptômes : Le nouveau conteneur se termine immédiatement ou le pod plante. Les journaux montrent des erreurs comme une configuration incompatible ou des dépendances manquantes.

Récupération : Revenez à la version précédente.

Pour Docker :

docker stop minio-container-new
docker start minio-container

Pour Kubernetes :

kubectl rollout undo statefulset/minio -n minio-namespace

Pour systemd :

sudo systemctl stop minio
# restaurer l'ancien binaire à partir de la sauvegarde
sudo cp /backup/minio-old /usr/local/bin/minio
sudo systemctl start minio

La mise à niveau réussit mais les données sont corrompues ou manquantes

Symptômes : Objets introuvables, erreurs de somme de contrôle ou défaillances d'application. C'est rare mais possible si la mise à niveau a eu un bogue ou si les lecteurs ont été perturbés pendant le processus.

Récupération : Si vous avez une sauvegarde, restaurez à partir de celle-ci. Sinon, essayez de réparer avec mc admin heal :

mc admin heal -r myminio/bucket-name

La commande heal tente de reconstruire les données manquantes ou corrompues en utilisant le codage d'effacement. Mais elle ne peut pas réparer les données qui ont été écrasées ou supprimées.

Migration incomplète ou perte de données

Symptômes : Après la migration, certains objets sont manquants dans la destination. Cela peut arriver si le processus miroir a été interrompu ou si de nouvelles écritures ont eu lieu après la synchronisation finale.

Récupération : Réexécutez le miroir avec --watch jusqu'à ce qu'il n'y ait plus de différences. Ensuite, arrêtez les écritures sur la source et effectuez une synchronisation finale. Vérifiez le nombre d'objets :

mc ls old-minio/bucket-name --recursive | wc -l
mc ls new-minio/bucket-name --recursive | wc -l

Les nombres doivent correspondre.

Erreur de configuration après la mise à niveau

Symptômes : MinIO démarre mais les clients ne peuvent pas s'authentifier ou accéder aux buckets. Les journaux montrent AccessDenied ou InvalidAccessKeyId.

Récupération : Vérifiez que les variables d'environnement pour les informations d'identification racine sont correctes. Si vous avez modifié la clé d'accès ou la clé secrète pendant la mise à niveau, mettez à jour tous les clients. Si vous utilisez un fichier de configuration, vérifiez sa syntaxe et ses autorisations.

Problèmes de réseau ou de DNS après le basculement

Symptômes : Les applications ne peuvent pas atteindre le nouveau point de terminaison MinIO. Cela peut être dû à des règles de pare-feu, des groupes de sécurité ou un DNS non mis à jour.

Récupération : Testez la connectivité :

mc alias set test-new http://new-minio.example.com access-key-placeholder secret-key-placeholder
mc ls test-new

Si la connexion échoue, vérifiez les politiques réseau et le DNS. Revenez temporairement à l'ancien point de terminaison si nécessaire.

Liste de contrôle des opérations

Utilisez cette liste avant, pendant et après la mise à niveau ou la migration.

Avant l'opération

  • [ ] Lisez les notes de version de la version cible et notez tout changement cassant.
  • [ ] Vérifiez la santé du cluster avec mc admin info. Assurez-vous que tous les lecteurs sont OK.
  • [ ] Sauvegardez les fichiers de configuration (par exemple, config.json, variables d'environnement, YAML Kubernetes).
  • [ ] Prenez un instantané des données importantes si possible (par exemple, mc mirror vers un emplacement de sauvegarde).
  • [ ] Planifiez une fenêtre de maintenance avec suffisamment de temps pour la validation et le retour en arrière.
  • [ ] Informez les parties prenantes et les équipes applicatives du changement planifié.
  • [ ] Préparez les commandes de retour en arrière et testez-les dans un environnement de pré-production si disponible.
  • [ ] Assurez-vous d'avoir accès aux anciens et nouveaux artefacts (binaire, image de conteneur).

Pendant l'opération

  • [ ] Exécutez les étapes de mise à niveau ou de migration comme documenté.
  • [ ] Surveillez les journaux et les vérifications de santé en temps réel.
  • [ ] Enregistrez les commandes exactes et leurs sorties pour le runbook.
  • [ ] Si une étape échoue ou montre une sortie inattendue, arrêtez-vous et évaluez avant de continuer.
  • [ ] Pour les mises à niveau progressives dans Kubernetes, surveillez kubectl rollout status jusqu'à la fin.

Après l'opération

  • [ ] Vérifiez la nouvelle version avec minio --version ou équivalent.
  • [ ] Exécutez mc admin info pour confirmer que tous les lecteurs sont sains.
  • [ ] Testez les opérations S3 de base : lister, mettre, obtenir, supprimer.
  • [ ] Testez la connectivité et les fonctionnalités des applications.
  • [ ] Vérifiez les journaux d'erreurs sur une période (par exemple, 24 heures).
  • [ ] Mettez à jour la documentation et les runbooks avec la nouvelle version et tout changement de configuration.
  • [ ] Si tout est stable, supprimez les anciens conteneurs ou binaires après une période de rétention.

Conclusion

La mise à niveau et la migration de MinIO sont gérables lorsque vous suivez un processus opérationnel discipliné. Commencez par un inventaire complet de l'état actuel. Faites le plus petit changement possible, qu'il s'agisse de mettre à jour une image de conteneur ou de mettre en miroir des données vers un nouveau cluster. Vérifiez le résultat avec des commandes explicites et des sorties attendues. Et ayez toujours un plan de retour en arrière testé.

Les exemples de ce guide sont génériques mais adaptables à votre environnement. Les principes clés restent : observer avant de changer, limiter le rayon d'impact, protéger les valeurs sensibles, vérifier les résultats et documenter les étapes de récupération. En appliquant ces pratiques, vous réduisez le risque de temps d'arrêt et de perte de données lors des opérations MinIO.

Prochaine étape : identifiez la prochaine mise à niveau ou migration que vous devez effectuer, parcourez la liste de contrôle de l'inventaire de la version et de l'environnement, et pratiquez la procédure dans un environnement non productif. Gagnez en confiance avant de toucher à la production.

Recherches connexes

Score de qualité de l’article

Utilité pour le lecteur 100%
  • check_circle Guide prêt à lire
  • check_circle Exemples pratiques inclus
  • check_circle URL d’article optimisée pour le SEO