As organizations scale their Kubernetes adoption, they face a fundamental question: how to efficiently share cluster resources across teams and applications while maintaining proper isolation, security, and cost efficiency? Traditional Kubernetes multi-tenancy approaches present significant trade-offs:
| Approach | Control Plane Isolation | Data Plane Isolation | Operational Cost | Tenant Flexibility |
|---|---|---|---|---|
| Cluster-as-a-Service | Full | Full | Very High | Full |
| Namespace-as-a-Service | None | Partial | Low | Limited |
| Control-Plane-as-a-Service | Full | Shared | Medium | High |
| KubeFlex (Enhanced CaaS) | Full | Full | Medium | High |
The Problem: Organizations need the isolation benefits of dedicated clusters without the operational overhead and cost. Namespace-based sharing is cost-effective but creates security and noisy-neighbor risks. Full cluster-per-tenant approaches provide excellent isolation but lead to cluster sprawl and wasted resources.
KubeFlex’s Solution: Provides each tenant with a dedicated Kubernetes control plane (API server + controllers) while offering optional dedicated data-plane nodes through integration with KubeVirt. This approach delivers strong isolation at both control and data plane levels while maintaining cost efficiency through shared infrastructure.
Learn more about multi-tenancy isolation approaches in this comprehensive analysis.
What KubeFlex Provides:
What KubeFlex Integrates With:
Integration Boundaries: KubeFlex focuses on control plane management and provides integration points rather than reimplementing existing solutions. For example, when using KubeVirt for data plane isolation, KubeFlex creates the control plane while KubeVirt handles VM provisioning and management.
k8s typeocm type control planes for edge cluster federationapiVersion: tenancy.kflex.kubestellar.org/v1alpha1
kind: ControlPlane
metadata:
name: custom-tenant
spec:
type: k8s
backend: dedicated # Use dedicated etcd instead of shared Postgres
tokenExpirationSeconds: 7200 # 2-hour token expiration
postCreateHooks:
- hookName: "setup-monitoring"
vars:
prometheus_namespace: "monitoring"
- hookName: "configure-networking"
vars:
network_policy: "strict"
Shared Postgres (Default):
Dedicated etcd:
External Database:
For scenarios requiring complete workload isolation:
apiVersion: tenancy.kflex.kubestellar.org/v1alpha1
kind: ControlPlane
metadata:
name: secure-tenant
spec:
type: k8s
postCreateHooks:
- hookName: "kubevirt-nodes"
vars:
node_count: "3"
vm_memory: "4Gi"
vm_cpu: "2"
This creates a control plane where workloads run in dedicated KubeVirt VMs, providing: