Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,11 @@ NODE_02=<node-02-ip>
NODE_03=<node-03-ip>
NODE_04=<node-04-ip>

# MQTT credentials
MQTT_BROKER_URL="mqtts://$NODE_02:8883"
MQTT_USERNAME=<your-mqtt-user>
MQTT_PASSWORD=<your-mqtt-pwd>

# System configured
NODE_URL="https://$NODE_01:6443"
KUBECONFIG=./config/cluster.yaml
Expand Down
17 changes: 13 additions & 4 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -42,13 +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; \
git fetch origin main --quiet; \
IMAGE_TAG=$$(git rev-parse --short origin/main); \
IMAGE_TAG=$${tag:-latest}; \
echo "Deploying image tag: $$IMAGE_TAG"; \
helm upgrade --install pi-agent helm/pi-agent \
--set image.tag=$$IMAGE_TAG \
--namespace=pi-agent \
--create-namespace;
--create-namespace;
7 changes: 7 additions & 0 deletions app/go.mod
Original file line number Diff line number Diff line change
@@ -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
)
8 changes: 8 additions & 0 deletions app/go.sum
Original file line number Diff line number Diff line change
@@ -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=
5 changes: 5 additions & 0 deletions helm/pi-agent/templates/daemonset.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
67 changes: 67 additions & 0 deletions home-assistant/cluster-dashboard.yaml
Original file line number Diff line number Diff line change
@@ -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
64 changes: 64 additions & 0 deletions home-assistant/mqtt-sensors.yaml
Original file line number Diff line number Diff line change
@@ -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 }}"
Loading