Home assistant v High Availability

Čo je to Home Assistant?

Home Assistant je bezplatný opensource softvér pre automatizáciu domácnosti. Je nezávislou platformou pre integráciu smart zariadení a IoT od rôznych výrobcov. Slúži ako centrium na ovládanie zariadení v inteligentných domácnostiach. Jeho hlavnou výhodou je lokálna kontrola, otvorenosť a zachovanie súkromia. Viac info

Ako si rozbehnúť Home Assistenta v kubernete

  1. Vyberte si zariadenie, na ktorom bude Home Assistant bežať. Ja osobne vzhľadom na ceny Raspberry PI odporúčam lacný NUC ako napr. GMKTec NucBox G3

  2. Nainštalujte vhodný operačný systém. Ak chcete použiť microk8s s ktorým je najmenej roboty, nainštalujte Ubuntu. GMKTec už má nainštalovaný Windows 11. Ak by ste niekedy chceli využiť tento NUC ako Microsoft Teams Room, tak odporúčam zmenšiť partíciu windowsu a spraviť dual boot. Kľúče windowsu by mali byť v TPMku, ale tak človek nikdy nevie. Návod inštalácie Ubuntu dual boot s Windows 11
  3.  Nainštalujte microk8s
  4. Ja osobne zapínam dns, prometheus, hostpath-storage, nginx ingress, cert-manager. Nginx, prometheus a cert-manager môžete doinštalovať aj neskôr helmom v cluster management projekte a budete to mať viac pod kontrolou. Pri viac nodovom clustri tiež možno postačí hostpath prípadne, ak potrebujete „distributed storage“, môžete použiť nfs pre najmenej odvážnych, openebs pre odvážnejších a rook-ceph pre najodvážnejších.
  5. Odporúčam použiť OpenLens ako kukátko do kubernetu.
  6. V GitLab-e (cloudový/hostovaný) si vytvorte nový projekt cez Create from template a vyberte GitLab Cluster Management
  7.  V GitLab-e otvorte Operate -> Kubernetes Clusters a dajte Connect a cluster (agent). Nazvite si ho rozumne ako napr. home-prod. A výsledný príkaz skopírujte a vykonajte nad vašim novým kubernetes clustrom, čím sa nainštaluje GitLab Agent a po chvilke ho aj uvidíte v zozname.
  8. Do .gitlab-ci.yml nezabudnite pridať KUBE_CONTEXT
  9. Môžete deployovať helm charty a to jednoducho vytvorením novej zložky (napr. homeassistant) v applications, vytvorením súboru helmfile.yaml a values.yaml, nezabudnite pridať referenciu do helmfile.yaml v roote git repozitára.
  10. Ja osobne používam staré helm charty, v truechartoch určite nájdete aj novšie. V helmfile.yaml mám:
    repositories:
    - name: k8s-at-home
      url: https://k8s-at-home.com/charts/
    
    releases:
    - name: home-assistant
      namespace: default
      chart: k8s-at-home/home-assistant
      version: 13.4.2
      installed: true
      values:
        - values.yaml
    
  11.  A do values.yaml niečo na štýl:
    env:
      TZ: "Europe/Bratislava"
    
    image:
      tag: 2024.5.5
    
    hostNetwork: true
    
    securityContext:
      privileged: true
      capabilities:
        add: ["SYS_ADMIN","NET_ADMIN"]
    
    persistence:
      zigbee:
        enabled: true
        type: hostPath
        hostPath: /dev/ttyACM0
      bluetooth:
        enabled: true
        type: hostPath
        hostPath: /var/run/dbus
      config:
        enabled: true
        storageClass: microk8s-hostpath
    
    ingress:
      main:
        enabled: true
        annotations:
          nginx.org/websocket-services: home-assistant
          kubernetes.io/ingress.class: public
          kubernetes.io/tls-acme: "true"
        hosts:
          - host: home.yourdomain.sk
            paths:
              - path: /
                pathType: Prefix
        tls:
          - secretName: home-assistant-tls
            hosts:
              - home.yourdomain.sk
  12. Pri update stačí zdvihnúť verziu image tagu. Ak chcete autodetekovať zariadenia na sieti, potrebujete securityContext na priviledged. Ak máte USB dongle na zigbee, tak potrebujete nakonfigurovať persistence zigbee a podobne pre bluetooth.

  13. Pre „vystrčenie“ von aplikácie použite ingress. Ak ste nainštalovali a nakonfigurovali aj cert manager tak sa pri tejto konfigurácii automaticky nastaví aj https certifikát z letsencryptu

  14. Nezabudnite nakonfigurovať firewall / router, aby smeroval porty 80 a 443 na NUC s microk8s
  15. Ak chcete spúšťať GitLab Runner lokálne môžete ho povoliť a nakonfigurovať v applications
  16. Ak chcete použiť whisper a piper, tak tu je príklad pre piper helmfile.yaml. values.yaml som nekonfiguroval:
    repositories:
    - name: k8s-at-home
      url: https://k8s-at-home.com/charts/
    
    releases:
    - name: piper
      namespace: default
      chart: k8s-at-home/piper
      version: 0.1.0
      installed: true
      values:
        - values.yaml
    
  17. A helmfile.yaml pre whisper:
    repositories:
    - name: k8s-at-home
      url: https://k8s-at-home.com/charts/
    
    releases:
    - name: whisper
      namespace: default
      chart: k8s-at-home/whisper
      version: 0.1.0
      installed: true
      values:
        - values.yaml
    
  18. Pre lokálneho „Števka“ môžete potom použiť kombináciu Whisper, LocalAI a Piper. Možno bude potrebný plugin do HA.

Zaujala Vás úroveň automatizácie ktorú používame v ED?

  • V EDčku inštalujeme a prevádzkujeme Kubernetes clustre pre zákazníkov v Enterprise SLA. 
  • Miesto ručnej inštalácie využívame Ansible alebo Terraform skripty.
  • Naši Devops odborníci si vedia poradiť s rôznymi kombináciami inštalácie a prostredia od fyzického železa, cez setup virtualizátorov, inštaláciu a provisioning VM, až po setup prostredia v cloude (Amazon, Google, Oracle, Azure, vládny cloud …)
  • Princípom Cluster management projektov, helmfiles a kvalitne spracovaného CI/CD, vieme flexibilne vybudovať kompatibilnú aplikačnú platformu kdekoľvek, a preto sa naši developeri tešia z vysokej konzistencie prostredí aj napriek rôznym požiadavkám zákazníkov.