CivoCluster Custom Resource
This document applies to the Modelplane main branch and not to the latest release v0.4.
A CivoCluster provisions a Civo Kubernetes (k3s) cluster with a dedicated network and firewall, and node pools for GPU inference and system workloads. It outputs a Secret containing the cluster kubeconfig. The kubeconfig embeds static client certificates, so consumers need nothing beyond it to reach the cluster. Civo has no server-side node pool autoscaler; pools with maxNodeCount set are scaled by the Kubernetes cluster autoscaler installed on the cluster. The system pool is a fixed inline pool on the cluster resource, honored at creation time only.
#Metadata
#Example
Manifest
apiVersion: infrastructure.modelplane.ai/v1alpha1
kind: CivoCluster
metadata:
name: inference-nyc1
namespace: platform
spec:
region: NYC1
nodePools:
- name: workers
role: System
size: g4p.kube.small
nodeCount: 2
- name: gpu-l40s
role: GPU
size: an.g1.l40s.kube.x1
nodeCount: 1
maxNodeCount: 8
gpu:
acceleratorType: nvidia-l40s
#Spec
CivoClusterSpec defines the desired state of CivoCluster.
Civo ProviderConfig or ClusterProviderConfig used to authenticate to the Civo API. Defaults to the ClusterProviderConfig named default.
Civo Kubernetes (k3s) version. Civo requires an exact version string including the k3s build suffix (e.g. 1.34.1-k3s1); list current versions with civo kubernetes versions. Choose 1.34 or newer so Dynamic Resource Allocation (how GPUs bind to pods) is generally available. Defaults to Civo’s current default version.
GPU configuration. Required when role is GPU.
GPU accelerator type (e.g. nvidia-l40s, nvidia-a100). Used to label GPU nodes; the actual GPU and count are determined by the size.
Maximum number of nodes for autoscaling. When set the node pool autoscales between minNodeCount (or nodeCount) and this. Civo has no server-side autoscaler, so the Kubernetes cluster autoscaler is installed on the cluster to drive the pool’s node count through the Civo API. Omit for fixed-size pools.
Minimum number of nodes for autoscaling. Defaults to nodeCount when maxNodeCount is set. Requires maxNodeCount.
Unique name for this node pool. Used as the pool’s label in the Civo cluster.
Number of nodes. Fixed unless maxNodeCount enables autoscaling.
Determines what workloads this pool runs. System pools host controllers, gateways, and infrastructure. GPU pools host inference workloads and are tainted to exclude non-GPU pods.
Civo instance size for the pool’s nodes (e.g. an.g1.l40s.kube.x1, g4p.kube.small). This is the instance type used by other clouds; list sizes with civo kubernetes size.
Civo region for the cluster (e.g. LON1, NYC1, FRA1). GPU sizes vary by region; list availability with civo region ls and civo kubernetes size.
#Status
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, CA certificate, and static client certificates.