Kubernetes,  QNAP

Kubernetes. k0s – Instalación de homeassistant

¿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.