Qué hace este laboratorio
Este lab reproduce en un entorno desechable la guía para migrar de MinIO a Garage con Docker. Partimos de un MinIO con el bucket app-data y 300 objetos, levantamos Garage v2.4.1 en el mismo proyecto de Compose, copiamos con rclone 1.75.1 y comprobamos el resultado con rclone check --download: 0 diferencias y 300 ficheros coincidentes.
El MinIO de partida usa cgr.dev/chainguard/minio, porque minio/minio ya no se descarga de Docker Hub. Si te has topado con ese error, la guía de pull access denied for minio/minio explica las alternativas. La imagen de Chainguard corre con el usuario 65532 y solo publica latest en su plan gratuito.
Cómo se configura Garage para la migración
El garage.toml del lab sigue la guía de inicio de Garage con dos cambios: la región us-east-1, que es la que ya usan los clientes de MinIO, y los datos en /var/lib/garage. Los secretos se generan con openssl en un .env, como en el lab de gestión de secretos en Docker. La opción --single-node crea la distribución del clúster en el primer arranque, así que garage health ya muestra el clúster sano.
Copia, verificación y cambio de clave
rclone copia de un servidor S3 a otro por la red de Compose, con la plantilla provider = Other de la documentación de clientes de Garage. La verificación con rclone check y --download compara el contenido de cada objeto, no solo su ETag. Al final paramos MinIO e importamos en Garage la clave de la aplicación con garage key import --yes: la misma clave lee los 300 objetos desde el puerto 3900.
Garage no tiene versionado, bloqueo de objetos ni políticas de bucket; la guía escrita detalla qué se pierde y cuándo no te conviene. Si prefieres conservar esas funciones, mira la migración de MinIO a RustFS. Y antes de cualquier migración, guarda una copia de los datos como en el lab de copias de seguridad de volúmenes Docker.
Preguntas frecuentes
¿Hace falta configurar la distribución del clúster en Garage v2.4.1?
No con un solo nodo. Desde la v2.3.0, garage server –single-node crea la distribución en el primer arranque y la conserva en los siguientes. En el lab, garage health muestra el clúster HEALTHY y las 256 particiones con quórum sin ejecutar garage layout.
¿Por qué usar rclone check con –download?
Porque sin –download rclone compara tamaño y suma MD5, y los objetos subidos por partes tienen un ETag que no es el MD5 del contenido. Con –download descarga los dos lados y compara los bytes; en el lab termina con 0 diferencias y 300 ficheros coincidentes.
¿Pueden mis aplicaciones seguir usando las claves de MinIO en Garage?
Sí, con garage key import –yes, siempre que el identificador tenga al menos 8 caracteres y el secreto al menos 16. Después concede permisos con garage bucket allow. Úsalo como puente para el día del cambio y rota esas claves más adelante.
¿Qué región S3 debo poner en Garage al migrar desde MinIO?
La que ya usan tus clientes. MinIO sin región configurada acepta casi cualquiera, pero Garage solo acepta la de s3_region. Este lab usa us-east-1 en garage.toml y en rclone.conf para que coincidan.