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
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
- 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
- Nainštalujte microk8s
- 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.
- Odporúčam použiť OpenLens ako kukátko do kubernetu.
- V GitLab-e (cloudový/hostovaný) si vytvorte nový projekt cez Create from template a vyberte GitLab Cluster Management
- 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.
- Do .gitlab-ci.yml nezabudnite pridať KUBE_CONTEXT
- 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.
- 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
- 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
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.
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
- Nezabudnite nakonfigurovať firewall / router, aby smeroval porty 80 a 443 na NUC s microk8s
- Ak chcete spúšťať GitLab Runner lokálne môžete ho povoliť a nakonfigurovať v applications
- 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
- 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
- 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.