Crear backups con Velero

Introducción
Velero es una herramienta de código abierto para realizar copias de seguridad de tus clústeres de Kubernetes, ¡esto también incluye tus volúmenes de Kubernetes! La forma en que Velero funciona es solicitando a la API de Kubernetes los manifiestos deseados que deseas respaldar, de esta manera no necesitas acceso directo a la base de datos de etcd. Esto es muy útil cuando se utilizan clústeres de Kubernetes administrados como AWS, GCP, Digital Ocean, etc. Ya que al usar clústeres administrados, no tienes acceso directo a los nodos maestros.

Como se describe en el diagrama anterior, el usuario crea un recurso de respaldo de Velero, luego el controlador de Velero instalado en el clúster solicita a la API de Kubernetes y realiza la copia de seguridad de los recursos deseados. Los datos de respaldo luego se pueden cargar en un S3 Bucket u cualquier otra ubicación de respaldo.
Restaurar desde una copia de seguridad es muy similar. Cuando el usuario crea un recurso de restauración, el controlador de Velero lo recopila, descarga los datos de respaldo y los restaura en el clúster. Lo bueno aquí es que Velero realiza una restauración no destructiva
, lo que significa que no eliminará ningún recurso existente en el clúster y los omitirá.
Si quieres saber más sobre cómo funciona Velero, haz clic aquí.
Pre-requisitos:
Antes de utilizar Velero necesitamos:
- Por supuesto, nuestro propio clúster de Kubernetes, que para fines de prueba puedes usar Kind.
- Un bucket S3 para almacenar nuestras copias de seguridad. Aquí utilizaremos MinIO.
- El cliente de Velero. En mi opinión, es la forma más sencilla de instalar, crear y restaurar copias de seguridad con Velero.
MinIO
Este es un simple docker-compose que implementa MinIO. Copia este archivo y ejecuta docker-compose up
Ve a http://localhost:9001, inicia sesión con admin/password
y crea un bucket llamado velero-backups
.
Cliente de Velero
Descarga la última versión aquí y extráela:
Mueve el ejecutable de velero
a la carpeta bin
(/usr/local/bin
) o añádelo a tu $PATH
.
Instalar Velero en tu clúster
La instalación por defecto de Velero requiere una ubicación de almacenamiento. En este caso, como estamos usando MinIO, crea un archivo llamado credentials-velero
con el nombre de usuario y la contraseña de MinIO
NOTA: En la nube, debes tener una accessKey y secretKey reales con los permisos adecuados para acceder a tu bucket. Además, dependiendo de la nube que estés utilizando, hay una lista de proveedores compatibles aquí. Dado que MinIO es compatible con AWS S3, estamos utilizando el complemento de Velero para AWS
Instala Velero configurando el proveedor, complemento, secretos y las configuraciones de ubicación de copia de seguridad:
Esto instalará el controlador de Velero en tu clúster con el espacio de nombres (namespaces) velero
. En este ejemplo, también estamos utilizando la integración con restic, que permite hacer copias de seguridad de nuestros volúmenes.
CONSEJO: Velero también puede crear spanshots de tus volúmenes si se utiliza un proveedor de nube compatible. De esta manera, no necesitarás la integración con restic
Crear una copia de seguridad
Con el cliente de Velero puedes crear diferentes tipos de copias de seguridad. La forma más rápida de hacer una copia de seguridad es crear copias por espacio de nombres (namespaces):
Esta operación no realizará una copia de seguridad de los volúmenes por defecto. Para hacerlo, asegúrate de añadir la anotación backup.velero.io/backup-volumes=<nombre-del-volumen-en-el-pod>
a los Pods donde se monte un volumen.
Por ejemplo, si tenemos un Pod de RabbitMQ con un volumen:
En este caso, necesitaríamos anotar kubectl annotate pod rabbitmq-server-0 backup.velero.io/backup-volumes=persistence
para que la copia de seguridad de Velero también guarde los datos del volumen.
Rutinas de copia de seguridad
También es posible configurar respaldos recurrentes utilizando rutinas. En este ejemplo, creamos un respaldo recurrente todos los sábados a las 23:00, incluyendo algunos espacios de nombres (namespaces), con una validez de respaldo de 21 días. Esto significa que los respaldos que tengan más de 21 días serán eliminados de la ubicación de almacenamiento y también de la lista de respaldos guardada en el clúster.
Una vez que se haya configurado la rutina (schedule), puedes ver una lista de los respaldos creados haciendo:
Para verificar la información sobre la rutinas de respaldos creada anteriormente:
Restaurar un respaldo
Para restaurar un respaldo:
Para saber qué respaldos tienes:
Si deseas apoyarme, invítame un café.