From b5d8fc671e671f18e02d7f50d79389741e4a186e Mon Sep 17 00:00:00 2001 From: August Felso <77752049+amfelso@users.noreply.github.com> Date: Fri, 6 Mar 2026 07:45:06 -0500 Subject: [PATCH 1/6] Always use latest --- Makefile | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index de6cd9a..2888a45 100644 --- a/Makefile +++ b/Makefile @@ -45,10 +45,8 @@ preview: .PHONY: deploy deploy: @source venv/activate > /dev/null; \ - git fetch origin main --quiet; \ - IMAGE_TAG=$$(git rev-parse --short origin/main); \ - echo "Deploying image tag: $$IMAGE_TAG"; \ + echo "Deploying image tag: latest"; \ helm upgrade --install pi-agent helm/pi-agent \ - --set image.tag=$$IMAGE_TAG \ + --set image.tag=latest \ --namespace=pi-agent \ - --create-namespace; \ No newline at end of file + --create-namespace; \ No newline at end of file From 19f34f399da04ae23381c38f151db6b140efc0b6 Mon Sep 17 00:00:00 2001 From: August Felso <77752049+amfelso@users.noreply.github.com> Date: Fri, 6 Mar 2026 12:30:15 -0500 Subject: [PATCH 2/6] Add mqtt sensor config for home assistant --- home-assistant/mqtt-sensors.yaml | 64 ++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 home-assistant/mqtt-sensors.yaml diff --git a/home-assistant/mqtt-sensors.yaml b/home-assistant/mqtt-sensors.yaml new file mode 100644 index 0000000..2330506 --- /dev/null +++ b/home-assistant/mqtt-sensors.yaml @@ -0,0 +1,64 @@ +mqtt: + sensor: + # node-01 + - name: "Node 01 CPU Usage" + state_topic: "homelab/node-01/cpu" + unit_of_measurement: "%" + value_template: "{{ value }}" + + - name: "Node 01 Memory Usage" + state_topic: "homelab/node-01/memory" + unit_of_measurement: "%" + value_template: "{{ value }}" + + - name: "Node 01 Temperature" + state_topic: "homelab/node-01/temp" + unit_of_measurement: "°F" + value_template: "{{ value }}" + + - name: "Node 01 Disk Usage" + state_topic: "homelab/node-01/disk" + unit_of_measurement: "%" + value_template: "{{ value }}" + + # node-03 + - name: "Node 03 CPU Usage" + state_topic: "homelab/node-03/cpu" + unit_of_measurement: "%" + value_template: "{{ value }}" + + - name: "Node 03 Memory Usage" + state_topic: "homelab/node-03/memory" + unit_of_measurement: "%" + value_template: "{{ value }}" + + - name: "Node 03 Temperature" + state_topic: "homelab/node-03/temp" + unit_of_measurement: "°F" + value_template: "{{ value }}" + + - name: "Node 03 Disk Usage" + state_topic: "homelab/node-03/disk" + unit_of_measurement: "%" + value_template: "{{ value }}" + + # node-04 + - name: "Node 04 CPU Usage" + state_topic: "homelab/node-04/cpu" + unit_of_measurement: "%" + value_template: "{{ value }}" + + - name: "Node 04 Memory Usage" + state_topic: "homelab/node-04/memory" + unit_of_measurement: "%" + value_template: "{{ value }}" + + - name: "Node 04 Temperature" + state_topic: "homelab/node-04/temp" + unit_of_measurement: "°F" + value_template: "{{ value }}" + + - name: "Node 04 Disk Usage" + state_topic: "homelab/node-04/disk" + unit_of_measurement: "%" + value_template: "{{ value }}" From 398b95560e6d3e30573996c5af05f323606035b6 Mon Sep 17 00:00:00 2001 From: August Felso Date: Fri, 6 Mar 2026 12:48:59 -0500 Subject: [PATCH 3/6] Add cluster dashboard --- home-assistant/cluster-dashboard.yaml | 67 +++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 home-assistant/cluster-dashboard.yaml diff --git a/home-assistant/cluster-dashboard.yaml b/home-assistant/cluster-dashboard.yaml new file mode 100644 index 0000000..4498e32 --- /dev/null +++ b/home-assistant/cluster-dashboard.yaml @@ -0,0 +1,67 @@ +type: grid +cards: + - type: heading + heading_style: title + heading: Kubernetes Cluster Stats + icon: mdi:robot-happy + - type: entities + entities: + - entity: sensor.node_01_cpu_usage + icon: mdi:cpu-64-bit + name: CPU Usage + - entity: sensor.node_01_temperature + icon: mdi:thermometer + name: CPU Temperature + - entity: sensor.node_01_memory_usage + name: Memory Usage + icon: mdi:memory + - entity: sensor.node_01_disk_usage + name: Disk Usage + icon: mdi:harddisk + state_color: false + show_header_toggle: false + grid_options: + columns: 6 + rows: 5 + title: node-01 + - type: entities + entities: + - entity: sensor.node_03_cpu_usage + icon: mdi:cpu-64-bit + name: CPU Usage + - entity: sensor.node_03_temperature + icon: mdi:thermometer + name: CPU Temperature + - entity: sensor.node_03_memory_usage + name: Memory Usage + icon: mdi:memory + - entity: sensor.node_03_disk_usage + name: Disk Usage + icon: mdi:harddisk + title: node-03 + state_color: false + show_header_toggle: false + grid_options: + columns: 6 + rows: 5 + - type: entities + entities: + - entity: sensor.node_04_cpu_usage + icon: mdi:cpu-64-bit + name: CPU Usage + - entity: sensor.node_04_temperature + icon: mdi:thermometer + name: CPU Temperature + - entity: sensor.node_04_memory_usage + name: Memory Usage + icon: mdi:memory + - entity: sensor.node_04_disk_usage + name: Disk Usage + icon: mdi:harddisk + title: node-04 + state_color: false + show_header_toggle: false + grid_options: + columns: 6 + rows: 5 +column_span: 2 From 4f19e100e11533d4059d3e65ece2fa4e65d99206 Mon Sep 17 00:00:00 2001 From: August Felso <77752049+amfelso@users.noreply.github.com> Date: Fri, 6 Mar 2026 14:22:58 -0500 Subject: [PATCH 4/6] Add MQTT set up --- .env.example | 5 +++++ helm/pi-agent/templates/daemonset.yaml | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/.env.example b/.env.example index 45663c2..fabbd74 100644 --- a/.env.example +++ b/.env.example @@ -6,6 +6,11 @@ NODE_02= NODE_03= NODE_04= +# MQTT credentials +MQTT_BROKER_URL="mqtts://$NODE_02:8883" +MQTT_USERNAME= +MQTT_PASSWORD= + # System configured NODE_URL="https://$NODE_01:6443" KUBECONFIG=./config/cluster.yaml diff --git a/helm/pi-agent/templates/daemonset.yaml b/helm/pi-agent/templates/daemonset.yaml index 7fe193a..1847ca3 100644 --- a/helm/pi-agent/templates/daemonset.yaml +++ b/helm/pi-agent/templates/daemonset.yaml @@ -21,6 +21,11 @@ spec: args: - "--schedule" - "{{ .Values.collector.schedule }}" + env: + - name: NODE_NAME + valueFrom: + fieldRef: + fieldPath: spec.nodeName volumeMounts: - name: sysfs mountPath: /host/sys From 3a46f3930a9f1a3252b9c1929621f6dd02b501f2 Mon Sep 17 00:00:00 2001 From: August Felso <77752049+amfelso@users.noreply.github.com> Date: Fri, 6 Mar 2026 14:49:07 -0500 Subject: [PATCH 5/6] Add command to create MQTT secret --- Makefile | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 2888a45..8d78c4f 100644 --- a/Makefile +++ b/Makefile @@ -42,11 +42,22 @@ test-unit: preview: @helm template ./helm/pi-agent +.PHONY: secret +secret: + @source venv/activate > /dev/null; \ + kubectl create secret generic mqtt-credentials \ + --namespace pi-agent \ + --from-literal=MQTT_USERNAME=$$MQTT_USERNAME \ + --from-literal=MQTT_PASSWORD=$$MQTT_PASSWORD \ + --from-literal=MQTT_BROKER_URL=$$MQTT_BROKER_URL \ + --dry-run=client -o yaml | kubectl apply -f - + .PHONY: deploy -deploy: +deploy: secret @source venv/activate > /dev/null; \ - echo "Deploying image tag: latest"; \ + IMAGE_TAG=$${tag:-latest}; \ + echo "Deploying image tag: $$IMAGE_TAG"; \ helm upgrade --install pi-agent helm/pi-agent \ - --set image.tag=latest \ + --set image.tag=$$IMAGE_TAG \ --namespace=pi-agent \ --create-namespace; \ No newline at end of file From dcf4366db86c1bbda63a48097cc18251202c4d4e Mon Sep 17 00:00:00 2001 From: August Felso <77752049+amfelso@users.noreply.github.com> Date: Fri, 6 Mar 2026 14:49:15 -0500 Subject: [PATCH 6/6] Add MQTT client library --- app/go.mod | 7 +++++++ app/go.sum | 8 ++++++++ 2 files changed, 15 insertions(+) create mode 100644 app/go.sum diff --git a/app/go.mod b/app/go.mod index ffb18bc..8af9ec8 100644 --- a/app/go.mod +++ b/app/go.mod @@ -1,3 +1,10 @@ module github.com/amfelso/homelab/pi-agent go 1.24.0 + +require ( + github.com/eclipse/paho.mqtt.golang v1.5.1 // indirect + github.com/gorilla/websocket v1.5.3 // indirect + golang.org/x/net v0.44.0 // indirect + golang.org/x/sync v0.17.0 // indirect +) diff --git a/app/go.sum b/app/go.sum new file mode 100644 index 0000000..9abe94c --- /dev/null +++ b/app/go.sum @@ -0,0 +1,8 @@ +github.com/eclipse/paho.mqtt.golang v1.5.1 h1:/VSOv3oDLlpqR2Epjn1Q7b2bSTplJIeV2ISgCl2W7nE= +github.com/eclipse/paho.mqtt.golang v1.5.1/go.mod h1:1/yJCneuyOoCOzKSsOTUc0AJfpsItBGWvYpBLimhArU= +github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= +github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +golang.org/x/net v0.44.0 h1:evd8IRDyfNBMBTTY5XRF1vaZlD+EmWx6x8PkhR04H/I= +golang.org/x/net v0.44.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY= +golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= +golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=