infra/home/cluster/starlink-exporter/deployment.yaml
Graham McIntire 04b3855874
k8s: add Starlink dish prometheus exporter + dashboard
joshuasing/starlink_exporter 0.9.0 (Docker Hub; ghcr.io lags behind
upstream releases). Targets the dish's gRPC management interface at
192.168.100.1:9200, reachable from cluster pods via 10.0.15.254 while
the Starlink router is in bypass mode.

Grafana dashboard "Starlink" covers throughput, PoP ping latency/drop,
obstruction state + 24h total, GPS lock, and dish position/info — synced
to /var/lib/grafana/dashboards/ by the existing grafana role.
2026-05-10 18:11:21 -05:00

55 lines
1.5 KiB
YAML

apiVersion: apps/v1
kind: Deployment
metadata:
name: starlink-exporter
namespace: monitoring
labels:
app.kubernetes.io/name: starlink-exporter
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: starlink-exporter
template:
metadata:
labels:
app.kubernetes.io/name: starlink-exporter
spec:
securityContext:
runAsNonRoot: true
runAsUser: 65532
runAsGroup: 65532
seccompProfile:
type: RuntimeDefault
containers:
- name: exporter
image: docker.io/joshuasing/starlink_exporter:0.9.0
# Defaults already match this network: -dish 192.168.100.1:9200,
# -listen :9451. Dish is reachable via 10.0.15.254 (home router)
# while the Starlink router is in bypass mode.
ports:
- name: metrics
containerPort: 9451
protocol: TCP
resources:
requests:
cpu: 10m
memory: 24Mi
limits:
memory: 96Mi
securityContext:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
capabilities:
drop: ["ALL"]
readinessProbe:
httpGet:
path: /metrics
port: metrics
periodSeconds: 15
livenessProbe:
httpGet:
path: /metrics
port: metrics
periodSeconds: 30
failureThreshold: 5