Kubernetes – Respaldando volúmenes y configuraciones de Kubernetes con Velero.

Kubernetes – Respaldando volúmenes y configuraciones de Kubernetes con Velero.

¿Otro post sobre respaldos?

Si, pero esta vez además de poder respaldar la data de un volumen, también podremos respaldar la información necesaria de un Deployment para ser recuperado o migrado mas adelante en caso de fallas o en una migración.

Velero

Anteriormente conocido como Heptio Ark, nos permite realizar respaldos tanto como de los volúmenes así también de los recursos en un cluster de Kubernetes. ¿Qué me permite hacer?

  • Respaldos de un cluster y restaurarlos en caso de perdidas.
  • Migración de un cluster a otro, sin importar que sea en premisa o en la nube.
  • Replicar un ambiente de producción a desarrollo o QA.

Instalación

Los requisitos para realizar una instalación de Velero son:

  • Acceso a un cluster de Kubernetes mayor a v1.10 con DNS y CNI habilitado.
  • kubectl instalado en la misma maquina donde se realizará la instalación.

Velero usa object Storage para almacenar los respaldos asociados a las tareas de backup, en mi caso estaré usando MinIO. Como en el caso anterior, no se mostrará la instalación de un servidor Minio.

Lo primero es que necesitamos la utilidad cli de velero para inicializar sus componentes en el cluster de Kubernetes.

https://github.com/vmware-tanzu/velero/releases/latest

Descargamos la última versión de dicha utilidad y la colocamos en nuestro path de ejecución.

Como aun no se han instalado los componentes de Velero en el cluster, tenemos un mensaje de error validando la versión que debería de estar en él.

Algo que tenemos que saber es que, para tener respaldos de volúmenes debemos inicializar Velero con soporte Restic, esto lo podemos indicar mientras lo inicializamos.

https://velero.io/docs/master/restic/

En el enlace anterior se puede encontrar información de esta integración y cuáles son sus limitantes.

¿Que nos está pidiendo la instalación de Velero?

–provider aws – Ya que Minio es una implementación del s3 de AWS necesitamos especificar este valor.

–plugins – al igual que el valor anterior, estamos usando una alternativa a s3.

–bucket – el nombre del bucket en Minio será velero.

–secret-file – un archivo con la información de login de Minio.

–use-volume-snapshots – hace falta investigar un poco más, pero entiendo que esto indica que si necesita hacer un respaldo de un volumen que no use la opción de snapshot proporcionada por el CSI.

–backup-location-config – información refernete a nuestro servidor Minio.

–use-restic – esto instalara un pod con restic para poder hacer respaldos de volúmenes.

 

Luego de ejecutar el comando de instalación, podemos validar que todo termino bien:

 

Uso de Velero en mi ambiente

En la implementación que he decido hacer, aunque velero fue instalado con soporte Restic, no estaré usando esa funcionalidad y solo realizare respaldos de los resources/recursos del cluster en caso de pérdida poder recrear todo lo que esta corriendo en el y restaurar desde Lonhorn+Minio.

velero backup create nxcloud-backup –selector app=nxcloud

Se le está instruyendo a velero que realice un respaldo de todo lo relacionado a la aplicación con el label app=nxcloud

Debemos recordar que solo está respaldando la información relacionada a configuraciones y no volúmenes.

Por el momento es suficiente y más adelante estaré probando las recuperaciones de Velero junto a longhorn.

 

Autor: Ariel Antigua

Automation guy with a love for Containers!