Single-node on Kubernetes
The whole product in one pod on one node, the same process as the binary, with TimescaleDB and Prometheus beside it. One installation brings everything up.
- Pods
- MaestroHub, TimescaleDB, Prometheus
- Nodes
- One, any Kubernetes distribution
- When it fails
- Kubernetes restarts the pod
Your platform team installs, upgrades and runs this; MaestroHub supports the MaestroHub application. See Who is responsible for what.
What runs
One pod runs every module, the message bus (NATS with JetStream), the MQTT broker and the UI, in one process. Devices and browsers reach it at one Service. Its small volume keeps execution history, logs, the message bus's streams and the keys it generates; the historian's data is on the TimescaleDB volume.
- Requests: browsers and devices to MaestroHub
- Databases and metrics
- Optional, added when you need it
Good to know
- Bring your own database or PrometheusTimescaleDB can be your own PostgreSQL or TimescaleDB server, and Prometheus your cluster’s own. Connections to your own database use TLS in production.
- At the edgeOn a small Kubernetes node at the line the pod can run with nothing beside it: every store is a file on its volume, as with the binary. One certificate in a Kubernetes Secret then serves HTTPS, MQTT over TLS and secure WebSocket.
- When the pod or the node failsKubernetes starts the pod again on the same volume. Devices reconnect and resend what was not acknowledged, and pipelines keep unsent values in Store & Forward buffers. There is no second copy to take over meanwhile.
- BackupsThe chart does not back up the bundled TimescaleDB. Protect its volume with your snapshots or backup tool, or use a database server you already back up.
Ports
8080 · 8443
UI and API, HTTP and HTTPS
MaestroHub Service, or an ingress
1883 · 8883
MQTT, MQTT over TLS
MaestroHub Service
8083
MQTT over WebSocket, when turned on
MaestroHub Service
A Service exposed outside the cluster (NodePort or LoadBalancer) carries only the encrypted ports unless you open the plain ones on purpose.
Upgrades
An upgrade replaces the one pod, so it is a short outage. Before the old pod stops, the chart checks the stored data against the new release: when the release needs its data converted first, the upgrade stops there and the running version keeps serving until the conversion has run. How stored data is converted is on Upgrades.
Related pages
- High availability on Kubernetes: when a restart is not acceptable
- One hub, many sites: a single-node hub in a plant layout