Skip to content

Platform Components

kMetal installs a curated set of components on the under cluster. They cover bare metal, virtualization, networking, control plane, and lifecycle — together they turn an empty Kubernetes cluster into a multi-tenant kMetal platform.

The full set ships as a single Helm umbrella chart; the components below are its sub-charts plus a small amount of platform-specific glue.

Networking

Component Purpose
Flannel Primary CNI on under-cluster nodes — management-plane pod networking.
Kube-OVN Secondary CNI delivered through Multus — provides per-tenant VPCs and Subnets and the provider network for tenant egress / external IPs.
MetalLB Allocates LoadBalancer service IPs on the under cluster (e.g. tenant control-plane VIPs).

Virtualization

Component Purpose
KubeVirt Runs tenant worker nodes as KVM VMs on the under cluster.
CDI (Containerized Data Importer) Provides DataVolumes — the persistent disks tenant worker VMs boot from.

Hosted Control Planes

Component Purpose
Kamaji Operator that runs each tenant cluster's control plane (api-server, controller-manager, scheduler, konnectivity-server) as pods in the under cluster.
kamaji-addon-ovn Bridges Kamaji-hosted control planes to the tenant's OVN VPC so worker traffic can reach the api-server.

Cluster Lifecycle

Component Purpose
cert-manager Issues and renews TLS certificates for under-cluster services.
Cluster API operator Manages CAPI core + provider controllers (kubeadm bootstrap, KubeVirt infrastructure / CAPK, Kamaji control plane / CACPK). Tenant clusters are CAPI Cluster resources.

Storage

Component Purpose
local-path-provisioner Default StorageClass for the under cluster. Production deployments typically replace it with a vendor CSI driver against an enterprise array.

How they're delivered

The umbrella chart toggles each component via a top-level switch (e.g. kubevirt.enabled, kamaji.enabled, metallb.enabled) and exposes per-component overrides under matching keys. See Helm Values for the values shape.