tenantplane

The open platform for explainable Kubernetes multi-tenancy

Coming from vcluster or Kamaji? See how tenantplane is different β†’

tenantplane is an open source virtual Kubernetes tenant platform for modern platform engineering teams. It provides a lightweight, inspectable control plane for managing virtual tenants while keeping synchronization, isolation, and operations predictable and explainable.

Each tenant runs its own small control plane inside a host namespace. tenantplane reconciles it, enforces an explicit isolation boundary, and deterministically maps tenant resources onto the host β€” recording a decision for every action, so you can always ask why a host object exists.

Tenant clusters orbiting a host control plane, syncing back to the core
Architecture

One controller, nothing hidden

Three custom resources reconciled into an isolation boundary, a lightweight control plane, and a deterministic sync of tenant resources onto the host.

tenantplane architecture: custom resources reconciled by the controller into isolation, a control plane, and deterministic host objects

The tenantplane controller reconciles TenantCluster, IsolationProfile, and SyncPolicy into host-cluster reality.

Why teams choose it

Transparent by design

πŸ”

Explainable sync

Deterministic virtual-to-host mapping with offline dry-run planning. Ask why any host object exists and get an answer.

πŸ›‘οΈ

Explicit isolation

Isolation profiles compose NetworkPolicy, ResourceQuota, LimitRange, and Pod Security into one auditable boundary.

πŸͺΆ

Lightweight control planes

Each tenant runs a small k3s control plane in a host namespace β€” easy to understand, audit, and extend.

πŸ”

Day-2 by design

Reconciliation, drift correction, and orphan garbage collection built for the operational realities of multi-tenancy.

🧭

Migration paths

Evolve tenants across shared, dedicated, and private isolation models without recreating tenant API state.

πŸ“ˆ

Observable

Decisions as Kubernetes Events today; OpenTelemetry and Prometheus on the roadmap.

How sync works

A convergence pass, fully explained

For every resource kind your SyncPolicy marks toHost, the engine runs the same four deterministic steps β€” and records a decision for each one.

Sync convergence pass: list, transform, apply, garbage-collect, with a decision recorded at each step
1

List

Enumerate tenant objects of the kind, skipping the tenant's own system namespaces.

2

Transform

Deep-copy, apply the deterministic host name, merge reverse-mapping metadata, strip host-owned fields.

3

Apply

Create the host object if absent, otherwise update it in place with a conflict-checked write.

4

Garbage-collect

Delete managed host objects whose tenant source is gone. Foreign objects are never touched.

Explainability

Ask why. Get an answer.

Host placement is deterministic, so tenantplane can tell you where a tenant resource will land before anything is applied β€” offline, in CI, or during an audit.

  • Predict the host namespace, name, labels, and annotations.
  • Trace any host object back to its tenant source.
  • Audit every sync action through decision Events.
$ tenantplane explain-sync --tenant dev --tenant-namespace team-dev \
    --virtual-namespace default --kind Pod --name nginx
hostResource:
  namespace: team-dev
  name: nginx-x-default-x-dev
reason:
  stable name from resource + virtual namespace + tenant;
  labels preserve the reverse mapping.
# A tenant, an isolation level, a sync policy
apiVersion: tenantplane.io/v1alpha1
kind: TenantCluster
metadata:
  name: dev
  namespace: team-dev
spec:
  mode: shared
  isolationProfileRef: { name: restricted }
  syncPolicyRef: { name: default }
  controlPlane:
    replicas: 1
    datastore: { type: sqlite }
One mental model

Three resources, nothing hidden

tenantplane's entire API is three custom resources. Declare intent; the controller makes it real and tells you what it did.

Where it fits

Built for real platform work

Internal developer platforms

Hand every team a cluster-like environment without running a cluster per team.

CI & preview environments

High-density, ephemeral tenants that spin up fast and clean up predictably.

Regulated & audited estates

Answer β€œwhat runs where, and why” with explicit isolation and decision records.

Ready in minutes on a kind cluster

Install the CRDs, apply a sample tenant, and watch the control plane come up.

Read the quickstart β†’