Files
kubernetes/home-assistant/hass-k8s.plantuml
Dustin C. Hatch a7eac14d39 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.
2023-07-24 17:53:58 -05:00

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