ServingStack Custom Resource
A ServingStack installs the serving substrate on a Kubernetes cluster: LeaderWorkerSet (Standard) or Grove and the KAI Scheduler (Dynamo), plus Gateway API, cert-manager, and Prometheus.
#Metadata
#Example
Manifest
apiVersion: infrastructure.modelplane.ai/v1alpha1
kind: ServingStack
metadata:
name: west-gke-stack
namespace: platform
spec:
secrets:
- type: Kubeconfig
name: west-gke-kubeconfig
key: kubeconfig
- type: GoogleApplicationCredentials
name: west-gke-sa-key
key: private_key
versions:
gatewayApi: "v1.5.1"
certManager: "v1.17.1"
envoyGateway: "v1.8.1"
gateway:
listeners:
- name: http
port: 80
protocol: HTTP
#Spec
ServingStackSpec defines the desired state of ServingStack.
Version pins for Dynamo-stack components. Ignored when stack is Standard.
Grove chart version. Grove gang-schedules a multi-node engine as a PodCliqueSet when stack is Dynamo. Pinned at v0.1.0-alpha.12-rc2 or later: earlier releases append Grove’s own env vars after template env instead of prepending them (grove#753), which blocks Modelplane from aliasing MODELPLANE_LEADER_ADDRESS to them.
KAI Scheduler chart version. Grove hands a PodCliqueSet’s gang-scheduling to KAI, which binds each gang all-or-nothing against a Queue.
ModelExpress server image tag. The metadata-only server coordinates peer-to-peer weight transfer between engine pods that opt into –load-format modelexpress.
Configuration for the cluster’s inference traffic gateway.
GatewayClass name. Override if the cluster already has a GatewayClass named envoy.
Host path where the NVIDIA driver is installed, passed to the DRA driver as nvidiaDriverRoot. Defaults to / (the upstream default), which suits EKS and self-managed clusters. Set it for platforms that install the driver elsewhere — GKE uses /home/kubernetes/bin/nvidia. A non-default value also makes the serving stack compose a ResourceQuota permitting the DRA driver’s system-critical pods, which GKE requires. The cluster composition sets this; the serving stack never inspects its own cloud.
Key within the Secret that holds the credential data.
Name of the Secret.
Namespace of the Secret, when it isn’t this ServingStack’s namespace. Set on cloud identity entries whose credential is the Secret the cloud provider’s ProviderConfig references.
The type of credential this secret contains. Kubeconfig is required. Any other value is a cloud identity type; when present, the serving stack authenticates to the cluster as that identity instead of using the kubeconfig’s embedded credentials.
Which serving stack this installs. Standard (the default) is the Modelplane-composed serving layer: a Deployment or LeaderWorkerSet, Gateway API, and the endpoint picker. Dynamo swaps in NVIDIA’s components: Grove with the KAI Scheduler for multi-node gang scheduling, and a shared ModelExpress server for weight distribution. Propagated from the InferenceCluster.
Version pins for Standard-stack components. Ignored when stack is Dynamo.
LeaderWorkerSet chart version.
Version pins for each component. Defaults are the latest tested combination. Override individual versions to upgrade components independently.
cert-manager chart version.
Envoy Gateway chart version. Must support InferencePool backend resources (the disaggregated-serving routing path), which requires v1.8.x or newer; older releases lack the Gateway API CRDs (ListenerSet) the AI Gateway needs.
Gateway API CRD version.
Node Feature Discovery chart version. NFD labels GPU nodes so the NVIDIA DRA driver targets its kubelet plugin to them.
NVIDIA DRA driver chart version. Publishes GPUs as DRA ResourceSlices and the gpu.nvidia.com DeviceClass that ModelReplica ResourceClaims bind through.
kube-prometheus-stack chart version.