Este repositorio contiene una infraestructura de almacenamiento de objetos de grado profesional basada en MinIO, diseñada específicamente para soportar cargas pesadas de backup (como Velero) de forma estable y resiliente.
A diferencia de un despliegue básico, esta solución utiliza una arquitectura de tres capas:
- Capa de Optimización (OS Hardening): Ajusta el Kernel de Linux (límites de archivos, stack TCP, I/O buffers) para permitir miles de conexiones simultáneas sin degradación de rendimiento.
- Capa de Proxy (Nginx): Actúa como terminador de tráfico y balanceador. Nginx está configurado para manejar subidas de archivos sin límite de tamaño y optimizar el streaming de datos hacia MinIO.
- Capa de Almacenamiento (MinIO Distributed Virtual): Configurado en modo Erasure Coding (usando 4 drives virtuales). Esto permite la recuperación automática de datos si se detecta corrupción a nivel de bits (bit-rot protection).
docker-compose.yml: Define los servicios MinIO y Nginx, sus límites de recursos y redes internas.Makefile: El orquestador principal. Automatiza todo el ciclo de vida del despliegue.scripts/:hardening.sh: Aplica el tuning del sistema operativo (sysctl,limits.conf).setup-disk.sh: Prepara el disco/dev/sdbcon XFS o prepara el entorno en el disco principal.setup-buckets.sh: Automatiza la creación de usuarios, buckets, políticas IAM y reglas de ciclo de vida.install-docker.sh: Instalador oficial de Docker Engine y Compose V2.
configs/:nginx.conf: Configuración optimizada para S3 y streaming de datos.policy.json: Política IAM de "mínimo privilegio" para el cliente de backups.
Copia la plantilla de entorno y configura tus credenciales:
cp .env.example .env
chmod 600 .env
nano .envAsegúrate de cambiar las contraseñas predeterminadas.
Ejecuta el flujo completo con un solo comando:
make allEste comando realizará: Install Docker -> Setup Disk -> OS Hardening -> Launch Stack -> Provision Buckets.
| Comando | Descripción |
|---|---|
make harden |
Aplica ajustes de rendimiento al Kernel (requiere sudo). |
make setup-disk |
Formatea/Monta el disco dedicado o prepara carpetas locales. |
make up |
Levanta los contenedores de MinIO y Nginx. |
make configure |
Crea el bucket, el usuario y la regla de borrado automático (>60 días). |
make verify |
Prueba la conexión HTTP contra el proxy Nginx. |
make all |
Ejecuta toda la secuencia anterior de forma ordenada. |
Tras completar el despliegue, utiliza estos datos en tu cluster de Kubernetes:
- Endpoint:
http://<IP-DE-TU-VM>:9000(olocalhostsi es prueba local). - Console (UI):
http://<IP-DE-TU-VM>:9001 - Bucket:
velero-backups - Access Key: El valor de
MINIO_STORAGE_USERen tu.env. - Secret Key: El valor de
MINIO_STORAGE_PASSWORDen tu.env. - Región:
minio
Añade estos scripts a tu crontab -e para asegurar la disponibilidad:
# Autoreparación si el contenedor falla (cada 5 min)
*/5 * * * * /ruta/al/proyecto/scripts/healthcheck-cron.sh >> /var/log/minio-health.log 2>&1
# Alerta de espacio en disco (cada hora)
0 * * * * /ruta/al/proyecto/scripts/disk-alert.sh >> /var/log/minio-disk.log 2>&1Gracias al modo Erasure Coding, MinIO verifica constantemente la integridad de tus backups. Si un bloque de disco falla, MinIO reconstruirá el archivo original usando los bloques de paridad de los otros "drives" virtuales.