OpenMCF logoOpenMCF

Loading...

Civo Kubernetes Node Pool

Adds a node pool to an existing Civo Kubernetes cluster, allowing you to scale compute capacity independently of the cluster's default pool. Each node pool runs a specified instance size and node count, with optional auto-scaling between configurable bounds.

What Gets Created

When you deploy a CivoKubernetesNodePool resource, OpenMCF provisions:

  • Kubernetes Node Pool — a civo_kubernetes_node_pool resource attached to the referenced Civo Kubernetes cluster, with the specified instance size and labels derived from the resource metadata

Prerequisites

  • Civo credentials configured via environment variables or OpenMCF provider config
  • An existing Civo Kubernetes cluster — either created manually or managed via a CivoKubernetesCluster resource
  • A valid instance size slug (e.g., g4s.kube.medium) — check Civo's available sizes for your region

Quick Start

Create a file civo-node-pool.yaml:

apiVersion: civo.openmcf.org/v1
kind: CivoKubernetesNodePool
metadata:
  name: my-node-pool
  labels:
    openmcf.org/provisioner: pulumi
    pulumi.openmcf.org/organization: my-org
    pulumi.openmcf.org/project: my-project
    pulumi.openmcf.org/stack.name: dev.CivoKubernetesNodePool.my-node-pool
spec:
  nodePoolName: my-node-pool
  cluster:
    value: my-cluster-id
  size: g4s.kube.medium
  nodeCount: 2

Deploy:

openmcf apply -f civo-node-pool.yaml

This creates a two-node pool using g4s.kube.medium instances in the specified cluster.

Configuration Reference

Required Fields

FieldTypeDescriptionValidation
nodePoolNamestringName of the node pool. Must be unique within the Civo Kubernetes cluster.Required
clusterStringValueOrRefReference to the Civo Kubernetes cluster. Accepts a literal cluster name/ID via value, or a cross-resource reference via valueFrom pointing to a CivoKubernetesCluster resource.Required
sizestringInstance size slug for each node in the pool (e.g., g4s.kube.medium). Defines CPU and memory allocation.Required
nodeCountuint32Number of nodes to provision in the pool.Required, must be > 0

Optional Fields

FieldTypeDefaultDescription
autoScaleboolfalseEnable auto-scaling for this node pool. When true, node count is managed automatically between minNodes and maxNodes.
minNodesuint320Minimum number of nodes when auto-scaling is enabled. Should be set when autoScale is true.
maxNodesuint320Maximum number of nodes when auto-scaling is enabled. Should be set when autoScale is true.
tagsstring[][]Tags to apply to the node pool for organizational purposes within Civo.

Examples

Basic Node Pool

A fixed-size pool added to an existing cluster by ID:

apiVersion: civo.openmcf.org/v1
kind: CivoKubernetesNodePool
metadata:
  name: workers
  labels:
    openmcf.org/provisioner: pulumi
    pulumi.openmcf.org/organization: my-org
    pulumi.openmcf.org/project: my-project
    pulumi.openmcf.org/stack.name: dev.CivoKubernetesNodePool.workers
spec:
  nodePoolName: workers
  cluster:
    value: abc123-cluster-id
  size: g4s.kube.small
  nodeCount: 1

Auto-Scaling Node Pool

A pool that scales between 2 and 8 nodes based on demand:

apiVersion: civo.openmcf.org/v1
kind: CivoKubernetesNodePool
metadata:
  name: autoscale-pool
  labels:
    openmcf.org/provisioner: pulumi
    pulumi.openmcf.org/organization: my-org
    pulumi.openmcf.org/project: my-project
    pulumi.openmcf.org/stack.name: prod.CivoKubernetesNodePool.autoscale-pool
spec:
  nodePoolName: autoscale-pool
  cluster:
    value: abc123-cluster-id
  size: g4s.kube.large
  nodeCount: 3
  autoScale: true
  minNodes: 2
  maxNodes: 8
  tags:
    - environment:production
    - team:platform

Using Foreign Key References

Reference an OpenMCF-managed CivoKubernetesCluster instead of hardcoding the cluster ID:

apiVersion: civo.openmcf.org/v1
kind: CivoKubernetesNodePool
metadata:
  name: ref-pool
  labels:
    openmcf.org/provisioner: pulumi
    pulumi.openmcf.org/organization: my-org
    pulumi.openmcf.org/project: my-project
    pulumi.openmcf.org/stack.name: prod.CivoKubernetesNodePool.ref-pool
spec:
  nodePoolName: ref-pool
  cluster:
    valueFrom:
      kind: CivoKubernetesCluster
      name: my-cluster
      field: status.outputs.cluster_id
  size: g4s.kube.xlarge
  nodeCount: 5
  autoScale: true
  minNodes: 3
  maxNodes: 10
  tags:
    - environment:production
    - managed-by:openmcf

Stack Outputs

After deployment, the following outputs are available in status.outputs:

OutputTypeDescription
node_pool_idstringUnique identifier of the created node pool
node_idsstring[]IDs of the individual nodes provisioned in the pool

Related Components

  • CivoKubernetesCluster — the parent cluster to which the node pool is added
  • CivoVpc — provides the network used by the cluster
  • CivoFirewall — controls network access to cluster nodes
  • CivoVolume — provides persistent block storage for workloads running on the node pool

Next article

Civo Volume

Civo Volume Deploys a Civo block storage volume that can be attached to compute instances for persistent, expandable storage. The component provisions a volume in a specified region and size, and exports its identifier for use by other components such as CivoComputeInstance. What Gets Created When you deploy a CivoVolume resource, OpenMCF provisions: Block Storage Volume — a civovolume resource created in the target region with the requested capacity in GiB Prerequisites Civo credentials...
Read next article
Presets
2 ready-to-deploy configurationsView presets →