Externalize TeslaMate dashboards to forge mirror #296

Merged
eblume merged 4 commits from externalize-teslamate-dashboards into main 2026-03-15 18:31:20 -07:00
Owner

Summary

  • Replaces 18 TeslaMate dashboard ConfigMaps (713 KB / 22,080 lines) with a Grafana init container
  • Init container fetches dashboard JSON directly from mirrors/teslamate on forge, pinned to v3.0.0
  • Grafana's file provider picks them up from /tmp/dashboards/TeslaMate/ via foldersFromFilesStructure
  • Non-TeslaMate dashboards remain as ConfigMaps (unchanged)

How it works

  • New init-teslamate-dashboards init container uses busybox wget to fetch each JSON file from https://forge.eblu.me/mirrors/teslamate/raw/tag/v3.0.0/grafana/dashboards/
  • Files land in /tmp/dashboards/TeslaMate/, same emptyDir volume the sidecar uses
  • The sidecar continues to handle ConfigMap-based dashboards; the init container handles TeslaMate
  • Version pin is in the init container args (TESLAMATE_VERSION)

Deployment and Testing

  • Sync grafana app from branch — verify init container runs and fetches dashboards
  • Sync grafana-config app from branch — verify TeslaMate ConfigMaps are pruned
  • Check Grafana UI: TeslaMate folder should still contain all 18 dashboards
  • Verify non-TeslaMate dashboards are unaffected
  • After merge: sync both apps from main
## Summary - Replaces 18 TeslaMate dashboard ConfigMaps (713 KB / 22,080 lines) with a Grafana init container - Init container fetches dashboard JSON directly from `mirrors/teslamate` on forge, pinned to `v3.0.0` - Grafana's file provider picks them up from `/tmp/dashboards/TeslaMate/` via `foldersFromFilesStructure` - Non-TeslaMate dashboards remain as ConfigMaps (unchanged) ## How it works - New `init-teslamate-dashboards` init container uses busybox `wget` to fetch each JSON file from `https://forge.eblu.me/mirrors/teslamate/raw/tag/v3.0.0/grafana/dashboards/` - Files land in `/tmp/dashboards/TeslaMate/`, same emptyDir volume the sidecar uses - The sidecar continues to handle ConfigMap-based dashboards; the init container handles TeslaMate - Version pin is in the init container args (TESLAMATE_VERSION) ## Deployment and Testing - [ ] Sync `grafana` app from branch — verify init container runs and fetches dashboards - [ ] Sync `grafana-config` app from branch — verify TeslaMate ConfigMaps are pruned - [ ] Check Grafana UI: TeslaMate folder should still contain all 18 dashboards - [ ] Verify non-TeslaMate dashboards are unaffected - [ ] After merge: sync both apps from main
Replace 18 TeslaMate dashboard ConfigMaps (713 KB) with a Grafana init
container that fetches dashboard JSON directly from mirrors/teslamate
on forge, pinned to v3.0.0. Grafana's file provider picks them up from
/tmp/dashboards/TeslaMate/ via foldersFromFilesStructure.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Busybox wget doesn't support HTTPS properly. Use http://forge.ops.eblu.me
(Caddy internal) instead of https://forge.eblu.me (Fly.io public).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Busybox 1.31.1 wget doesn't follow Caddy's HTTP→HTTPS redirect.
Switch to Alpine 3.21 which has a full wget with TLS support, and
use the HTTPS URL directly.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Keep all container tags in kustomization.yaml for easy version management.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
eblume merged commit 4ca2e39901 into main 2026-03-15 18:31:20 -07:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
eblume/blumeops!296
No description provided.