Skip to main content

Kube-DC

Run virtual machines, Kubernetes, databases, and storage on infrastructure you control.

Printable version: Download the A4 PDF.

Kube-DC turns your servers into a self-service private cloud. Departments and teams work in isolated projects with their own networks, virtual machines, Kubernetes clusters, databases, and storage. Your platform team sets capacity, security, and cost controls for the whole environment, while your data stays in your datacenter.

Who it's for

Kube-DC is designed for organizations that operate shared infrastructure for several teams or customers:

  • Public-sector organizations keeping workloads and data on infrastructure they control, with clear separation between departments.
  • Enterprises and retailers bringing existing virtual machines and modern container workloads onto one platform.
  • Universities and research institutions giving faculties, labs, and student groups isolated environments with defined quotas.
  • Datacenter and hosting operators providing cloud services under their own brand.

At a glance

  • One platform for VMs and containers. Virtual machines and Kubernetes workloads use the same network fabric, access model, quota, and billing.
  • Tenancy that reaches the network. Every project gets its own VPC and subnet, not just a namespace label.
  • Self-service with central controls. Teams provision VMs, clusters, databases, storage, and public endpoints within the quotas you set. They can use the web console, kubectl, the CLI, or a supported coding assistant.
  • Runs on standard x86-64 servers. A platform starts at three nodes; capacity grows by adding nodes. Production sizing is validated against your workload in an architecture review.
  • Built from named open-source components. Kubernetes, KubeVirt, Kube-OVN, Ceph, Keycloak, CloudNativePG, and other components are integrated and operated as one product.
Kube-DC product hierarchyA management cluster contains the acme and example Organizations. The acme Organization contains production and development Projects. The production Project contains virtual machines, container workloads, databases and object storage, and a Managed Cluster.containsPROJECT: PRODUCTION · WORKLOAD CAPABILITIESManagement clustercontains OrganizationsOrganization: acmeidentity · membership · quotaOrganization: exampleindependent tenant boundaryProject: productionbacking namespacededicated VPCProject: developmentbacking namespacededicated VPCVirtual machinesProject workloadContainersProject workloadData servicesdatabasesobject storageManaged ClusterseparateKubernetes APIOrganization governance and Project isolation are different boundaries.A Managed Cluster retains its own API, authorization, and CNI boundaries.
Kube-DC product hierarchy. Organizations are tenant boundaries; Projects are governed workload boundaries inside an Organization.

How it works

Kube-DC runs on a Kubernetes management cluster on your servers. Its controllers turn product resources such as organizations, projects, machines, clusters, databases, and keys into the underlying networking, virtualization, identity, storage, ingress, and observability resources.

The operating model has three levels:

  1. Your platform team installs Kube-DC with the kube-dc CLI. The CLI bootstraps a GitOps repository, and platform configuration remains declarative and versioned from then on.
  2. Organizations are your tenants: a ministry's directorates, a university's faculties, a retailer's business units, or an operator's customers. Each organization has its own identity realm, members, plan and billing scope.
  3. Projects are where teams deploy. Each project has a namespace, RBAC, its own VPC, and optional quotas. Teams use the console or a standard kubeconfig to work with project resources.
Kube-DC architectural layersUsers access the console, admin console, and CLI, which call Kubernetes and backend APIs. Kube-DC controllers reconcile Organization and Project governance, platform integrations, networking, compute, data services, Project workloads, and Managed Clusters. These capabilities run on the Kubernetes management cluster and physical or cloud infrastructure. Fleet and Flux separately install and configure the management cluster.PLATFORM CONTROL · GOVERNANCE AND INTEGRATIONSWORKLOAD AND DATA CAPABILITIESUsersoperatorsAccess surfacesconsole · admin · CLIPlatform APIsKubernetesbackend APIsKube-DC controllersreconciliationGovernanceOrganizationsProjects · RBAC · VPCIdentityKeycloak · RBACSecurityOpenBaocertificatesObservabilityGrafana · MimirLokiNetworkingKube-OVN · MultusEnvoy GatewayComputeKubeVirt · CDIData servicesCSI · Rook Cephmanaged databasesProject workloadsbacking namespaceOrganization + ProjectManaged Clustersseparate APIauthorization · CNIFleet + Fluxdesired stateinstallationManagement clusterplatform execution planeInfrastructurephysical or cloudcompute · networks · storage
Kube-DC architectural layers. Organizations and Projects govern resources in the management cluster; Managed Clusters retain separate API, authorization, and CNI boundaries.

Multi-tenancy: organizations and projects

LayerScopeMechanism
IdentityOrganizationA dedicated identity realm per organization (Keycloak SSO — console, API, CLI)
Namespace & RBACProjectHierarchical namespaces with project-scoped roles
NetworkProjectA dedicated VPC and subnet per project
QuotaProjectPer-project quotas within the organization's plan
Billing & chargebackOrganizationPlans, usage and subscription billing per organization

Organization quotas cover configured Kubernetes resources such as CPU, memory, storage, pods, and load balancers. Optional project quotas divide that capacity between teams. Object storage and physical capacity use their own controls and capacity plans.

Project roles cover the work needed to deploy and operate workloads. Cluster-scoped administration stays with the platform team. Supported project roles do not include interactive pod exec or attach; an admission policy enforces that boundary, and teams run one-off tasks as auditable Jobs instead.

Kube-DC organization Projects list showing Ready state, VPC CIDRs, workload counts and resource quota use
Organization administrators see Project readiness, network allocation, running workloads and quota consumption in one view.

Self-service projects: deploy applications directly

A project comes with a kubeconfig, so teams can deploy applications, Helm charts, Jobs, and services without first requesting a separate cluster. Plain Kubernetes manifests can describe a complete stateful stack: application pods, a managed database, an S3 bucket, shared volumes, an HTTPS endpoint, and autoscaling. The platform supplies the ingress, certificates, database engine, and storage.

When a team needs cluster-scoped control — operators, CRDs, custom controllers — it provisions a managed Kubernetes cluster instead (below).

Virtual machines

  • Linux and Windows guests from a prepared-image catalog — new VMs clone a prepared image snapshot, with no per-VM image download; bring your own images, with guest compatibility validated on import.
  • Cloud-init configuration, SSH-key injection, interactive console in the web UI.
  • Snapshots of running VMs; disk, CPU and memory sizing per VM.
  • Live migration: VMs on the Migratable profile (shared block storage) are eligible to move between CPU-compatible hosts with sufficient capacity — the mechanism behind draining a host for maintenance.
  • VMs attach to the project's VPC like any other workload: same networks, same floating IPs, same load balancers as containers.

Managed Kubernetes clusters

Full tenant-administered Kubernetes clusters, provisioned from a project with one manifest:

  • Hosted control planes run as managed pods on the platform — tenants get a tenant-administered Kubernetes API with per-cluster PKI, without operating masters.
  • Worker pools sized per pool (CPU, memory, disk, image), with autoscaling bounds per pool.
  • Control-plane and etcd vertical autoscaling on by default — API server and etcd resources are right-sized within configured bounds as cluster load grows.
  • Staged, tenant-controlled upgrades — control plane and worker pools move separately, in steps.
  • Scheduled etcd snapshots (with optional envelope encryption) and restore — self-service for single-replica etcd datastores, assisted for multi-replica; private in-VPC endpoints by default, public HTTPS endpoints via the platform's gateway and certificate issuer on request.
  • Admin and break-glass kubeconfigs retrievable by the tenant.
KubeVirt-backed Managed Cluster topologyIn the acme-production Project infrastructure namespace, KdcCluster dev owns a LoadBalancer Service for the API, a Kamaji TenantControlPlane with API server, scheduler, and controller-manager Pods, a KdcClusterDatastore backed by an etcd StatefulSet, a worker MachineDeployment backed by KubeVirt virtual machines, and a CCM Deployment. Together these resources create Managed Cluster dev with three workers and a separate Kubernetes API for tenant Deployments, Services, and persistent volume claims.MANAGEMENT CLUSTER · ACME-PRODUCTIONKdcClusterdevControl-plane Servicedev-cpLoadBalancer APITenantControlPlaneKamajiDatastoredev-etcdCCM Deploymentkccm-devControl-plane PodsAPI server · schedulercontroller-manager Podsetcd clusteretcd StatefulSetpersistent storageMANAGED CLUSTER DEV · SEPARATE APIWorker MachineDeploymentworker-1 · worker-2worker-3 · KubeVirt VMsTenant workloadsDeployments · ServicesPVCs
KdcCluster owns a Kamaji control plane, datastore, worker MachineDeployment, and CCM inside the Project infrastructure namespace; users reach a separate tenant Kubernetes API and run workloads on its workers.

Managed databases

  • PostgreSQL and MariaDB, provisioned by manifest or console.
  • Multi-replica engine replication; after an eligible primary failure an available replica is promoted automatically — behavior depends on your deployment's topology and capacity.
  • Scheduled and on-demand backups to the project's S3 bucket, envelope-encrypted when a KMS key is configured; restore into a new database or in place.
  • Auto-generated credentials delivered as Kubernetes Secrets; optional credential-rotation policies.

GPU services

  • Shared GPU for containers: several workloads on one physical card, each holding a catalogued fixed slice of a specific GPU model — inference, notebooks, small training runs. The memory slice is enforced; the compute share is cooperative, so it is a density mechanism rather than a performance or security guarantee.
  • Dedicated GPU VMs: one whole device attached to one guest, for workloads needing a stronger boundary (not live-migratable).
  • GPU as a governed product: per-model entitlements enforced as quota, operator-held capacity reservations for organizations that can't queue, holder-safe node-mode transitions, an upgrade gate that qualifies device/kernel/driver/operator as one tuple, and a published threat and supply-chain model.
  • GPU capabilities are enabled per cluster once your hardware, drivers and component set are qualified — GPU nodes couple those versions together, so enablement follows qualification.

Storage

  • Block storage for VMs and workloads (Ceph RBD), including a shared read-write-many tier for multi-pod volumes and live-migratable VMs.
  • S3-compatible object storage with per-project buckets, provisioned through a standard ObjectBucketClaim.
  • Volume snapshots and instant clones from golden images.
  • Storage classes, replication factors and capacity are yours to define — the platform runs on the disks and topology you give it.

Networking

  • A VPC per project with private subnets; no private cross-project route exists by default — reachability exists only where a service is deliberately exposed.
  • External and floating IPs: shared egress per project, dedicated addresses per load balancer, floating IPs that map to individual VMs — allocated from address pools your platform team defines.
  • LoadBalancer services and HTTPS ingress: one annotation on a Service publishes it at a hostname with TLS, using the platform's gateway and certificate issuer on your address pools and DNS.
  • Physical VLAN attachment: where the datacenter fabric trunks delegated VLANs to the platform nodes, a project's network bridges onto an existing VLAN at layer 2 — lab equipment, legacy systems, dedicated links — allocated from per-organization VLAN pools.
  • Egress control and allowlists, operated by the platform team.
Management and Project network isolationPods and virtual machines attach to the Project workload subnet and Project logical router inside the Project VPC. The router uses the configured cloud network for the default EIP and outbound SNAT. When configured, an optional public EIP, Floating IP, or LoadBalancer Service can use the public external network. Platform Pods and Services remain in the separate management VPC.PROJECT VPC · ISOLATED WORKLOAD NETWORKMANAGEMENT VPCWorkloadsPods + VMsProject subnetspec.cidrBlockLogical routercontrolled routingPlatform networkplatform PodsServicesCloud networkext-cloudEIP · SNATPublic networkext-publicEIP · FIP · LB
Each Project has its own VPC and creator-supplied workload subnet. Its default EIP and SNAT use the selected external network; public EIPs, FIPs, and Services are optional explicit paths.

Security and identity

  • Single sign-on across console, API and CLI, with an identity realm per organization (Keycloak; OIDC).
  • Role-based access per project from a curated, supported role set; custom roles under platform-team control.
  • Key management service: per-project, purpose-scoped encryption keys backed by non-exportable keys in the platform's secrets backend (OpenBao).
  • Secrets manager for application credentials, with sync into Kubernetes Secrets — keep secrets out of Git.
  • Managed certificates: public trust via ACME or your organization's private CA.
  • Admission policies enforce tenant boundaries at the API — including the platform-wide block on interactive pod access.

Observability

  • Configured automatically per organization. When an organization is created, the platform's controllers provision its observability — a Grafana organization of its own, pre-built dashboards, a metrics tenant and log routing on the bundled multi-tenant Grafana/Mimir/Loki stack. Teams open Grafana and see their workloads; nothing to install.
  • Metrics and logs are separated per tenant at the data layer — each organization sees only its own, including the control-plane telemetry of its managed Kubernetes clusters. Coverage and retention are operator-defined.
  • Platform-level monitoring for the operator: cluster health, storage, networking and capacity, with alerting.

Billing and chargeback

Organizations subscribe to plans that define their capacity; usage is enforced as quota and visible per organization — the basis for internal chargeback between departments or for invoicing external customers. Subscription billing integrates with payment providers for operators selling the platform as a service.

Automation and integration

  • Tenant-facing services are Kubernetes-native or custom resources — the documented console and CLI workflows drive the same APIs, so kubectl and GitOps pipelines can too.
  • The kube-dc CLI handles login, context switching and platform bootstrap.
  • Published agent skills let AI coding assistants (Claude Code, Cursor and others) create projects, deploy applications, provision VMs and databases through guarded, documented workflows.

Data protection

Each managed service carries its own protection: database backups to project S3 (envelope-encrypted when a KMS key is configured); managed-cluster etcd snapshots and restore; VM and volume snapshots on demand. Platform configuration lives in Git as desired state — it is not a backup of service or workload data. For copies that must survive site or storage loss, integrate the platform's S3 endpoints and snapshot APIs with your enterprise backup system — Kube-DC does not replace it.

Service-owned data protection boundariesManaged databases write scheduled and on-demand backups to Project S3 and restore from it. Managed Cluster etcd writes scheduled snapshots to the same Project service and restores supported datastore topologies. Virtual machine and PersistentVolume snapshots remain in the platform storage pool. Git contains desired platform configuration, not workload backups. An operator-configured enterprise integration copies protected data off site when required.PROJECT S3 · SERVICE BACKUPSManaged databasesservice ownerManaged Clustersservice ownerDatabase backupsscheduled + on demandoptional KMS envelopeetcd snapshotsscheduled snapshotsrestore by topologyEnterprise backupoff-site copyseparate domainVMs + volumespoint-in-time copiesStorage poolsnapshot storageGit configurationDesired state is not a backup of service or workload data.
Each service protects its own data class: databases and Managed Cluster etcd use Project S3, VM and volume snapshots stay in the storage pool, and an enterprise backup integration is required for copies outside the platform's storage failure domain.

Operating the platform

Your platform team runs Kube-DC through three surfaces that cover the whole lifecycle:

  • Administration console — a dedicated web panel for platform administrators: organizations and their plans, billing and subscriptions, capacity and storage health.
  • GitOps — platform configuration is declaratively reconciled from a Git repository (Flux): component versions, platform settings and day-2 changes land as version-controlled commits.
  • kube-dc CLI — carries the platform from installation through day-2: bootstrap of the GitOps repository, status and configuration commands, adoption of existing clusters, and login/context management for daily kubectl work.

Operator-side monitoring and alerting come from the same bundled observability stack the tenants use (see Observability).

Kube-DC administration dashboard summarizing Organizations, Projects, Managed Clusters, users, reconciliation failures and active elevations
The administration dashboard gives platform operators a consolidated health and activity view across the tenant estate.

Deployment and requirements

Reference baseline — subject to architecture validation. Production sizing and supported hardware depend on workload, storage topology, failure domains and validated NIC/firmware compatibility.

EvaluationProduction
Server nodes33+ (scale by adding nodes)
CPU per node8 cores16+ cores
RAM per node32 GB64+ GB
Storage per node500 GB SSDPer your capacity plan; dedicated disks for Ceph
Operating systemUbuntu 24.04 LTSUbuntu 24.04 LTS
NetworkVLAN-capable NIC; management, cloud and provider networksRedundant NICs

Installation is CLI-driven: kube-dc bootstrap init scaffolds the GitOps repository and hands the platform to Flux for reconciliation. Day-2 operations — upgrades, configuration changes, component versions — are Git commits.

Platform components

Kube-DC integrates named upstream open-source components: Kubernetes, KubeVirt (virtualization), Kube-OVN (SDN), Rook-Ceph (storage), Keycloak (identity), Kamaji + Cluster API (hosted control planes), CloudNativePG and the MariaDB operator (databases), OpenBao (keys and secrets), Envoy Gateway and cert-manager (ingress and TLS), Prometheus/Mimir/Loki/Grafana (observability), Flux (GitOps). Component versions are pinned per Kube-DC release. Workloads built on standard Kubernetes objects and standard VM guest formats carry no platform-specific dependencies unless they use the platform's own resources — which are enumerated, not hidden.

Next steps

  • Evaluate: install on three servers, or start in a hosted evaluation environment.
  • Talk to us: architecture review against your hardware, network and tenancy requirements.

Function datasheets in this guide

This document is the overview; each major function has its own datasheet with full technical depth:

FunctionDatasheet
Managed Kubernetes clustersfunction-managed-kubernetes.md
Virtual machinesfunction-virtual-machines.md
Managed databasesfunction-managed-databases.md
Networking & VLAN attachmentfunction-networking.md
Storage & object storagefunction-storage.md
Security, identity & keysfunction-security.md
Observabilityfunction-observability.md
GPU servicesfunction-gpu.md