Modelplane Modelplane docs

VultrBaremetalCluster Custom Resource

A VultrBaremetalCluster provisions Vultr bare metal servers and installs a k3s cluster onto them. One CPU-only management server runs the k3s server; each GPU pool’s servers join as k3s agents. Vultr bare metal has no autoscaling, so pools are fixed size. It outputs a Secret containing the cluster kubeconfig. The management server is a single point of failure for the cluster control plane. Bare metal provisioning takes tens of minutes.

#Metadata

API version
infrastructure.modelplane.ai/v1alpha1
Kind
VultrBaremetalCluster
Scope
Namespaced

#Spec

VultrBaremetalClusterSpec defines the desired state of VultrBaremetalCluster.

# credentials optional object

Vultr ProviderConfig or ClusterProviderConfig used to authenticate to the Vultr API. Defaults to the ClusterProviderConfig named default.

# name optional string 1–253 chars default: default
# type optional enum: ProviderConfig | ClusterProviderConfig default: ClusterProviderConfig
# k3s optional object

The k3s release installed on the servers.

# channel optional string 1–32 chars default: v1.34

k3s release channel. Defaults to the first channel where Dynamic Resource Allocation (how GPUs bind to pods) is generally available.

# management optional object

The CPU-only bare metal server that runs the k3s server (the management plane).

# osId optional integer default: 2284

Vultr operating system ID installed on the server. Defaults to Ubuntu 24.04 LTS x64; list IDs with vultr-cli os list.

# plan optional string 1–63 chars default: vbm-6c-32gb-amd

Vultr bare metal plan for the management server. The default is a CPU-only plan available in most regions that offer bare metal.

# nodePools required object[] 1–8 items
# gpu required object

GPU configuration.

# acceleratorType required string 1–63 chars

GPU accelerator type (e.g. amd-mi355x). Used to label the pool’s nodes; the actual GPU and count are determined by the plan.

# name required string 1–40 chars

Unique name for this pool.

# nodeCount optional integer 1–64 default: 1

Number of servers in this pool.

# osId optional integer

Vultr operating system ID for the pool’s servers. Defaults to the management server’s osId.

# plan required string 1–63 chars

Vultr bare metal plan ID for the pool’s servers (e.g. vbm-256c-3072gb-8-mi355x-gpu).

# region required string 1–32 chars

Vultr region for all servers (e.g. ewr, ord). Bare metal plan availability varies by region; check with vultr-cli plans list –type vbm.

# ssh required object

SSH key pair used to reach the servers. The public key is registered with Vultr and installed on every server; the private key drives the k3s install over SSH.

# secretRef required object

Secret holding the SSH key pair, in the same namespace as this VultrBaremetalCluster.

# name required string 1–253 chars

Name of the Secret.

# privateKeyKey optional string 1–253 chars default: ssh-privatekey

Key within the Secret that holds the private key.

# publicKeyKey optional string 1–253 chars default: ssh-publickey

Key within the Secret that holds the public key.

# username optional string 1–63 chars default: root

SSH user the servers accept the key for. Vultr installs keys for root by default.

#Status

# secrets optional object[]
# key required string ≤ 253 chars

Key within the Secret that holds the credential data.

# name required string ≤ 253 chars

Name of the Secret.

# type required enum: Kubeconfig

The type of credential this secret contains. Kubeconfig contains a kubeconfig file with the cluster endpoint, CA certificate, and a static client certificate.