home-assistant: Deploy Home Assistant

This commit adds resources for deploying the Home Assistant ecosystem
inside Kubernetes.  Home Assistant itself, as well as Mosquitto, are
just normal Pods, managed by StatefulSets, that can run anywhere.
ZWaveJS2MQTT and Zigbee2MQTT, on the other hand, have to run on a
special node (a Raspberry Pi), where the respective controllers are
attached.

The Home Assistant UI is exposed externally via an Ingress resource.
The MQTT broker is also exposed externally, using the TCP proxy feature
of *ingress-nginx*.  Additionally, the Zigbee2MQTT and ZWaveJS2MQTT
control panels are exposed via Ingress resources, but these are
protected by Authelia.
This commit is contained in:
2023-07-24 17:48:38 -05:00
parent 2153097930
commit a7eac14d39
17 changed files with 1870 additions and 0 deletions

View File

@@ -0,0 +1,55 @@
@startuml
person User
collections "Sensors and\nDevices" as sensors
cloud Kubernetes {
component Ingress as ingress {
port HTTPS as ingress_http
port MQTT as ingress_mqtt
}
node "Main Node Cluster" {
[Home Assistant] as hass
queue Mosquitto as mqtt
database PostgreSQL as postgres
}
node "Raspberry Pi Node" as pi {
[ZWaveJS2MQTT] as zwavejs
[Zigbee2MQTT] as z2m
rectangle "Zigbee Controller" as usb_zigbee
rectangle "ZWave Controller" as usb_zwave
z2m-[#red]-> usb_zigbee
zwavejs -[#red]-> usb_zwave
}
User --[#blue]-> ingress_http
sensors --[#purple]-> ingress_mqtt
sensors <-[#lightblue]--- hass
ingress --[#blue]-> hass
ingress ---[#blue]-> zwavejs
ingress ---[#blue]-> z2m
ingress --[#purple]-> mqtt
hass -[#teal]-> postgres
hass -[#orange]-> zwavejs
hass -[#purple]> mqtt
z2m -[#purple]-> mqtt
}
legend right
Legend
|<color:blue><&arrow-right></color> | HTTP |
|<color:purple><&arrow-right></color> | MQTT |
|<color:orange><&arrow-right></color> | WebSocket |
|<color:teal><&arrow-right></color> | PostgreSQL |
|<color:red><&arrow-right></color> | USB |
|<color:lightblue><&arrow-right></color> | ESPHome, etc. |
end legend
@enduml