Installing the serving stack (Helm chart)¶
Goal: install the entire stack (gateway, the Endpoint Picker (EPP) of the llm-d router, and modelserver) in the reference configuration with Helm, and get the first inference response.
Prerequisites
Steps 1 through 6 of Deployment on Kubernetes › Deployment steps are complete. After steps 1 through 6:
- DeviceClass, ResourceSlice, ResourceClaimTemplate (RCT), CustomResourceDefinitions (CRDs), Secrets, and the model store are verified.
- The compile-cache PersistentVolumeClaim (PVC) shape is decided.
- The startup budget is reviewed.
Chart preparation and the default configuration¶
Pull the coding-assistant-stack chart and unpack the chart with --untar. The install commands on this page use the unpacked directory. The unpacked directory also holds the chart's values.yaml, the bundled examples (examples/), and the scripts (scripts/).
The chart and the modelserver image are in repo.rebellions.ai, and both require credentials. Log in with helm registry login to pull the chart. Create the Image Pull Secret that the nodes use to pull the modelserver image (see Secrets and the model store).
The routing sidecar image and the EPP image are on the public registry ghcr.io/llm-d and need no credentials. To pull the modelserver image from your own registry, set modelserver.image.repository to that registry's repository.
The chart defaults are the reference configuration. With the chart defaults, the stack serves MiniMax-M2.7 as 4P4D: four prefill Pods and four decode Pods, and each Pod receives the 4 NPUs that the RCT npu-rdma requests. To serve another model, use the recipe files the chart lists in examples/models/README.md (see Common configuration changes).
Save the following values as values-env.yaml. The chart defaults do not include the values in values-env.yaml, because each of those values names an object in your cluster.
Check the following chart defaults before the first install.
- The chart creates the compile-cache PVC with
accessModes: ["ReadWriteMany"], because the four Pods of a role mount one PVC. Choose a StorageClass that supportsReadWriteMany(see PVC shape, capacity, andaccessModes). storage.compileCache.sizedefaults to200Gi. A PVC cannot shrink, so decidestorage.compileCache.sizebefore the first install.modelserver.resourcesrequests 40 CPUs and630Giof memory per Pod. Check the node capacity againstmodelserver.resourcesin Resources and the node budget.
If the EPP is installed outside the chart, set eppServiceName to the name of that EPP's Service.
Preflight check¶
Before installing, check the following items.
| Item to check | Page that prepares it |
|---|---|
| DeviceClasses and ResourceSlices are published | Device allocation |
| The cluster advertises the attributes the RCT requires | Device allocation |
| The Image Pull Secret and the HF token Secret exist | Cluster foundation › Secrets and the model store |
| The StorageClass exists | Cluster foundation › Secrets and the model store |
| Node memory fits the node budget | Pod spec requirements › Node memory budget check |
Install procedure¶
You choose the Helm release name (<release-name>). The Helm release name can be up to 39 characters when the chart creates an Istio Gateway (the default), and up to 40 characters otherwise.
On the first install, compilation delays Ready (see First startup time).
On every later helm upgrade, pass the values given at install time again. For the rule on passing values again, see Scaling and Upgrades › Upgrade, rollback, and removal.
To pin Pods to specific nodes, use modelserver.nodePlacement instead of modelserver.replicas (see Key chart settings).
First inference¶
Check that the modelserver Pods are running and that Istio created the gateway Service. Then send a first inference request through the gateway Service.
If the response has a choices field, the install is complete. If the Pods stay Pending or the request returns an error, see Failure response › Diagnosis by symptom.
Next steps¶
After the first inference succeeds, continue with the following pages.