Velero: Programar copias de seguridad en Kubernetes

Hace unos días os hablé de la excelente herramienta de copias de seguridad para Kubernetes, llamada Velero. En esa entrada os comenté lo fácil de su instalación y primera configuración., utilizando como almacenaje MinIO dentro un entorno de Kubernetes con K3S. Pues bien, hoy quiero seguir hablando de Velero, pero en este caso sobre como programar las copias de seguridad.

Logo oficial de Velero

Antes de continuar, os quiero recordar que el entorno con Kubernetes lo tengo creado en mi proveedor de confianza Clouding.io. Que como sabéis hace muchos años que trabajo con ellos, y siempre me han dado un servicio excelente.

Programar copias de seguridad en Kubernetes con Velero

La verdad es que es bastante sencillo, ya que recuerda bastante a como se programan tareas en sistemas tipo UNIX o GNU/Linux, mediante cron y crontab.

Tal y como vimos en la entrada anterior, para trabajar con la herramienta, por ejemplo para crear una copia de seguridad manual, sería así:

velero backup create copia-seguridad-ejemplo --include-namespaces nombres-de-los-namespace

Esto sería la manual, si queremos programar una, sería similar a esto:

velero schedule create ejemplo-copia-programada --schedule="0 * * * *" --include-namespaces nombre-de-los-namepsace

También se podría programar así:

velero schedule create ejemplo-copia-cada-hora --schedule="@hourly" --selector app="seleccionamos las apps"

Aunque estén programadas, también se pueden activar de forma manual:

velero backup create --from-schedule copia-seguridad-ejemplo

Vamos a crear una copia de ejemplo, para este caso veamos primero los espacios de nombres que tenemos disponibles:

operador@servmaster:~/drupal-in-k3s# kubectl get namespaces
NAME              STATUS   AGE
cert-manager      Active   16d
default           Active   16d
drupal1           Active   23m
kube-node-lease   Active   16d
kube-public       Active   16d
kube-system       Active   16d
minio-dev         Active   5d23h
velero            Active   5d23

Tal y como se observa tenemos un buen puñado de espacios de nombres, crearemos un bakcup diario, que se ejecutará a las tres de la mañana:

velero schedule create daily --schedule="0 3 * * *"" \
--include-namespaces cert-manager,default,kube-node-lease,\
kube-public,kube-system

Con el resultado:

Schedule "daily" created successfully

Veamos si la programación aparece en la lista:

velero get schedule

Con el resultado, en mi caso:

Vemos la lista de los backups programados

Vamos a forzar su ejecución, así:

velero backup create --from-schedule daily

Con el resultado:

Forzamos la ejecución de la copia de seguridad

Tal y como nos indica el mensaje, podemos comprobar el estado del backup con el comando y parámetro «velero backup describe«, tal que así:

Comprobamos el estado del backup

Si añadimos el parámetro «–details» no aparecerá la información ampliada.

Y si queremos ver todos los backup que ya se han hecho:

velero get backup

En mi caso:

Listamos los backups que ya se han hecho

Si tenemos alguna duda, también podemos consultar el panel web de MinIO:

Conprobamos si realmente la copia está hecha

También podemos borrar los backup, lo haríamos así:

velero delete backup "nombre del backup"

Y es todo por hoy. Os recuerdo que podéis consultar la documentación oficial en inglés: Velero Documentation