CoreWeaveCluster Custom Resource
This document applies to the Modelplane main branch and not to the latest release v0.7.
A CoreWeaveCluster provisions a CoreWeave Kubernetes Service (CKS) cluster in a dedicated VPC, with node pools for GPU inference and system workloads. CKS node pools are Kubernetes resources inside the cluster, so they’re created through the cluster’s own API once it’s running. It outputs a Secret containing a kubeconfig for the cluster, which authenticates with the CoreWeave API access token the CoreWeave ProviderConfig uses.
#Metadata
#Example
Manifest
apiVersion: infrastructure.modelplane.ai/v1alpha1
kind: CoreWeaveCluster
metadata:
name: inference-us-east-04
namespace: platform
spec:
zone: US-EAST-04A
kubernetesVersion: "1.37"
nodePools:
- name: gpu-rtxp6000
role: GPU
instanceType: rtxp6000-8x
nodeCount: 1
maxNodeCount: 2
gpu:
acceleratorType: nvidia-rtx-pro-6000
#Spec
CoreWeaveClusterSpec defines the desired state of CoreWeaveCluster.
CoreWeave ProviderConfig or ClusterProviderConfig used to authenticate to the CoreWeave API. Its API access token also authenticates the kubeconfig this cluster outputs, so the kubeconfig Secret holds a copy of the org’s API token. Limit who can create CoreWeaveClusters, and who can read Secrets in their namespaces. Defaults to the ClusterProviderConfig named default.
CKS Kubernetes minor version, in the form X.Y. CKS applies patch versions itself.
GPU configuration. Required when role is GPU.
GPU accelerator type (e.g. nvidia-h100, nvidia-l40s). Used to label GPU nodes; the actual GPU and count are determined by the instance type.
CKS instance type for the pool’s nodes (e.g. rtxp6000-8x, turin-gp). CKS can’t change an existing pool’s instance type; replace the pool with a new name instead.
Maximum number of nodes for autoscaling. When set, CKS’s managed cluster autoscaler scales the pool between minNodeCount (or nodeCount) and this, and owns the pool’s node count. Setting this on an existing pool with no nodes leaves it at zero (see minNodeCount). Omit for fixed-size pools.
Minimum number of nodes for autoscaling. Defaults to nodeCount, or 1 if nodeCount is 0. Requires maxNodeCount. Keep it at 1 or higher: CKS’s cluster autoscaler can’t scale a pool whose devices bind through DRA up from zero nodes, so a pod scheduled to an empty pool waits forever.
Unique name for this node pool. Used as the name of the pool’s CKS NodePool.
Number of nodes. Fixed unless maxNodeCount enables autoscaling, in which case it’s the initial count, and a new pool starts with at least one node even if this is 0, because CKS’s autoscaler can’t scale it up from zero (see minNodeCount).
Determines what workloads this pool runs. GPU pools host inference workloads and are tainted to exclude non-GPU pods. CPU pools host CPU inference workloads: a CPU instance type and the modelplane.ai/cpu label and taint.
CoreWeave Availability Zone for the cluster (e.g. US-EAST-04A). Instance types vary by zone.
#Status
Observed ModelCache RWX storage state.
Name of the Modelplane-managed ReadWriteMany StorageClass composed on this cluster for ModelCache PVCs, a copy of CKS’s shared-vast class that deletes a volume when its claim is deleted.
Key within the Secret that holds the credential data.
Name of the Secret.
The type of credential this secret contains. Kubeconfig contains a kubeconfig file with the cluster endpoint and a CoreWeave API access token.