Home Assistant #
Quelle #
Alle Controller werden über das app-template Helm-Chart von BJW-S Labs bereitgestellt. Die Konfiguration ist auf zwei Values-Dateien aufgeteilt:
| Datei | Inhalt |
|---|---|
values.yaml |
Home Assistant, Matter-Server, OTBR |
values-mosquitto.yaml |
Mosquitto MQTT-Broker |
Dokumentation #
Die offizielle Dokumentation von Home Assistant ist unter www.home-assistant.io/docs/ zu finden.
Funktion #
Home Assistant (HA) ist eine Steuerungszentrale für Smart-Home-Geräte. Es integriert eine breite Palette von Geräten und Protokollen (Zigbee, Matter, Thread) und ermöglicht Automatisierungen, Geräteüberwachung und eine einheitliche Weboberfläche.
Netzwerk #
Alle drei Controller (Home Assistant, Matter, OTBR) nutzen kein hostNetwork, sondern eine dedizierte Macvlan-Verbindung ins Heimnetz über Multus (NetworkAttachmentDefinition: home-net). Jedem Controller wird eine statische Dual-Stack-Adresse aus dem Heimnetz-Subnetz zugewiesen.
Ein Init-Container (busybox) konfiguriert auf jedem Pod IPv6-Routing für das net1-Interface (RA + Route-Info).
Services & Ingress #
| Service | Typ | Port | Protokoll |
|---|---|---|---|
homeassistant |
ClusterIP (Dual-Stack) | 8123 | HTTP |
homeassistant-colot |
LoadBalancer (Dual-Stack) | 5683 | UDP (CoAP) |
matter |
ClusterIP (Dual-Stack) | 5580 | TCP |
otbr |
ClusterIP (Dual-Stack) | 8080 (Web), 8081 (REST) | HTTP |
mosquitto |
LoadBalancer (Dual-Stack) | 1883, 8883 | TCP |
Der Ingress wird über Traefik (websecure) mit TLS bereitgestellt. Die Middleware kube-system-localnet@kubernetescrd schränkt den Zugriff auf das lokale Netz ein. Das TLS-Zertifikat wird von cert-manager (letsencrypt-production) ausgestellt.
Speicher #
| PVC | Größe | Einbindung |
|---|---|---|
home-assistant-config |
100 Gi | Home Assistant /config |
home-assistant-matter |
1 Gi | Matter-Server /data |
home-assistant-otbr |
1 Gi | OTBR /data |
mosquitto-data |
100 Mi | Mosquitto /mosquitto/data |
Zusätzlich werden folgende Host-Pfade eingebunden:
| hostPath | Typ | Container |
|---|---|---|
/run/dbus |
Directory (read-only) | Home Assistant, Matter-Server |
/dev/net/tun |
CharDevice | OTBR |
Kubernetes-Integration #
Ein ServiceAccount homeassistant-kubernetes-integration ermöglicht der HA-Kubernetes-Integration Zugriff auf den Cluster:
- ClusterRoleBinding: Lesezugriff auf Nodes, Namespaces und Metriken (
metrics.k8s.io) - RoleBinding (Namespace
home-assistant): Lese-, Watch- und eingeschränkter Schreibzugriff auf Pods, Events, Deployments, StatefulSets, DaemonSets, CronJobs
Auto-Updates (Keel) #
Home Assistant und Mosquitto sind mit Keel-Annotationen versehen:
1keel.sh/match-tag: "true"
2keel.sh/trigger: poll
3keel.sh/policy: forceMatter-Server #
python-matter-server läuft als eigenständiges Deployment und stellt einen Matter-Controller bereit, über den Home Assistant Matter-Geräte steuern kann.
- Image:
ghcr.io/home-assistant-libs/python-matter-server:stable - Netzwerk: Macvlan
home-net(Interfacenet1als primäres Interface) - Service: ClusterIP Port 5580
OTBR (OpenThread Border Router) #
Der OpenThread Border Router verbindet das Thread-Mesh-Netzwerk (Matter over Thread) mit dem IP-Heimnetz.
- Image:
openthread/otbr:latest - Radio: TCP-Verbindung zu einem RCP (spinel+hdlc+tcp)
- Backbone-Interface:
net1(Macvlan ins Heimnetz) - mDNS:
mDNSResponder - NAT64 und Firewall deaktiviert (
NAT64=0,FIREWALL=0) - Security: privilegiert,
NET_ADMIN+NET_RAW - Services: ClusterIP Port 8080 (Web-UI), 8081 (REST-API)
Mosquitto (MQTT-Broker) #
Mosquitto läuft als eigenständiger Controller im Namespace home-assistant. Konfiguration in values-mosquitto.yaml.
Dokumentation #
Die offizielle Dokumentation ist unter mosquitto.org/documentation/ zu finden.
Funktion #
MQTT-Broker als zentrale Vermittlungsstelle für IoT-Nachrichten. Clients publizieren oder abonnieren Topics.
- Image:
docker.io/library/eclipse-mosquitto:2.0
Wichtige Einstellungen #
- LoadBalancer: Dual-Stack via MetalLB
- Port
1883: MQTT - Port
8883: MQTT über WebSockets
- Port
- Anonymer Zugriff: Erlaubt. Eine
password.txtist in der ConfigMap hinterlegt, aber inmosquitto.confauskommentiert. - Zendure-Bridges: Vier Bridge-Konfigurationen zum Zendure-Cloud-Dienst (SF1200, SF2000, SF2000-2, ACE) liegen vorbereitet in der ConfigMap, sind aber vollstaendig auskommentiert und damit nicht aktiv. Die Geraete sprechen stattdessen direkt mit diesem Broker.
- Tibber-Bridge: Konfiguration für eine Bridge zum Tibber AWS-IoT-Endpunkt vorbereitet, aber auskommentiert. Die dafür benötigten TLS-Zertifikate werden als Secret
tibber-certunter/certseingebunden. - Persistenz: Retained Messages auf Longhorn-PVC
mosquitto-data(100 Mi).
Installation #
1kubectl kustomize --enable-helm apps/home-assistant | kubectl apply -n home-assistant -f -Abhängigkeiten #
- Multus + Macvlan: Heimnetz-Anbindung aller Controller via dediziertem Uplink-Interface
- Longhorn: Storage-Provider für alle PersistentVolumes
- MetalLB: Externe Dual-Stack-IPs für Home Assistant (CoAP) und Mosquitto (MQTT)
- cert-manager: TLS-Zertifikat via
letsencrypt-production - Traefik: Ingress mit
localnet-Middleware