Installing the RBLN NPU Operator¶
Install the RBLN NPU Operator with Helm. For OLM installations, see Installing on OpenShift. To run a Pod after installation, follow Run an NPU Pod.
Prerequisites¶
- A Kubernetes cluster and NPU worker nodes covered by the support matrix
- Node Feature Discovery (NFD)
- A driver image for the nodes' NPU family, OS, and kernel
- An RBLN Portal account to pull driver and RSMD images
Creating an image pull secret¶
Create the rbln-system namespace and store your RBLN Portal account credentials in the drivercred image pull secret. The driver and RSMD use this secret.
If you use a different secret name, such as my-registry-secret, add the following image pull secret setting to the npu-values.yaml file created in the next section.
Configuring installation values¶
The following basic configuration uses driver containers and the Device Plugin. Save it as npu-values.yaml to override the default Helm values.
| npu-values.yaml | |
|---|---|
For DRA configuration, refer to the NPU DRA Driver documentation.
Installing with Helm¶
Install a specific chart version.
Verifying the installation¶
Check resource status after Helm finishes. The examples show healthy states; names and node counts vary by environment.
$ kubectl wait --for=jsonpath='{.status.state}'=ready \
rblndriver --all --timeout=600s
rblndriver.rebellions.ai/rbln-driver-rebel100 condition met
$ kubectl wait --for=jsonpath='{.status.state}'=ready \
rblnclusterpolicy/rbln-cluster-policy --timeout=600s
rblnclusterpolicy.rebellions.ai/rbln-cluster-policy condition met
$ kubectl get rblnclusterpolicy rbln-cluster-policy \
-o 'custom-columns=NAME:.metadata.name,STATE:.status.state'
NAME STATE
rbln-cluster-policy ready
$ kubectl get rblndriver \
-o 'custom-columns=NAME:.metadata.name,STATE:.status.state,READY:.status.readyNodes,DESIRED:.status.desiredNodes'
NAME STATE READY DESIRED
rbln-driver-rebel100 ready 1 1
For a Device Plugin installation, also check the node's NPU resources.
$ kubectl get nodes -l rebellions.ai/npu.present=true \
-o 'custom-columns=NAME:.metadata.name,FAMILY:.metadata.labels.rebellions\.ai/npu\.family,PRODUCT:.metadata.labels.rebellions\.ai/npu\.product,ALLOCATABLE:.status.allocatable.rebellions\.ai/npu'
NAME FAMILY PRODUCT ALLOCATABLE
node-rebel100 rebel100 RBLN-CR13 1
$ kubectl wait --for=jsonpath='{.status.state}'=ready \
rblndriver --all --timeout=600s
rblndriver.rebellions.ai/rbln-driver-atom condition met
$ kubectl wait --for=jsonpath='{.status.state}'=ready \
rblnclusterpolicy/rbln-cluster-policy --timeout=600s
rblnclusterpolicy.rebellions.ai/rbln-cluster-policy condition met
$ kubectl get rblnclusterpolicy rbln-cluster-policy \
-o 'custom-columns=NAME:.metadata.name,STATE:.status.state'
NAME STATE
rbln-cluster-policy ready
$ kubectl get rblndriver \
-o 'custom-columns=NAME:.metadata.name,STATE:.status.state,READY:.status.readyNodes,DESIRED:.status.desiredNodes'
NAME STATE READY DESIRED
rbln-driver-atom ready 1 1
For a Device Plugin installation, also check the node's NPU resources.
$ kubectl get nodes -l rebellions.ai/npu.present=true \
-o 'custom-columns=NAME:.metadata.name,FAMILY:.metadata.labels.rebellions\.ai/npu\.family,PRODUCT:.metadata.labels.rebellions\.ai/npu\.product,ALLOCATABLE:.status.allocatable.rebellions\.ai/npu'
NAME FAMILY PRODUCT ALLOCATABLE
node-atom atom RBLN-CA25 16