Copias de seguridad
Situación actual (2026-10-20): ⚠️ no hay copias recuperables
| Mecanismo | Qué protege | Dónde guarda | Estado |
|---|---|---|---|
Velero, schedule daily-backup (02:00, retención 7 días) |
Solo objetos de Kubernetes (manifiestos), de 13 namespaces | MinIO dentro del propio clúster (bucket velero) |
❌ No existe ningún Backup. La ejecución del 2026-10-20 a las 02:00 se queda en Setting up backup store to persist the backup y no termina. |
| Snapshots de Longhorn | Contenido de los volúmenes Longhorn | Los mismos discos del clúster | Solo snapshots manuales u ocasionales. Sin backup target ni recurring jobs. |
| Snapshots de etcd de k3s | Estado del control-plane | /var/lib/rancher/k3s/server/db/snapshots/ en cada master |
✅ Funciona. Por defecto en k3s: cada 12 h (00:00 y 12:00), se guardan 5 de ~120 MB. Pero están en el mismo disco del master. |
local-path |
— | — | Sin copia |
| Este repositorio | Configuración declarativa (values de Helm y manifiestos) | GitHub | ✅ (sin secretos) |
Problemas de diseño:
- Velero no copia el contenido de los volúmenes. No tiene node-agent (kopia) ni snapshots CSI (
snapshotsEnabled: false). Restaurar un namespace recrearía los objetos con los volúmenes vacíos. Ya pasó con n8n en julio. - El destino está dentro del clúster que se quiere proteger. Si se pierde el clúster o el volumen de MinIO, se pierden también las copias.
- Los datos más valiosos están en
local-path(Postgres central, Postgres de Jira, Kafka y Jenkins), sin réplica y sin copia.
Diseño objetivo
Postgres (pg_dump, CronJob diario) ─┐
Longhorn recurring backup ──────────┼──► S3 FUERA de casa (Backblaze B2, OVH Object Storage…)
Velero + kopia (node-agent) ────────┘ cifrado, versionado y con retención
etcd snapshots k3s (--etcd-s3) ─────────────►
Pasos, por orden de impacto:
- Volcados lógicos de Postgres (central y Jira) con un CronJob de
pg_dumphacia S3 externo. Es lo más barato y lo que más protege. - Backup target de Longhorn apuntando a S3 externo, con un
RecurringJobdiario de backup (no solo snapshot). - Velero: activar
deployNodeAgent: trueydefaultVolumesToFsBackup: true, y cambiar elBackupStorageLocationa S3 externo. - etcd:
--etcd-s3con el mismo bucket externo. - Probar una restauración de verdad en un namespace de prueba. Una copia que nunca se ha restaurado no es una copia.
Comandos útiles
# Estado de Velero
kubectl -n velero get schedule,backup,backupstoragelocation
kubectl -n velero logs deploy/velero --since=24h | grep -iE 'error|daily-backup' | tail
# Snapshots de etcd (en un master)
sudo k3s etcd-snapshot list
sudo k3s etcd-snapshot save --name manual-$(date +%F)
# Volcado puntual del Postgres central
kubectl -n infra-db exec postgres-central-postgresql-0 -- \
sh -c 'PGPASSWORD="$POSTGRES_PASSWORD" pg_dumpall -U postgres' | gzip > postgres-central-$(date +%F).sql.gz