Fornax: COORDINATOR_URL env, port-lease webhook, Grafana dashboard

- Worker deployment: add COORDINATOR_URL and WORKER_ID env vars to
  portforward-helper; webhook calls coordinator /api/v2/workers/:id/port-lease
  after each NAT-PMP renewal so coordinator tracks current forwarded port
- Worker overlays: patch WORKER_ID env var to actual worker ID (tx253/tx34)
- Grafana: fornax-grafana Argo CD app pointing to k8s/fornax/grafana/
  ConfigMap with grafana_dashboard=1 label for auto-discovery by sidecar;
  7 panels covering bandwidth, active torrents, worker health, request rate,
  and error rate
This commit is contained in:
Will Anderson
2026-04-14 05:30:01 +00:00
parent d75d1b62d8
commit bdba692db2
6 changed files with 349 additions and 0 deletions
@@ -96,12 +96,18 @@ spec:
- name: portforward-helper
image: alpine:latest
imagePullPolicy: Always
env:
- name: COORDINATOR_URL
value: "https://fornax.neuralplatform.ai"
- name: WORKER_ID
value: "WORKER_ID"
command:
- sh
- -c
- |
until apk add -q curl 2>/dev/null; do sleep 5; done
echo "Watching /tmp/gluetun/forwarded_port for assigned port..."
TTL=300
while true; do
if [ -f /tmp/gluetun/forwarded_port ]; then
PORT=$(cat /tmp/gluetun/forwarded_port)
@@ -112,6 +118,13 @@ spec:
curl -s -b /tmp/qbt.txt -X POST http://localhost:8080/api/v2/app/setPreferences \
-d "json={\"listen_port\":$PORT,\"random_port\":false}" >/dev/null 2>&1
echo "$(date): qBittorrent listen port set to $PORT"
# Notify coordinator of port lease
if [ -n "$COORDINATOR_URL" ] && [ -n "$WORKER_ID" ]; then
curl -s -X POST "$COORDINATOR_URL/api/v2/workers/$WORKER_ID/port-lease" \
-H "Content-Type: application/json" \
-d "{\"port\": $PORT, \"ttlSeconds\": $TTL}" >/dev/null 2>&1 || true
echo "$(date): Coordinator notified of port $PORT (TTL: ${TTL}s)"
fi
else
echo "$(date): Port file empty, waiting..."
fi
@@ -26,6 +26,9 @@ patches:
- op: replace
path: /spec/template/spec/containers/0/env/3/valueFrom/secretKeyRef/name
value: fornax-worker-tx253-secrets
- op: replace
path: /spec/template/spec/containers/1/env/1/value
value: tx253
- op: replace
path: /spec/template/spec/volumes/1/persistentVolumeClaim/claimName
value: fornax-worker-tx253-config
@@ -26,6 +26,9 @@ patches:
- op: replace
path: /spec/template/spec/containers/0/env/3/valueFrom/secretKeyRef/name
value: fornax-worker-tx34-secrets
- op: replace
path: /spec/template/spec/containers/1/env/1/value
value: tx34
- op: replace
path: /spec/template/spec/volumes/1/persistentVolumeClaim/claimName
value: fornax-worker-tx34-config