Skip to content

[Feature] Helm Chart for Kubernetes GPU Fleet Deployment #124

Description

@mitulgarg

Summary

Add a Helm chart that deploys env-doctor as a DaemonSet on GPU-labeled Kubernetes nodes, automating the report install step across an entire cluster with a single command.

Motivation

Teams running GPU fleets on Kubernetes (GKE, EKS, AKS, bare-metal k8s) currently need to SSH into each node individually to run:

pip install env-doctor
env-doctor report install --url http://<dashboard>:8765 --interval 5m

For clusters with 20–100+ GPU nodes, this is tedious and error-prone. A Helm chart reduces this to:

helm install env-doctor ./charts/env-doctor \
  --set dashboard.url=http://<dashboard>:8765 \
  --set interval=5m

New GPU nodes joining the cluster would automatically pick up env-doctor — no manual intervention.

Scope

This is a packaging/distribution change only. No changes to the core CLI, dashboard, or reporting logic.

What the chart would contain

  • A DaemonSet targeting nodes with nvidia.com/gpu labels
  • A lightweight container that runs env-doctor report install on startup
  • Host mounts for GPU driver access (nvidia-smi, device files)
  • Configurable values: dashboard URL, reporting interval, image tag

Configurable values (values.yaml)

dashboard:
  url: ""            # required: http://<dashboard-host>:8765
reporting:
  interval: "5m"     # maps to --interval flag
nodeSelector:
  nvidia.com/gpu: "true"
image:
  repository: ghcr.io/mitulgarg/env-doctor
  tag: latest

What this does NOT change

  • Reporting behavior (hash-based change detection, heartbeat — all unchanged)
  • Dashboard backend or API
  • Core CLI functionality
  • Non-k8s deployment paths (cron/Task Scheduler still work as-is)

Acceptance criteria

  • helm install deploys env-doctor to all GPU nodes in a cluster
  • Nodes report to the dashboard using existing --report-to flow
  • New GPU nodes auto-enroll when they join the cluster
  • helm uninstall cleanly removes the DaemonSet
  • README documents the 3-command setup (add repo → configure → install)

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions