How It Works
Each infrastructure component has a provisioner that can:- Check — Verify if the component is installed and running
- Install — Download and configure the component
kubectl to apply manifests and verify resource status.
Components
K3s
Lightweight Kubernetes distribution. The foundation for all other components.- What it installs: K3s server and agent
- Check: Verifies
kubectl cluster-infosucceeds - Notes: If using an existing cluster, skip this step
KubeVirt
Virtual machine management via CRDs. Required for Droplets.- What it installs: KubeVirt operator and CR
- Check: Verifies KubeVirt pods are running
- Prerequisites: K3s or existing Kubernetes cluster
- Resources created:
kubevirtnamespace- KubeVirt operator Deployment
- KubeVirt CR
Storage Class
Persistent volume provisioner. Required for volumes, databases, and VM disks.- What it installs: Default StorageClass (Longhorn or Rook/Ceph)
- Check: Verifies a StorageClass exists with
defaultannotation - Notes: Configure
storage.block_classinconfig.yaml
Metrics Server
Kubernetes Metrics Server for CPU and memory usage data.- What it installs: metrics-server Deployment
- Check: Verifies
kubectl top nodesworks - Resources created:
- metrics-server Deployment in
kube-system
- metrics-server Deployment in
Prometheus
Monitoring and metrics collection.- What it installs: Prometheus server via Helm or manifests
- Check: Verifies Prometheus pods are running
- Endpoint: Accessible at
PROMETHEUS_URL(default:http://localhost:30090)
CloudNativePG
PostgreSQL operator for managed database instances.- What it installs: CloudNativePG operator
- Check: Verifies operator pod is running
- Resources created:
cnpg-systemnamespace- CloudNativePG operator Deployment
- CRDs for Cluster, Backup, ScheduledBackup
Container Registry
Private Docker registry for storing built application images.- What it installs: Docker Registry Deployment + Service
- Check: Verifies registry pod is running
- Notes: Used by the App Platform for git-based deployments
CoreDNS
DNS resolution for service discovery within the cluster.- What it installs: CoreDNS configuration updates
- Check: Verifies DNS resolution works
Object Storage
S3-compatible object storage (MinIO or Rook/Ceph RGW).- What it installs: MinIO Deployment or Ceph RGW
- Check: Verifies S3 endpoint is accessible
- Configuration: Update
storage.objectinconfig.yaml
Running the Provisioner
Via Dashboard
- Navigate to Admin → Setup
- Each component shows its current status
- Click Install on individual components or Run All
Via API
Installation Order
Components should be installed in this order (the provisioner handles dependencies automatically):Troubleshooting
Component shows “not installed” after installing
- Check if the component pods are running:
kubectl get pods -A - Wait 30-60 seconds for pods to start, then re-check
- Review pod logs:
kubectl logs -n <namespace> <pod-name>
KubeVirt installation fails
- Ensure hardware virtualization is enabled:
egrep -c '(vmx|svm)' /proc/cpuinfo - Check if nested virtualization is supported (for VMs-on-VMs)
- Review KubeVirt operator logs:
kubectl logs -n kubevirt -l kubevirt.io=virt-operator
Storage provisioning fails
- Verify the StorageClass exists:
kubectl get storageclass - Check if the storage backend (Longhorn/Ceph) is healthy
- Ensure nodes have sufficient disk space