Kubernetes,  QNAP

kubernetes. k0s – Instalar esphome. Conectar un POD a un puerto USB

Relacionado con –> Kubernetes. k0s – Instalación de homeassistant

Hace tiempo instalé un homeassistant en el clúster de kubernetes. Ahora le ha tocado el turno a un compañero inseparable como es esphome, y así poder configurar mis esp8266 también desde kubernetes.

Una de las necesidades de esphome es que va a necesitar un acceso físico al puerto usb del NAS, que es donde voy a pinchar un adaptador USB <–> Serial TTL. La verdad es que es un poco extraño mezclar un POD con un puerto físico, pero es la necesidad existente y como siempre lo importante es lo aprendido por el camino.

El esquema a alto nivel sería como el de la imagen siguiente:

El primer lugar, tenemos la comunicación física entre el NAS y el puerto USB, donde he pinchado el conversor TTL Serial <–> USB. Después tenemos que entregar este dispositivo a una Máquina Virtual (VM). Finalmente esta VM tiene que compartir el dispositivo al contenedor que corre esphome.

La primera y segunda parte se hace desde el NAS. En el caso de QNAP, en la aplicación “VirtualizationStation” basta con decirle que conectamos un dispositivo USB a la VM en concreto. Yo elijo un nodo del cluster en concreto (k0s-node-1). El dispositivo lo reconoce como “HL-340 USB-Serial adapter”.

No es posible conectar el USB a todos los nodos del cluster por lo que tenemos que indicarle a kubernetes que siempre levante el POD de esphome en el nodo k0s-node-1. Sí, está claro que esto va en contra de la filosofía de k8s, donde los nodos son ganado. Para conseguirlo, basta con etiquetar al nodo en concreto, para después en el despliegue hacer referencia a esta etiqueta. En este caso le he puesto la etiqueta tipo=hardware.

Otro aspecto importante es como le decimos a kubernetes el mapeo necesario para que el puerto usb llegue hasta el POD. Si vemos como lo ve cada elemento de la cadena; NAS – VM – POD.

El deploy completo de esphome sería (estate pendiente de los comentarios, especialmente al hostPath):