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.
56 lines
1.3 KiB
Plaintext
56 lines
1.3 KiB
Plaintext
@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
|