Hola a todos, y bienvenidos nuevamente a este blog. Es esta oportunidad hablaremos nuevamente de Kubernetes y de CSI Drivers, en este caso para poder integrar Kubernetes con un almacenamiento Synology que permita crear Persistent Volumes en K8s en dicho storage.  Esto puede ser especialmente util en entornos Home Lab como el mio, donde es bastante común contar con almacenamiento tipo NAS de Synology o QNAP.

Ya en el post anterior describimos que eran los CSI Drivers y cual era su proposito principal, por lo que les recomiendo leer el post Kubernetes – Desplegar vSphere Container Storage Plug-in (vSphere CSI)  si quieren saber más-

 

Lista de materiales

Para poder desplegar el Synology CSI Driver, también llamado vSphere Container Plug-in, debemos contar al menos con lo siguiente:

  • Un cluster de Kubernetes versión 1.19 o superior
  • La herramienta de linea de comando kubectl
  • Synology NAS utilizando la versión DSM 7.0 o superior.
  • Tanto los Volume Snapshot CRDs como el Snapshot Controller debe ser instalado en el cluster de Kubernetes si se desea utilizar la funcionalidad de snapshots de los PV.
  • Al menos un Storage Pool y un Volumen deben haber sido creados e inicializados en Synology DSM
  • Todos los nodos Workers deben ser capaces de conectarse con el storage Synology

Instalar los pre-requisitos

Veremos ahora la primera parte del procedimiento,que será la creación de los Volume Snapshot CDRs y del Snapshot Controllers.

  • Lo primero que debemos hacer es descargar los ficheros YAML para crear los Volume Snapshot CDRs
Copy to Clipboard

 

  • Luego, sin necesidad de realizar modificaciones en los fiheros YAML podemos aplicarlos utilizando Kubectl para poder crear los CDR requeridos en nuestro cluster Kubernetes
Copy to Clipboard

 

  • Luego procedemos a descargar los ficheros YAML requeridos para desplegar el Snapshot Controller
Copy to Clipboard

 

  • En este caso, el único cambio opcional que necesitan realizar, es definir un namespace en particular para desplegar el Snapshot Controller, de lo contrario se desplegará en el namespace default.  Importante recordar que en caso de elegir un namespace especifico, este debe ser utilizado en TODOS los componentes descritos en AMBOS ficheros YAML
Copy to Clipboard

 

 

  • Ya luego simplemente aplicamos los ficheros YAML utilizando Kubectl para desplegar el Snapshot Controller
Copy to Clipboard

 

Instalar el CSI Driver para Synology

Ya tenemos la primera parte lista, ahora toca ir al procedimiento de instalación del CSI Driver para Synology

  • Clonamos el repositorio Git que contiene el CSI Driver de Synology
Copy to Clipboard

 

  • Creamos el fichero client-info.yml a partir del template que viene en el repositorio Git
Copy to Clipboard

 

  • Editamos el fichero client-info.yml para configurar la conexión con Synology DSM.  Se debe especificar la dirección del DSM, el puerto (5000 para HTTP o 5001 para HTTPS), usuario y password, como lo ven a continuacion.
Copy to Clipboard

 

  • Ejecutamos el script de instalación para el CSI Driver en modo FULL, de manera de desplegar todos los servicios CSI, incluyendo la opcion de Snapshot para los PV
Copy to Clipboard

 

  • Verificar que el estado de todos los Pods del driver CSI estan en estado Running
Copy to Clipboard

 

  • El ultimo paso es crear uno o más Storage Class en Kubernetes que nos permita utilizar el CSI Driver que acabamos de desplegar:
Copy to Clipboard

 

 

Verificar funcionamiento

Para verificar el funcionamiento de el Synology CSI Driver, basta con crear un PVC  que utilice el Storage Class creado previamente, y asegurarse que el PV haya sido creado apropiadamente como vemos en las imagenes a continuacion:

 

 

 

 

Con ese completamos este procedimiento en Kubernetes, espero que les sea de utilidad y nos vemos en otra ocasión!!!