Hola a todos, y bienvenidos nuevamente a este blog. Es esta oportunidad hablaremos nuevamente de Kubernetes, y de como instalar y configurar vSphere Container Storage Plug-in como CSI driver para Persistent Volumes en K8s.

CSI fue desarrollado como un estandar para exponer sistemas de almacenamientos, ya sea basado en bloques o en archivos, a cargas de trabajo corriendo como contenedores/pods en Kubernetes.  Un CSI Driver en Kubernetes permite, mediante esta integración con sistemas de almacenamiento, la creacion de Persistent Volumes (PV) que luego pueden ser utilizados por pods de Kubernetes.

Si tuvieramos un cluster de Kubernetes sobre algún proveedor de Cloud como AWS EKS, Azure AKS o Google GKE, un CSI Driver compatible con el proveedor de cloud ya estaría instalado por defecto, por lo que podriamos crear PVs en Kubernetes utilizando los sistemas de almacenamiento del proveedor de Cloud.    Por ejemplo, en el caso de AWS EKS, podriamos crear un PV utilizando AWS EBS (Elastic Block Store), sin tener que instalar ningún componente extra, ya que el cluster de Kubernetes montado con AWS EKS incluye el CSI Driver instalado por defecto.

Ahora, que pasa si tenemos un cluster de Kubernetes On-premises, ya sea un cluster creado manualmente con Kubeadm o desplegado mediante alguna distribución comercial como OpenShift, y deseamos montar PVs en sistemas de almacenamiento que tengamos en nuestra propia infraestructura?   Pues para eso debemos instalar un CSI Driver adecuado para el almacenamiento que queramos utilizar.   Existen multiples opciones de CSI Drivers, como por ejemplo para NetApp, Dell EMC, e incluso para Synology, que es el almacenamiento que utilizo en mi homelab.

Como no podia ser de otra forma, si en nuestra infraestructura contamos con un cluster de vSphere, es posible también instalar el CSI Driver para vSphere, de manera de poder crear PVs utilizando los Datastores de vSphere como medio de almacenamiento.  Y esto es justamente lo que detallaremos a continuación

 

Lista de materiales

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

Instalar el vSphere Cloud Provider Interface

Veremos ahora la primera parte del procedimiento, que consiste en instalar el vSphere Cloud Provider Interface:

  • Identificamos la versión mayor de Kubernetes y la añadimos a una Variable llamada VERSION.   En este ejemplo, la version es 1.23.6, por lo que la versión mayor que debemos añadir a la variable seria simplemente 1.23.
Copy to Clipboard
  • Descargamos el fichero vsphere-cloud-controller-manager.yaml
Copy to Clipboard

 

 

  • Editamos el fichero vsphere-cloud-controller-manager.yaml para incluir los detalles de vCenter Server
    • FQDN
    • Username
    • Password
    • Labels (opcional)
Copy to Clipboard
  • Desplegamos el vSphere Cloud Provider Interface con Kubctl
Copy to Clipboard

 

Instalar el vSphere Container Storage Plug-in

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

  • En primer lugar creamos el namespace llamado vmware-system-csi.  Podemos hacer esto con una de estas opciones de linea de comando:
Copy to Clipboard

 

  • Luego debemos aplicar un Taint al nodo Master del cluster de Kubernetes y verificamos que se haya aplicado correctamente
Copy to Clipboard

 

  • Descargamos el certificado de vCenter Server para habilitar una comunicación segura entre Kubernetes y vSphere
Copy to Clipboard

 

  • Creamos un ConfigMap a partir de el certificado que hemos descargado
Copy to Clipboard

 

  • El siguiente paso será crear un un archivo de configuracion(csi-vsphere.conf) con los parametros de acceso a vCenter Server y el uso del certificado
Copy to Clipboard

 

  • Creamos el Kubernetes Secret con el fichero creado en el paso anterior (no olvidemos eliminar el fichero de configuración luego de crear el Secret, para no exponer las credenciales)
Copy to Clipboard

 

  • Ahora toca descargar el fichero YAML que utilizaremos para desplegar el CSI Driver
Copy to Clipboard

 

  • Editamos el fichero YAML para montar el ConfigMap creado previamente como un Volumen para acceder al certificado del vCenter Server.  Esto se debe realizar en los contenedores vsphere-syncer y vsphere-csi-controller (Ver imagenes a continuación).
Copy to Clipboard

 

              

 

  • Una vez modificado el fichero YAML, solo queda desplegar el CSI Driver utilizando dicho fichero
Copy to Clipboard

 

  • Verificamos que las instancia de vSphere CSI Controller se está ejecutando en el Control Plane, y que las instancias vSphere CSI Nodes se ejecutan en los nodos Worker
Copy to Clipboard

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

 

Pruebas con el CSI Driver

Ya tenemos desplegado el CSI Driver y el Storage Class, por lo que estamos en condiciones de poder crear Persistent Volume Claims con Persistent Volumes manuales o dinamicos.  En este caso, podemos crear un PVC que nos permita crear un PV de manera dinamica con el siguiente codigo YAML de ejemplo

Copy to Clipboard

 

Una vez desplegado el fichero YAML, podemos ver como se ha creado el PVC y de manera automatica se ha creado el PV utilizando el CSI Driver de vSphere.

Copy to Clipboard

 

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