PLATFORM TEAM
Self-service for developers.
Guardrails for platform teams.
One cluster per team
PLATFORM TEAM
TENANT OWNERS
APP TEAMS
No custom developer portal or new CLI required.
$ kubectl create namespace
solar-production
namespace/solar-production
created
Cluster-wide commands return tenant-scoped results.
$ kubectl get namespaces
Kubernetes RBAC can allow list namespaces, but it can't limit the result to just one tenant.
list namespaces
One permission returns every namespace in the cluster.
Capsule Proxy sends the bearer token to Kubernetes, which validates it and returns the caller's user and groups.
Bearer ••••••
alice@corp.example
group: solar-owners
Capsule combines namespaces from owned Tenants and any explicit grants.
solar-owners
Tenant solar
solar-production
solar-staging
solar-development
+ explicit RoleBinding or ProxySettings grants
The proxy turns the allowed names into a Kubernetes label selector and forwards the narrowed request.
/api/v1/namespaces
/api/v1/namespaces
?labelSelector=kubernetes.io/metadata.name in
(solar-production, solar-staging, …)
The same proxy also narrows supported cluster-scoped resources to what each tenant is allowed to use.
Any tool that impersonates the caller routes through the proxy, so standard Kubernetes dashboards just work in a multi-tenant cluster.
The proxy is a standalone component. Capsule is optional.
Manage CPU, memory and storage limits
across tenant namespaces.
One limit, flexible use across namespaces
api.solar.example.com
api.solar.example.com
Restrict registries, pull policies, QoS, and priority for each tenant independently.
gcr.io/acme/nginx:1.27
Keep required labels consistent across namespaces and their resources.
OIDC PROVIDER
CAPSULE
Keep Secrets, ConfigMaps, and Policies in sync across all tenant namespaces with TenantResource.
Teleport
A visual workspace for tenants, owners, namespaces, quotas, replications, and proxy settings.
Kubernetes-nativeNo extra management layer or custom binaries.
GitOps-readyManage tenants like any other Kubernetes resource.
Adopt graduallyOnly selected namespaces need to join a tenant.
Open source, Kubernetes-native, GitOps-ready