Installation
Before installing, make sure your cluster meets the Prerequisites, notably cert-manager, and is a supported platform.
tt-operator installs into the tt-operator-system namespace by default.
Install
Install the published chart with Helm:
helm install tt-operator oci://ghcr.io/tenstorrent/helm/tt-operator \
--namespace tt-operator-system --create-namespace
Verify the install
# All enabled controller Deployments should become Available.
kubectl -n tt-operator-system get deploy
# NFD should label nodes that have a Tenstorrent device.
kubectl get nodes -l feature.node.kubernetes.io/pci-1200_1e52.present=true
No pod should be stuck in ImagePullBackOff. If one is, see
Troubleshooting.
Common install variations
Enable or disable components
Every component is a subchart gated by <name>.enabled. Install only what you
need by disabling the rest. For example, NFD and the Driver Manager only:
helm install tt-operator oci://ghcr.io/tenstorrent/helm/tt-operator \
--namespace tt-operator-system --create-namespace \
--set tt-fabric-manager.enabled=false \
--set tt-dra-driver.enabled=false \
--set tt-telemetry.enabled=false \
--set jobset.enabled=false \
--set kubepmix.enabled=false
The component keys are node-feature-discovery, tt-k8s-driver-manager,
tt-fabric-manager, tt-dra-driver, tt-telemetry, jobset, and kubepmix.
Use pre-installed drivers
If you manage tt-kmd yourself, outside Kubernetes, disable the Driver Manager.
The rest of the stack still runs and uses the already-loaded driver:
helm install tt-operator oci://ghcr.io/tenstorrent/helm/tt-operator \
--namespace tt-operator-system --create-namespace \
--set tt-k8s-driver-manager.enabled=false
No Driver Manager controller or installer DaemonSet is created, and the driver policy resources are not installed.
Pin component images
Image overrides use the standard repository and tag fields. There is no single combined image reference key. To pin a build of the Driver Manager:
helm upgrade tt-operator oci://ghcr.io/tenstorrent/helm/tt-operator \
--namespace tt-operator-system \
--set tt-k8s-driver-manager.controller.image.repository=ghcr.io/tenstorrent/tt-k8s-driver-manager-controller \
--set tt-k8s-driver-manager.controller.image.tag=<tag> \
--set tt-k8s-driver-manager.driver.image.repository=ghcr.io/tenstorrent/tt-k8s-driver-manager-builder \
--set tt-k8s-driver-manager.driver.image.tag=<tag> \
--set tt-k8s-driver-manager.flasher.image.repository=ghcr.io/tenstorrent/tt-k8s-driver-manager-flasher \
--set tt-k8s-driver-manager.flasher.image.tag=<tag>
controller.image.* sets the controller Deployment image directly. The
driver.* and flasher.* images are passed to the controller as the per-node
builder and flasher images it spawns. See the
Configuration reference for every overridable value.
Install into a different namespace
tt-telemetry sets its namespace explicitly. If you install into a namespace other
than tt-operator-system, set it to match:
helm install tt-operator oci://ghcr.io/tenstorrent/helm/tt-operator \
--namespace my-ns --create-namespace \
--set tt-telemetry.namespace=my-ns