Modelplane Modelplane docs

K3sCluster Custom Resource

A K3sCluster installs a k3s cluster onto existing machines over SSH. The control plane machine runs the k3s server; each worker joins as a k3s agent. It is provider-agnostic: any set of reachable Linux hosts works, whether bare metal or virtual. It outputs a Secret containing the cluster kubeconfig. The kubeconfig embeds a static client certificate, so consumers need nothing beyond it to reach the cluster. The control plane is a single server; it is a single point of failure for the cluster control plane.

#Metadata

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

#Spec

K3sClusterSpec defines the desired state of K3sCluster.

# auth required object

SSH authentication used to reach every machine. All machines must accept the same user and private key.

# secretRef required object

Secret holding the SSH private key, in the same namespace as this K3sCluster.

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

Key within the Secret that holds the private key.

# name required string 1–253 chars

Name of the Secret.

# username optional string 1–63 chars default: root

SSH user. Must be root or have passwordless sudo.

# controlPlane required object

The machine that runs the k3s server (the management plane). Must be reachable over SSH from the control plane running Modelplane.

# host required string 1–253 chars

DNS name or IP address of the machine.

# port optional integer 1–65535 default: 22

SSH port.

# version optional object

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

# channel optional string 1–32 chars

k3s release channel (e.g. stable, v1.34). Installs the channel’s latest release.

# version optional string 1–32 chars

Exact k3s version to install (e.g. v1.34.1+k3s1).

# workers optional object[] ≤ 64 items
# host required string 1–253 chars

DNS name or IP address of the machine.

# labels optional map[string]string

Node labels applied to this worker.

# name required string 1–63 chars

Unique name for this worker.

# port optional integer 1–65535 default: 22

SSH port.

# taints optional object[] ≤ 8 items
# effect required enum: NoSchedule | PreferNoSchedule | NoExecute
# key required string 1–253 chars
# value optional string ≤ 63 chars

#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.