¿Cuantas cosas le caben al cluster? De momento ahí va una más! Le toca el turno a Home Assistant.
Home Assistant (HA) es un asistente o controlador domótico diseñado en primera instancia para el hogar. No voy a entrar más en detalle acerca de HA ya que no es el propósito de esta entrada. Sí que voy a detallar como se instala en un cluster kubernetes y en más en concreto en mi flamante cluster k0s.
A continuación puedes ver el Deploy que utilizo. Realmente es muy sencillo siendo únicamente destacable que la configuración la dejo en un recurso compartido nfs. De esta manera no tengo que complicarme la vida con ConfigMaps ni PVs, delegando la persistencia en el NAS de QNAP.
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: homeassistant
name: homeassistant
namespace: homeassistant
spec:
replicas: 1
selector:
matchLabels:
app: homeassistant
template:
metadata:
labels:
app: homeassistant
spec:
volumes:
- name: ha-storage
nfs:
server: nfs-server
path: "/DPVs/homeassistant"
containers:
- image: homeassistant/home-assistant
name: home-assistant
volumeMounts:
- mountPath: "/config"
name: ha-storage
Además del Deploy es necesaria la creación del Servicio, del Ingress y del propio Namespace. Esta parte no la detallo ya que es la misma que en la anteriores entradas de kubernetes. k0s –
apiVersion: v1
kind: Namespace
metadata:
name: homeassistant
---
apiVersion: v1
kind: Service
metadata:
name: homeassistant
namespace: homeassistant
labels:
app: homeassistant
spec:
ports:
- port: 8123
targetPort: 8123
selector:
app: homeassistant
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
# Añado el cluster-issuer definido para letsencrypt
cert-manager.io/cluster-issuer: letsencrypt-production
name: homeassistant
namespace: homeassistant
spec:
rules:
- host: tudominio.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: homeassistant
port:
number: 8123
tls:
- hosts:
- tudominio.com
# En este certificate cert-manager guarda el certificado.
# kubectl get certificate -n homeassistant
secretName: midomo-cert
Después de un fructuoso kubectl apply -f homeassistant.yml ya tenemos disponible Home Assistant.